是$ node在page.tpl.php中始终可用


12

我周期性地收到我的一个模板文件中未定义$ node的错误。我有一个简单的if条件来检查正在显示的节点类型。我假设$ node总是可用的,还是我错了?


可能希望将其标记为已回答,以便其他人可以使用此问题:)
Bart

Answers:


12

$ node不一定是从page.tpl.php Drupal 7 API定义的:

$ node:节点对象,如果有与页面关联的自动加载的节点,并且节点ID是页面路径中的第二个参数(例如,node / 12345和node / 12345 / revisions,但不包括comment / reply / 12345)。


8

默认情况下,仅在节点页面上定义$ node变量。对于首页(提要),查看页面,评论等,它们不是。

如果要在不是节点的页面上定义$ node变量,则必须在主题template.php文件中编辑/创建MYTHEME_preprocess_page(&$ variables)函数。

为避免错误,请在模板文件中将$ node变量包装在

if (isset($node)) {
  // do something with $node
}

或将其完全删除


$ node可以是page.tpl.php上的已定义变量
Bart

1
默认情况下是,如果它是NODE。如果不是,则未定义。弄清事实,不要贬低有效答案。
iStryker

语句“仅在节点页面上定义$ node变量。” 无效。
巴特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.