在Drupal 7中将字段内容注入html.tpl.php

时间:2011-09-08 20:56:42

标签: php drupal drupal-7 drupal-theming

我正在尝试制作一种内容类型,可以根据您所在的页面重复使用不同样式的jQuery库。

所以我创建了一个名为field_CSS的字段,我放置了CSS。但是出于性能原因(以及为了清理代码),我想把它放在HEAD部分。

head部分中的内容在html.php.tpl-filde中呈现,该字段位于特定节点的内容类型中。

我尝试了<?php print render($content['field_CSS']) ?> <?php print render($page['field_CSS']) ?> <?php print $node->field_CSS[0]['view']; ?>和其他很多变体。任何知道写什么的人都会把它显示在html.tpl.php文件中?

该字段仅包含纯CSS,现在打印为内联代码。

编辑:克莱夫的帖子完美无瑕。只是不要忘记修复字段主题,这样你就不会在css-section中得到div。

1 个答案:

答案 0 :(得分:3)

html.tpl.php中通常不提供该节点,因此您需要在预处理功能中手动获取字段内容。在主题的模板文件中添加这样的内容:

function MYTHEME_preprocess_html(&$vars) {
  $node = menu_get_object();

  if ($node && isset($node->nid)) {
    $node = node_load($node->nid);

    node_build_content($node);

    $vars['extra_css'] = render($node->content['field_CSS']);
  } 
}

然后你将在html.tpl.php中拥有变量$extra_css,它将包含你的渲染字段。在实现预处理功能后,您需要刷新缓存,并将MYTHEME替换为您的主题名称。

希望有所帮助