我是drupal的新手并通过文档阅读,但希望得到一些解释。
我有一个名为page的页面 - type-home-page.tpl.php。 此页面的一部分打印渲染($ page ['content']))。我想从页面中删除作为页面内容的一部分呈现的内容,但不知道它来自何处以及在何处/如何查看。
谢谢!
答案 0 :(得分:0)
假设你在谈论Drupal-7
$page['content']
包含一个字符串,它是注入主题内容区域的渲染版本。
默认情况下,此区域中唯一的块是Drupal核心生成的“主页面内容”块。很多东西都可以生成这些内容,但它总是通过菜单API。例如,如果您正在查看节点,则使用的URL为:node/12
。节点模块为node/%node
声明了一个菜单项,该菜单项包含一个回调函数,该函数将呈现模块想要呈现的内容。然后,该模块可以使用不同的策略将其内容从简单的功能呈现为复杂的模板重叠。
改变框中内容的关键,对不起,$page['content']
中的内容,是知道渲染的内容并了解它是如何渲染的。
如果它是节点,首先您要查看是否可以通过内容类型的显示设置实现目标。 admin/structure/types/manage/page/display
:对于所有实体(用户,评论,分类术语等)都是如此。因为这是这些实体的模块在他们尝试渲染您的内容时将首先放在一起的东西。
如果这还不足以实现您的目标,您可以查看呈现路径的模块,以查看它是否没有.tpl.php
。您将能够在主题中重复使用它。您需要在主题中复制/粘贴文件并进行编辑。
如果模块没有要覆盖的tpl
文件,请尝试模板建议:here's a list from Drupal.org
例如:node--type.tpl.php
如果所有这些都不能满足您的需求,您将不得不深入研究preprocess functions;这些函数允许您修改传递给.tpl.php
文件的变量中的内容。这有点高级,我建议你阅读this previous stackoverflow question/answer
答案 1 :(得分:0)
简单地说,不要使用打印所有内容的$ page ['content'],而是放置自定义模板代码,并在需要的地方打印单独的字段值,如:
<?php print render($content['your_field_name']); ?>
https://drupal.stackexchange.com/questions/30063/how-to-print-fields-in-node-tpl-php
如果你想做简单的样式,比如排除一些字段,你可以使用内容类型显示选项,如mgadrat解释,但如果你想使用一些复杂的样式,完全自定义的HTML,这个解决方案更容易。