在Drupal中的博客索引页面上更改标题

默认情况下,“博客”模块索引页上的标题标签(安装模块后可在/ blog找到)是“博客|网站名称”,在Drupal的后端不可编辑。我一直在与其他Drupal开发人员进行交谈,并在论坛上阅读有关更改博客索引页面标题的最佳方法。想法的范围从编辑或复制博客模块(这是不好的做法)到安装字符串覆盖以提供标题中字符串的快速翻译。

这些建议要么很差,要么就应该简单地替换为字符串而过度使用。我们认为有两种方法可以很好地实现并且易于实现。

1)第一个涉及创建一个page-blog.tpl.php模板文件,并添加一个str_replace()函数调用以替换页面标题中的blog一词。看起来像这样:

<title><?php print str_replace('Blogs | Sitename', 'Blog | Sitename', $head_title); ?></title>

我在此处输入了整个网站的名称,因为这样可以减少更改包含“ blog”一词的合法博客文章的标题。唯一的限制是,每当标题更改时,都需要对此进行更改。但是,这不应该太多,因此在大多数情况下是相当可靠的解决方案。将来,某些博客标题可能会出现一些误报,但这些误报应该很小。

2)第二种方法涉及在文件中使用页面变量$vars ['head_title'] template.php,该变量在到达模板之前先更改$head_title变量。这是通过使用hook_preprocess_page()钩子并检查arg的值以确保它是'blog'来完成的,只有在博客索引页面上才是这种情况。template.php在主题中的文件中创建以下函数,并将其重命名,使其与您自己的主题名称内联。

/**
 * Override or insert variables into the templates.
 *
 * @param array $vars The array of variables to pass tothe the theme template.
 */
function theme_preprocess_page(&$vars, $hook) {
    if (arg(0) == 'blog') {
        $vars['head_title'] = str_replace('Blogs', 'Blog', $vars['head_title']);
    }
}

如果我们正在查看博客主页,则arg函数只会返回“ blog”。因此,这里简单的查找和替换就足以更改标题,并且不会影响任何博客文章标题。也可能值得检查返回的数组的长度arg()是否为1,以完全确定这是索引页。

您在此处选择哪种方法取决于您自己的偏好,但是我认为第二种方法比第一种更健壮和可维护。第二种方法也不需要单独的博客页面模板,如果仅更改单个变量,这是没有意义的。

可能还有其他方式可以更改标题标签。如果您认识一个人并想与我们分享,请发表评论。

更新:这篇文章专门针对Drupal 6,因此可能不适用于其他版本的Drupal。