Как мне распечатать определенный узел на своей странице?


Я просто хотел бы распечатать текст определенного узла (без заголовка или других полей). Правильно ли я это делаю?

echo node_load(127)->body['und'][0]['value']

Кажется, я не могу найти ответ ни в одном из документов Drupal.

 2
Author: Simon East, 2011-07-28

2 answers

Просматривая с помощью модуля Devel структуру загруженного узла, я замечаю, что "тело" содержит следующие значения:

screenshot

Первый индекс массива - это идентификатор языка для языка, установленного для узла; он также может быть LANGUAGE_NONE (строка "und") для узлов, для которых язык установлен на "нейтральный". Этот индекс массива содержит массив со следующими индексами:

  • "значение": содержимое поля "тело"
  • "краткое описание": что установлено в качестве резюме (или тизера) для узла
  • "формат": формат ввода, связанный с полем "тело"

В узле, который я использовал в качестве примера, если вы попытаетесь получить доступ к $node->body['und'][0]['value'], вы получите доступ к неопределенному значению. Вы должны использовать $node->language, чтобы знать язык, установленный для узла; ваш код должен быть похож на следующий:

$node = node_load(127);
$body = $node->body[$node->language][0]['value'];

Что касается печати содержимого тела, поле "тело" содержит текст до применения входного фильтра; вы должны использовать код, аналогичный следующий, чтобы напечатать поле "тело":

$node = node_load(127);
$language = $node->language;
print check_markup($node->body[$language][0]['value'], $node->body[$language][0]['format'], $language);
 5
Author: kiamlaluno, 2014-02-27 19:43:28
$node = node_load(127);
print $node->body;

Пожалуйста, обратите внимание, что это выводит только содержимое области основного текста в качестве входных данных в форме узла.

Для вывода полностью тематического узла без заголовка и ссылок потребуется отдельный файл шаблона, его введение с помощью функции предварительной обработки и вызов

print theme('node', $node);
 4
Author: Jan Tomka, 2011-07-28 06:01:58