Как мне распечатать тело узла? [закрыто]


11

Я изо всех сил пытаюсь понять, как напечатать тело узла на странице.

Я обычно использую что-то вроде этого, print $node->field_manufacturer[0]['view'];но я не уверен, как напечатать тело узла.

Как мне этого добиться?

Ответы:


3

Вы можете просмотреть всю структуру и содержимое узла, написав:

<pre><?php print_r($node); ?></pre>

А затем выбираете то, что считаете целесообразным.

Чтобы напечатать тело узла, вы должны использовать $node->content['body']['#value'].


Я попробовал это. Он поднимает всю информацию. В частности, настраиваемое поле, которое я создал. Но я не уверен, как именно напечатать тело (поле, которое всегда есть).
Сэм Уоррен

1
Я отвечал на мои собственные вопросы, но ограничения останавливали меня: # это сработало для меня: print $ node-> content ['body'] ['# value'];
Сэм Уоррен

16

Для Drupal 7 лучшим стилем является использование field_get_items. Например:

<?php
  $body = field_get_items('node',$node, 'body');
  print $body[0]['value'];
?>

14

Просто попробуйте это для Drupal 7

<?php print render($content['body'])?>

Привет и добро пожаловать. Ответы только на код не самые лучшие. Не могли бы вы объяснить, как именно этот фрагмент должен отвечать на вопросы ОП?
Молот

renderобычно используется внутри .tpl.phpшаблонов для форматирования элементов с использованием информации макета в массиве рендеринга, см., например, themery.com/dgd7/advanced-theming/render
Maine

10

Если $nodeэто объект узла, полученный, например node_load(), в Drupal 7, это структура $node->body.

снимок экрана

Язык, установленный для узла, который я использовал на скриншоте, - английский, а формат ввода - полный HTML. Насколько я вижу, содержимое тела всегда содержится в индексе "und", независимо от того, какой язык был установлен для узла.

В Drupal 6 $node->bodyесть строка.

Если вы реализовали hook_nodeapi('view')(Drupal 6) или hook_node_view()(Drupal 7), то содержимое тела найдено, соответственно, с помощью $node->content['body']['#value']и $node->content['body'][0]['#markup'].

снимок экрана



0

Обычно работает следующее:

<?php print $node->body['value']; ?>

Просто попробовал это. Никаких ошибок не появляется, но и никакого контента вообще, кроме «>». Есть идеи, что может быть причиной этого?
Сэм Уоррен

0

Возможно, немного поздно, но попробуйте следующее, если вы используете Drupal 6.

     <?php print $node->content['body']['#value'] ?>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.