Как мне распечатать определенный узел на своей странице?
Я просто хотел бы распечатать текст определенного узла (без заголовка или других полей). Правильно ли я это делаю?
echo node_load(127)->body['und'][0]['value']
Кажется, я не могу найти ответ ни в одном из документов Drupal.
2 answers
Просматривая с помощью модуля Devel структуру загруженного узла, я замечаю, что "тело" содержит следующие значения:
Первый индекс массива - это идентификатор языка для языка, установленного для узла; он также может быть 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);
$node = node_load(127);
print $node->body;
Пожалуйста, обратите внимание, что это выводит только содержимое области основного текста в качестве входных данных в форме узла.
Для вывода полностью тематического узла без заголовка и ссылок потребуется отдельный файл шаблона, его введение с помощью функции предварительной обработки и вызов
print theme('node', $node);