2011-01-07 81 views
5

我爲一所大學工作,在過去的一年裏,我們終於擺脫了數千頁靜態HTML網站,轉移到Drupal站點。這顯然需要大量的數據輸入。切換CMS的工具和提示CMS

如果您已經在使用CMS並切換到另一個更適合您的需求的應用,該怎麼辦?在如此巨大的變化中,你如何將數據錄入的最小化?是否有爲此構建的工具,或者應遵循的一些最佳實踐?

+0

因爲我感覺你想要django或類似的MVC的pattren標籤?或者你的意思是''適合''另一個準備好的CMS?因爲我想盡量減少我的答案。 – MBarsi 2011-01-10 19:42:12

+0

理想情況下,我正在尋找不是特定於一個CMS的最佳實踐和工具,但由於它看起來像Django是您選擇的CMS,請繼續並在切換到Django的上下文中回答。 – Jimmy 2011-01-10 20:02:01

回答

5
  • 期望有兩個預處理和後處理過程手動您的數據,無論發生什麼事。儘早接受您的數據可能處於比您想象的更糟的狀態:字段將被濫用;記錄到記錄的引用(外鍵)可能無法正確實施,或根本無法執行;內容可能需要除草,偶爾會出現問題或不正確。

  • 檢查您的數據庫編碼。較舊的數據庫不會採用Unicode編碼,如果必須導出數據轉儲並將其導入別處,則會變得脾氣暴躁。即便如此,假設您的數據中會出現一些古怪的不可打印字符:像Word這樣的程序似乎以某種方式將它們注入到任何地方,並且我已經看到...... codepoints ...您的人們不會相信。考慮在你甚至啓動這些字符(甚至清理數據庫轉儲)之前清理你的數據。決定是否垃圾或嘗試將它們轉換爲例如單詞「聰明」的標點符號。

  • 從隱含的數據結構創建顯式數據結構非常困難。如果您的傳入數據具有單獨的日期字段,則可以將其映射到日期字段;如果它將日期作爲HTML大塊的一部分,即使該日期位於具有id屬性的標記中,簡單腳本也不起作用。您可以使用BeautifulSoup的離線腳本或(如果您的HTML更好一點)更快的lxml來預處理您的數據集,提取這些隱含的字段並將它們保存爲隱式格式。考慮創建一箇中間數據庫,這些修訂版將發佈。

  • 遷移模塊非常出色,但要獲得非常好的數據保真度並玩出更多聰明的技巧,您可能需要了解其鉤子系統(Drupal關於特定命名方案的函數的術語)以及編寫模塊的基礎知識(模塊大致只是一個PHP文件,其中所有功能都以相同的文本,模塊文件的名稱開頭)。

  • 所有導入的內容都應該標記爲至少一個粗略的檢查。您可以通過導入status = 0(即未發佈)來執行此操作,然後使用Views模塊創建一個視圖來瀏覽內容並在其他選項卡中打開它以進行檢查。視圖批量操作允許您在視圖項旁邊放置一組複選框,因此您可以一次批准多個節點。

  • 預計運行並重新運行並重新運行導入,每次修復新事物。儘可能早地檢查十個或二十個項目。如果有任何問題,請檢查十或二十個。修復並重復導入。

  • 衡量單次進口運行可能需要多長時間。悲觀:當我們引入完整的數據集時,我們預計需要十個小時的導入會遇到指數級放緩;直到我們終於解決了一些緩慢的查詢,預計需要兩週時間。

  • 如果有疑問,或者如果您認爲上述技術方面比工作本身需要更多的時間,那麼只需聘請臨時工來完成數據。但是,您仍然需要儘可能早地進行體面的質量控制。 Drupal開發人員也可以聘請:試用您所在國家的相關IRC頻道,或在相關的groups.drupal.org小組中發佈註釋。他們比臨時工更昂貴,但他們通常會寫出更好的PHP ......!考慮聘請一個代理機構:這是一個無恥的插件,因爲我爲一個機構工作,但有時最好讓專家爲這些特定的工作。

  • 真的很好的進口總是很難,比你想象的更難。不要讓它讓你失望!

2
  1. 你會希望有從Django中現有的數據的訪問。這對遷移有很大幫助:http://docs.djangoproject.com/en/1.2/howto/legacy-databases/。有了正確的模型定義,您將擁有完整的django功能,包括管理員。事實上,我正在使用django作爲幾個傳統php項目的管理後端--django的管理員可以很容易地找到很多自定義的手寫管理腳本。

  2. 授權應保持不變。用戶應該能夠使用他們的憑據登錄,但是很難爲驗證數據編寫遷移腳本,因爲密碼散列模式可能不同,並且在不知道普通密碼的情況下無法在它們之間進行轉換。 Django提供了一種支持不同驗證來源的方法,因此您可以編寫Drupal驗證後端:http://docs.djangoproject.com/en/1.2/topics/auth/#writing-an-authentication-backend

  3. 有沒有必要做完整的重寫。如果某些部件工作正常,他們仍然可以由Drupal提供支持。新代碼可以用相同的用戶界面使用Django編寫。舊部件和新部件之間的路由可以通過Web服務器URL重寫來執行。 django和drupal部件都可以使用相同的數據庫。