【问题标题】:How do I use different drupal page templates?如何使用不同的 drupal 页面模板?
【发布时间】:2010-07-28 14:52:09
【问题描述】:

我有两个页面模板文件,一个只是“page.tpl.php”,另一个是页面子集。

我怎样才能将这个其他模板仅应用于某些页面而其余的只是默认为 page.tpl.php?

谢谢!我在 Drupal 6 上。

【问题讨论】:

    标签: drupal templates


    【解决方案1】:

    在 Drupal 中,模板遵循所谓的“建议”。

    对于页面,建议是使用 url-path 构建的。

    在 /foo/bar 页面上,您可以将 page.tpl.php 命名如下:

    • page.tpl.php
    • page-foo.tpl.php
    • page-foo-bar.tpl.php

    Drupal 将从最具体到最不具体进行查找,然后选择找到的第一个。 如果找到 page-foo-bar.tpl.php,它将使用它作为 foo/bar 如果没有找到它会继续查找。如果然后它找到 page-foo,它将使用它。

    page-foo.tpl.php 也将用于 /foo/beserk foo/pirate 和 foo/parrot,除非你创建一个 page-foo-parrot.tpl.php。

    首页没有路径(显然),但确实存在对首页的建议:page-front.tpl.php 将仅用于首页。

    【讨论】:

    • 如果您想为任何内容找到模板建议,请使用drupal.org/project/devel_themer,它添加了一种萤火虫控制台,允许您选择页面上的任何项目并显示大量主题信息。包括所有建议。
    • 不是双破折号,即page--foo,而不是page-foo吗??
    【解决方案2】:

    除了 Drupal 的默认建议系统外,您还可以在主题中实现 template_preprocess_page 并更改模板建议数组:

    function my_theme_preprocess_page(&$vars) {
      if ($vars['some_var'] == 'some_value') {
        $vars['template_files'][] = "page-special";
      }
    }
    

    Working with template suggestions

    您也可以强制模板文件而不是添加建议:

    function my_theme_preprocess_page(&$vars) {
      if ($vars['some_var'] == 'some_value') {
        $vars['template_file'] = "page-special";
      }
    }
    

    【讨论】:

    • 答案在 drupal 7 中不起作用,使用 $vars['theme_hook_suggestions'][] = 'page__special'; 有效,即它加载了我的主题目录中的 page--special.tpl.php
    【解决方案3】:

    您可能还想查看Sections 模块,它允许为一组页面选择单独的主题。页面选择与块显示配置页面相同——显示在除列出页面之外的每个页面上,仅显示在列出的页面上,如果以下 PHP 代码返回 TRUE 则显示。

    我在我创建的一个网站上使用它,效果很好。

    【讨论】:

    • 虽然如果您需要根据页面更改 page.tpl.php,那么您需要使用其他建议。对不起,如果我不帮忙。
    猜你喜欢
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多