【发布时间】:2010-06-27 08:56:28
【问题描述】:
在渲染成html之前我需要修改节点内容数组。 出于这个原因,我不能在我的节点模板中使用 $content 变量。我正在 template.php 文件中寻找它,但我找不到它。
谢谢
【问题讨论】:
-
ps。我也尝试在 template.php 文件中打印 $vars['content'] ,但它已经呈现为 html,而不是结构化...
在渲染成html之前我需要修改节点内容数组。 出于这个原因,我不能在我的节点模板中使用 $content 变量。我正在 template.php 文件中寻找它,但我找不到它。
谢谢
【问题讨论】:
AFAIK,您无法从主题内访问未渲染的节点内容数组,因为主题处理发生在处理周期的后期(即内容数组将按照您的观察进行渲染)。
访问和修改节点内容数组在呈现之前的标准方法是在自定义模块中实现hook_nodeapi(),以响应“查看”操作。这会在内容数组组装完成后,但在渲染之前调用,允许您随意调整它。
请注意,其他模块也可能这样做 - 如果是这种情况并且您想要调整其他模块提供的值,则模块的调用顺序变得相关,您可能需要调整模块权重以确保它在其他人之后被调用。
【讨论】:
yourModuleName_nodeapi(&$node, ...)。
生成节点可用变量的原始函数是:http://api.drupal.org/api/function/template_preprocess_node/6
您可以通过在 template.php 中实现自己的节点预处理函数来修改模板变量,该函数将在原始函数之后执行,因此允许您添加自己的变量:
function phptemplate_preprocess_node(&$vars, $hook) {
// Here you can add your custom variable...
$vars['myContent'] = "something";
}
【讨论】: