在page.tpl.php drupal 7中显示页面视图

时间:2013-01-09 22:53:19

标签: drupal drupal-7 drupal-theming

我有一个名为page的文件 - advertsindex.tpl.php ..现在我要做的是在page.tpl.php的内容区域内显示该页面。

页面 - advertsindex.tpl.php包含需要在page.tpl的内容区域中呈现的HTML,但当我导航到my_drupal_site / advertsindex时它只显示页面的html - advertsindex,不是page.tpl.php文件和内容区域中的页面 - advertsindex ..

我该怎么做?还是有不同的方法来实现我的目标?

2 个答案:

答案 0 :(得分:1)

对于网址page--<identifier>.tpl.php,任何page.tpl.php都会使用{strong> /identifier。这是设计和该系统的整个目的。这也可以扩展到更深的路径:page--foo-bar-baz.tpl.php /foo/bar/baz

如果您希望某些内容显示在/identifier上,您有两种选择:有条件地包含内容或复制内容。选择什么取决于你的情况。

有条件地包括:在page.tpl.php内:

<div class="footer">
  <?php if (arg(0) == "advertsindex"): ?>
    <?php print theme("advertsindex_disclaimer"); ?>
  <?php endif; ?>
</div>

覆盖:引入page--advertsindex.tpl.php

<div id="content">
  <?php print $content ?>
</div>

何时选择:

在以下情况下仅使用条件包含或条件渲染:

  • 要包含或排除的内容很小并且共享。像[[20多行首页HTML] [普通HTML]这样的模式非常糟糕。
  • 要包含的内容需要引入各种奇特的新变量。模式非常糟糕。 Drupals主题系统是push(主题从模块获取变量)并且从不拉(主题请求模块的参数)。

在所有其他情况下,您将使用覆盖。是的,这将包含大量重复,但这是设计并被接受为Drupal中的默认实践。为避免在20多个文件中修改某些HTML,请尽可能“分割”或“复制”它们。

根据经验,条件应该只是几行,并且永远不需要父级中不可用的变量。

答案 1 :(得分:0)

如果 advertsindex 是您的内容类型之一,那么您必须创建node - advertsindex.tpl.php文件而不是page - advertsindex.tpl.php。或者如果您不想在page.tpl.php页面中显示某些内容,那么最好将page.tpl.php的所有代码复制到YOUR-Custom_page.tpl.php中,并将您的代码放在YOUR-的内容部分中。 Custom_page.tpl.php。

我认为这有帮助。