Вы здесь

Как вывести вместе анонс материала и его содержимое?

0

Приветствую!
Хочу выводить анонс ноды красиво над самой нодой. Для этого в шаблоне рендерю анонс таким образом:

if(isset($node)) { 
  print render(field_view_field('node', $node, 'body', array(
    'label'=>'hidden', 
    'type' => 'text_summary_or_trimmed',
  )));
} 

Этот код, как и нужно, выводит анонс ноды в нужном мне месте шаблона.

Вопрос: Как переделать этот код так, чтобы поле выводилось только в том случае, если поле краткого содержимого заполнено руками? То есть если анонс генериться автоматически на основе начала содержания BODY, то не выводить поле анонса.

Насколько понимаю, вопрос в параметре type. Указывал там просто 'text_summary' - начинало игнорировать вручную введённый текст краткого содержания, а начинало выводить обрезанную часть начала основного поля.

Версия Drupal: 
7.x
Категория: 
Field APINode API
Вопрос задан 20.12.2015 - 23:19
Аватар пользователя Quty
Quty
34

Ответы

1
// LANGUAGE_NONE - Проверь язык $node через Devel, 
// или используй Entity wrappers - https://www.drupal.org/documentation/entity-metadata-wrappers
if ($node->body[LANGUAGE_NONE][0]['summary']) {
  // Значит summary введен вручную, а не вычисляется автоматически, 
  //выводи её как сам привёл пример или как показал shumod
}
Ответ дан 21.12.2015 - 09:59

Три миллиона благодарностей! =)

Комментарий оставлен 21.12.2015 - 14:48
0

В яндексе первая ссылка на запрос "field_view_field": http://sanchiz.net/blog/render-fields

Если необходимо указать тип отображения, по умолчанию используется default:

$field_tags = field_view_field('node', $node, 'field_tags', array('type' => 'teaser'));
$output = render($field_tags);
Ответ дан 21.12.2015 - 09:30
Аватар пользователя shu
shu
177

И что? Результат тот же, что и в моём варианте.

Комментарий оставлен 21.12.2015 - 14:45