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


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.