Drupal 6 中的主题化节点主体

发布于 2024-10-21 09:44:38 字数 226 浏览 2 评论 0原文

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

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

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

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

I'm trying to make Drupal output the body of a particular content type in div tag with certain class name.

First, I tried to override node.tpl.php, but I discovered $content variable here already contains body along with additional custom cck fields. And what I'm trying to do is precisely to separate body from another fields.

After that I looked at content-field.tpl.php and found it's executed only for custom cck fields. So doesn't suit me too.

So.. how to theme a node body field?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

独行侠 2024-10-28 09:44:38

首先调用

print_r($node);

This is what you node object contains - 你可以直接使用它的任何成员,而不仅仅是打印内容。分析这个,你就会知道到底要调用什么;)

在正文的情况下,可以通过以下方式访问无样式内容:

$node->content['body']['#value']

对于其他字段,你可以:(

$node->field_name[0]['view']

其中 [0] 是数组中项目的索引 - 有用当您可以上传许多图片时使用 ImageField)。

例如,这是我的 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>

Start by calling

print_r($node);

This is what you node object contains - and you can use any of its members directly instead of just printing the content. Analyse this and you'll know what to call exactly ;)

In case of the body, the unstyled content can be accessed with:

$node->content['body']['#value']

For other fields, you do:

$node->field_name[0]['view']

(where [0] is the index of the item in the array - useful for ImageField when you can upload many pictures).

For example, here's the content of my node-event.tpl.php, displaying details about an event:

<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>
离线来电— 2024-10-28 09:44:38

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

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

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

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

print $field_FIELDNAME_rendered;

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

If you need to be very flexible, the best way for me is to go to this page :

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

And set all your additional fields to "hidden".

Then, the $content variable will contain only the body field.
The drawback is that you need to display all the additional fields one by one. CCK provide an easy way to do that by providing a fully rendered variable for each field

print $field_FIELDNAME_rendered;

Using that, you can really customize easily the output for a content type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文