2

我试图让 Drupal 在具有特定类名的 div 标签中输出特定内容类型的主体。

首先,我尝试覆盖 node.tpl.php,但我发现这里的 $content 变量已经包含正文以及其他自定义 cck 字段。而我正在尝试做的正是将身体与其他领域分开。

之后,我查看了 content-field.tpl.php,发现它仅针对自定义 cck 字段执行。所以也不适合我。

那么..如何主题化节点主体字段?

4

3 回答 3

2

从调用开始

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>
于 2011-03-09T10:34:10.577 回答
1

看看这个:http ://capellic.com/blog/theming-the-node-body-field

于 2011-03-09T10:29:48.713 回答
0

如果您需要非常灵活,对我来说最好的方法是转到此页面:

admin/content/node-type/[ContentType]/display/basic

并将所有附加字段设置为“隐藏”。

然后,该$content变量将仅包含 body 字段。缺点是您需要一一显示所有附加字段。CCK 通过为每个字段提供完全呈现的变量来提供一种简单的方法

print $field_FIELDNAME_rendered;

使用它,您可以真正轻松地自定义内容类型的输出。

于 2011-03-09T10:27:37.983 回答