2016-08-08 154 views
2

我是新来的dr​​upal和通过文档阅读,但希望得到一些东西的解释。Drupal页面内容

我有一个页面 - page-type-home-page.tpl.php。 此页面的一部分打印渲染($ page ['content']))。我想从页面中删除作为页面内容的一部分呈现的内容,但不明白它来自哪里以及在哪里/如何查看。

谢谢!

+1

请指出它是Drupal 7还是Drupal 6(你把这两个标签放在那里) – mgadrat

+0

一个很好的函数来查看模板中可用的变量是'get_defined_vars()'函数。如果您启用了devel模块,则可以在模板中调用'dpm(get_defined_vars);'查看您必须使用的变量 – 2pha

回答

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

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这个解决方案更容易。

相关问题