【问题标题】:How to Unset title ('Search results') on Search results page?如何在搜索结果页面上取消设置标题(“搜索结果”)?
【发布时间】:2016-06-17 11:31:42
【问题描述】:

如何在搜索结果页面上取消设置标题(“搜索结果”)?

我仍然很笨,我正在尝试这个:

function mymodulename_preprocess_search_result(&$variables) 

{
  $variables['title'] = NULL;
}

【问题讨论】:

    标签: drupal drupal-7 drupal-theming


    【解决方案1】:

    您不能通过预处理来更改它,因为该句子只是模板中的打印字符串而不是变量。所以你必须改变模板。

    在您的主题的模板文件夹中,从您的站点/modules/search/search-results.tpl.php 的 /root 目录复制模板。

    并根据需要编辑此文件。

    主题模板文件将被自动调用,而不是核心中的那个。

    【讨论】:

    • 当您想为您的主题调用不同的模板文件时,您需要始终清除缓存。这样就不行了。
    【解决方案2】:

    您只需要更改输出渲染。简单的方法是更改​​搜索核心模块模板文件。

    继续:

    \modules\search\search-results.tpl.php
    

    在该文件中,只需删除输出字符串或将其替换为空字符串。在代码中查找下一行:

      <h2><?php print t('Search results');?></h2>
    

    您可以在那里删除整行,也可以将其更改为:

      <h2><?php print t('');?></h2>
    

    注意: 当您更改核心模块时,您应该注意不要用新 Drupal 核心中的版本覆盖它(以防您想升级您的 Drupal 核心)。

    如果您不确定将来是否会替换此文件(在可能的模块甚至整个 Drupal 核心更新期间),您可以考虑将此文件复制到您的主题模板文件夹中。将该文件放入主题模板文件夹后,您只需清除缓存,该文件将被调用,而不是核心模块中的一个。

    @Laurent 感谢您的更新。

    希望这会有所帮助。

    【讨论】:

    • 这不是一个好主意,您正在修改核心文件以执行可以通过许多其他方式完成的操作(例如使用自定义模板)。下次您因为安全问题决定升级核心时,如果您进行了许多此类更改,那么重新应用它们将浪费大量时间。
    • 这是一个好点。我会为此添加注释。但实际上,他问了这么一个微不足道的问题,您希望他知道进行核心升级......此外,当您出于安全原因升级核心时,您首先阅读日志以了解发生了什么变化。如果您更改的核心模块被修改,您肯定会知道在升级期间需要备份什么文件......在核心更新期间覆盖所有核心文件也是非常糟糕的做法,因为您需要先对其进行测试。如果有很多,但没关系...点,如果您知道将来可能会覆盖它,那么更改核心模块不是一个好习惯。
    猜你喜欢
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多