是否安全將我模塊Drupal的 - 移動模塊文件夾
- 從網站/所有/模塊/
- 要網站/所有/模塊/的contrib和網站/所有/模塊/定製
在生產現場?
也就是說,Drupal會自動檢測模塊是否仍然存在,但在新路徑中?
是否安全將我模塊Drupal的 - 移動模塊文件夾
在生產現場?
也就是說,Drupal會自動檢測模塊是否仍然存在,但在新路徑中?
如果您移動了一個模塊,Drupal將會看到舊模塊已損壞,並且存在一個新模塊。它不會認爲兩者是相同的東西 - 只是移動。
Drupal將文件位置存儲在系統表中,當您清除模塊緩存時,信息將被重建,因此如果您移動了內容並在事後清除緩存,則應該沒問題。
好的電話,謝謝! – davidosomething 2010-04-16 21:00:18
模塊的/ contrib和/ custom子文件夾很好。對於D7,特別是如果您使用實體,您應該禁用模塊,移動它們然後重新啓用。有用。
替代方案,將模塊移到子文件夾並清除緩存,有時不起作用並可能生成WSOD。
最多D6的Drupal版本在系統表中保留了模塊位置,但從D7開始,有多處記錄路徑的地方(例如註冊表和registry_file表),所以只需移動文件夾並清除緩存就不會這樣做,很可能會導致重大問題。
的一系列步驟,你可以嘗試:
運行以下查詢:
更新系統 SET文件名= REPLACE(文件名,'sites/all/modules','sites/all/modules/contrib'); SET文件名= REPLACE(文件名,'sites/all/modules','sites/all/modules/contrib');
UPDATE registry_file SET文件名= REPLACE(文件名, '位點/所有/模塊', '位點/所有/模塊/的contrib')
移動文件夾
drush cc all
當(5)給出錯誤(上下文給出錯誤)時,嘗試截斷所有緩存%表 – filsterjisah 2012-05-03 12:44:04
如果您事後清除緩存(drush cc all),則可以安全地移動大部分模塊。
但是,一些模塊,特別是ctools,在系統表或緩存以外的地方存儲文件路徑信息。您可能不得不將這些模塊留在原來的位置,但仍然可以移動其他所有模塊。
irakli的答案對我來說效果不錯,但我想爲查詢添加一些額外的複雜性,以防其他人發現它們有用。
第1步 - 更新所有 '自定義' 模塊,如果你足夠幸運,有他們共享命名空間:
UPDATE system SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/custom') WHERE name LIKE 'custom_namespace_%';
UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/custom') WHERE name LIKE 'custom_namespace_%';
UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/custom') WHERE filename LIKE '%custom_namespace_%';
第2步 - 更新所有的 '開發' 模塊:
UPDATE system SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/dev') WHERE name LIKE 'devel%';
UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/dev') WHERE name LIKE 'devel%';
UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/dev') WHERE filename LIKE '%devel%';
第3步 - 更新所有'contrib'模塊:
UPDATE system SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib')
然後將所有模塊放入適當的sites/all/modules/contrib|custom|dev
文件夾,清除你的緩存,你很好走。
如果你是在D7,那麼這個Drupal的文檔頁面周圍移動模塊先走,最好的辦法 - How to move modules and themes
使用http://drupal.org/project/registry_rebuild 「註冊表重建也將重建的系統表,以獲得在該模塊正確的地方,所以你可以引導。「
其實你只需要做系統表的更新,然後執行以下操作:
drush RR
,也許..
drush cc的所有
drush RR
是 - 這是對此問題的2015答案 – ErichBSchulz 2015-01-01 02:20:15
不要忘記在更改模塊文件夾後使用此模塊:
謝謝,如果有一個人可以確認這一點,將關閉 – davidosomething 2010-04-16 16:59:54
如果您禁用該模塊,將其移動,然後重新啓用它在新的位置,你應該罰款。它可能會保持其設置。如果你簡單地將它從Drupal下拉出來,它不會那樣。 – McAden 2010-04-16 17:04:19
步驟1:移動模塊。第2步:清除緩存。如果一個模塊在這一點上保持中斷,那麼就有一個錯誤。 – Grayside 2010-04-17 07:08:01