我试图让 Drupal 在具有特定类名的 div 标签中输出特定内容类型的主体。
首先,我尝试覆盖 node.tpl.php,但我发现这里的 $content 变量已经包含正文以及其他自定义 cck 字段。而我正在尝试做的正是将身体与其他领域分开。
之后,我查看了 content-field.tpl.php,发现它仅针对自定义 cck 字段执行。所以也不适合我。
那么..如何主题化节点主体字段?
我试图让 Drupal 在具有特定类名的 div 标签中输出特定内容类型的主体。
首先,我尝试覆盖 node.tpl.php,但我发现这里的 $content 变量已经包含正文以及其他自定义 cck 字段。而我正在尝试做的正是将身体与其他领域分开。
之后,我查看了 content-field.tpl.php,发现它仅针对自定义 cck 字段执行。所以也不适合我。
那么..如何主题化节点主体字段?
从调用开始
print_r($node);
这是您的节点对象包含的内容 - 您可以直接使用它的任何成员,而不仅仅是打印内容。分析一下,您就会知道该准确地调用什么;)
在正文的情况下,可以通过以下方式访问无样式的内容:
$node->content['body']['#value']
对于其他领域,您可以:
$node->field_name[0]['view']
(其中 [0] 是数组中项目的索引 - 当您可以上传许多图片时,这对 ImageField 很有用)。
例如,这是 my 的内容node-event.tpl.php
,显示有关事件的详细信息:
<div class="event clear-block">
<?php
$class = (convert_datetime($node->field_event_date[0]['value']) < time()) ? 'past' : 'future';
echo "<h3 class='header'>When?</h3><p class='$class'>".$node->field_event_date[0]['view']."</p>";
echo "<h3 class='header'>Where?</h3><p>".$node->field_event_place[0]['view']."</p>";
echo "<h3 class='header'>What?</h3>".$node->content['body']['#value'];
echo "<h3 class='header'>How much?</h3><p>".$node->field_event_price[0]['view']."</p>";
echo "<h3 class='header'>How to participate?</h3>".$node->field_event_subscribe[0]['view'];
?>
</div>
如果您需要非常灵活,对我来说最好的方法是转到此页面:
admin/content/node-type/[ContentType]/display/basic
并将所有附加字段设置为“隐藏”。
然后,该$content
变量将仅包含 body 字段。缺点是您需要一一显示所有附加字段。CCK 通过为每个字段提供完全呈现的变量来提供一种简单的方法
print $field_FIELDNAME_rendered;
使用它,您可以真正轻松地自定义内容类型的输出。