是否安全将我模块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