Тело тематического узла в Друпал 6 - PullRequest
2 голосов
/ 09 марта 2011

Я пытаюсь заставить Drupal выводить тело определенного типа контента в теге div с определенным именем класса.

Сначала я попытался переопределить node.tpl.php, но обнаружил переменную $ contentздесь уже содержится тело вместе с дополнительными настраиваемыми полями cck.И я пытаюсь точно отделить тело от других полей.

После этого я посмотрел на content-field.tpl.php и обнаружил, что он выполняется только для пользовательских полей cck.Так что меня это тоже не устраивает.

Итак ... как оформить тему поля тела узла?

Ответы [ 3 ]

2 голосов
/ 09 марта 2011

Начните с вызова

print_r($node);

Это то, что содержится в узле объекта - и вы можете использовать любой из его членов напрямую, а не просто распечатывать содержимое.Проанализируйте это, и вы узнаете, что именно вызывать;)

В случае основного текста доступ к нестилированному содержимому можно получить с помощью:

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

Для других полей вы делаете:1009 *

$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>
1 голос
/ 09 марта 2011
0 голосов
/ 09 марта 2011

Если вам нужно быть очень гибким, лучший способ для меня - перейти на эту страницу:

администратор / содержания / узел типа / [ТипСодержимый] / дисплей / базовый

И установите все дополнительные поля на «скрытые».

Тогда переменная $content будет содержать только поле тела. Недостатком является то, что вам нужно отображать все дополнительные поля по одному. CCK предоставляет простой способ сделать это, предоставляя полностью отображаемую переменную для каждого поля

print $field_FIELDNAME_rendered;

Используя это, вы можете легко настроить вывод для типа контента.

...