【问题标题】:Enable all the themes during installation of module drupal 7在安装模块 drupal 7 期间启用所有主题
【发布时间】:2011-11-17 11:00:11
【问题描述】:

在 drupal 7 中安装模块期间如何更新表?我使用了以下代码。但它不起作用

function mymodule_install() {
drupal_install_schema('template_config');
db_update('system')
 ->fields(array(   
'status' => 1,
))
->condtion('type','theme','=')
->execute();
}

这段代码有什么问题。我想在安装 mymodule 时启用所有主题。

【问题讨论】:

    标签: php drupal drupal-7 drupal-modules drupal-theming


    【解决方案1】:

    您不应该在 Drupal 7 中从 hook_install() 调用 drupal_install_schema(),当模块安装时,架构将自动安装。除此之外,您的代码肯定会起作用,但我认为您需要立即清除缓存。你的安装函数应该是这样的:

    function mymodule_install() {
      db_update('system')
        ->fields(array('status' => 1))
        ->condtion('type','theme','=')
        ->execute();
    
      cache_clear_all();
    }
    

    还要确保您实际上是在卸载并重新安装模块,而不仅仅是禁用它然后重新启用它(当您禁用模块时,单击模块页面上的“卸载”选项卡)。

    【讨论】:

    • 我尝试了这段代码并卸载并重新安装了模块。但变化没有影响。
    • 试试db_query("UPDATE {system} SET status = 1 WHERE type = 'theme'");...那绝对可以。尝试在您的安装函数中添加drupal_set_message('test'); 以确保正在调用挂钩,然后在完成重新安装后检查数据库表。如果它没有更新status 列,则说明您安装的 Drupal 有问题
    • 当我只打印一个 hii im drupal_install() 时,它会给出 hii 和错误消息“致命错误:在 momodule.install 中调用未定义的方法 UpdateQuery::condtion()”。但是 db_query("UPDATE {system} SET status = 1 WHERE type = 'theme'");这对我来说很好
    • 啊,你拼错了condition!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    相关资源
    最近更新 更多