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

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'];
?>
Druvision
источник
14

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

<?php print render($content['body'])?>
nxplace
источник
Привет и добро пожаловать. Ответы только на код не самые лучшие. Не могли бы вы объяснить, как именно этот фрагмент должен отвечать на вопросы ОП?
Молот
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'].

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

киамлалуно
источник
3

друпал 7:

 <?php print $node->body['und'][0]['value'] ?>
Matoeil
источник
LANGUAGE_NONE вместо und
GwenM
0

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

<?php print $node->body['value']; ?>
Sam152
источник
Просто попробовал это. Никаких ошибок не появляется, но и никакого контента вообще, кроме «>». Есть идеи, что может быть причиной этого?
Сэм Уоррен
0

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

     <?php print $node->content['body']['#value'] ?>
Марк Конрой
источник