【问题标题】:Switching themes in Drupal without the web interface在没有 Web 界面的情况下在 Drupal 中切换主题
【发布时间】:2010-10-27 13:09:16
【问题描述】:

我正在学习php和创建主题。

不幸的是,当我在编辑一个我目前在 drupal 中使用的主题时,我在主题中犯了一个错误,以至于没有任何东西出现,即使我要点击 drupal/index.php。我想将损坏的 drupal 主题更改为可用的主题,但我无法这样做,因为我什至无法查看管理部分。

【问题讨论】:

    标签: php drupal content-management-system themes


    【解决方案1】:

    另请参阅以下堆栈溢出问题。 它与他们有关

    现在是解决方案: 删除不良主题的文件并清除缓存。清除缓存后就可以重新登录了。

    主要的难点是你必须在不登录的情况下清除缓存。

    尝试其中一种清除缓存的方法 Clearing Drupal's cache

    如果没有,那就试试这个:

    如果你有 drush,输入的命令是

    drush vset theme_default garland
    

    在命令行或通过管理界面(例如 PHPMyAdmin)输入以下查询

    UPDATE system SET status=1 WHERE name = 'garland';
    

    然后:

    UPDATE variable SET value='s:7:"garland"' WHERE name = 'theme_default';
    TRUNCATE cache;
    TRUNCATE cache_bootstrap;
    TRUNCATE cache_block;
    

    请注意,'s:7' 指的是以下字符串的长度。根据需要进行修改。这是数据库手术,很棘手。 要么 如果您使用的是每个用户的主题,而您只是以管理员身份将其搞砸了,请尝试

    UPDATE users SET theme='garland' WHERE uid = '1';
    

    要小心,因为其中任何一条错误都会把事情搞得一团糟。

    干杯!

    穆达萨阿里

    【讨论】:

      【解决方案2】:

      您还可以通过包含以下代码在您的主题中插入新的登录表单:

       `<?php 
          if(!user_is_logged_in() ){
              print drupal_render(drupal_get_form('user_login'));
          }else{
              print "You are already logged in!";
         }?>` 
      

      在您损坏的主题的page.tpl.php 文件中的任何位置,然后使用您的admin credentials 注册;)

      【讨论】:

        【解决方案3】:

        Drupal.org 上的 How To reset your theme via the database 页面提供了直接从 SQL 提示符更改主题的说明。

        目前尚不清楚这是否适用于最新版本的 Drupal,因此在尝试此操作之前备份您的数据库

        【讨论】:

        • drush vset theme_default garland 是该页面上最简单的方法。
        【解决方案4】:

        值得一提的是,如果您使用“Sections”模块将不同的主题应用于网站的不同部分,则 Drupal 网站上给出的说明不一定有效——您可能会发现移动问题不碍事的主题目录是正确查看管理界面的唯一方法。

        【讨论】:

          【解决方案5】:

          或者,如果您使用的是 Drupal 6,删除/移动损坏的主题文件夹将使 Drupal 将主题更改为默认主题 (Garland)。

          【讨论】:

            【解决方案6】:

            更改前端主题的最简单方法是在您的站点/默认/settings.php 中设置它:

            $conf['theme_default'] = 'minelli';
            

            【讨论】:

              【解决方案7】:

              在对您当前的问题进行排序方面,这是一种应该可行的简单方法...假设您当前的主题名为“custom_theme”。

              • 转到您的主题目录(可能是“sites/default/themes”)
              • 备份您的开发主题(即将其移至其他位置,如果您使用的是 Linux 命令行,请执行“mv custom_theme custom_theme.bak”之类的操作)
              • 将 garland 主题复制到此处并将其命名为与您损坏的主题相同的名称(如果使用 LInux 命令行,类似这样的内容应该可以工作“cp -a ../../../themes/garland ./custom_theme
              • 立即尝试查看您的网站。它现在应该使用 garland 而不是您损坏的主题。

              正如其他人之前所说,强烈建议您为管理员使用与普通用户不同的主题(以防您破坏内容)。选择一个安全的管理主题(如 garland),然后如果您正在使用主题,您几乎总是可以进入管理界面。

              【讨论】:

                【解决方案8】:

                也许并行使用两个主题会有所帮助。

                为“用户前端”设置一个 - 您正在 /admin/build/themes 开发的另一个,另一个标准,例如您不会更改的 garland,作为“管理后端”:/admin/settings/admin

                如果您碰巧破坏了您正在开发的主题,您只需转到管理区域 (/admin),它就会切换回 garland。

                【讨论】:

                  【解决方案9】:

                  据我所知,主题设置以及每个用户都存储在数据库中。摆脱主题的最快方法可能是将其从主题路径中删除。

                  只需将它移动到您的桌面上,Drupal 就应该能够检测到您请求的主题丢失了,并将您指向默认主题。

                  更新:在我的 Drupal 5 安装上试过这个,结果“干净”。我建议将一个可用的 Drupal 主题复制到您的主题目录中(先复制一份)。

                  【讨论】:

                  • 我按照你说的做了,我得到以下drupal错误:rwtsang_2是主题的名称。警告:include(./themes/rwtsang_2/@rwtsang_2/page.tpl.php) [function.include]:无法打开流:C:\xampp\htdocs\drupal\includes\theme.inc 中没有这样的文件或目录在第 1011 行。警告:include() [function.include]: 无法打开 './themes/rwtsang_2/@rwtsang_2/page.tpl.php' 以包含 (include_path='.;C:\xampp\php\pear\ ') 在 C:\xampp\htdocs\drupal\includes\theme.inc 的第 1011 行。
                  • 很奇怪,我发誓我在模板实验中自己做过这个。您确定主题从 Drupal 安装的所有部分都消失了吗?这包括 /sites/ 和 /themes。其他选项是用默认的 drupal 主题的副本替换目录,或者进入 SQL 数据库并从那里更改主题设置。
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-12-08
                  • 2011-03-06
                  • 2020-09-28
                  • 2017-11-27
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多