Вывожу поля в шаблоне ноды. Уже разобрался с тем как вывести, но нужна проверка на наличие поля.
Весь день бьюсь с этой мелочью, никак не срабатывает условие.
Вот код:
<?php
$node = node_load($nid);
$field = field_get_items('node', $node, 'field_sity'); //Город
$output_sity = field_view_value('node', $node, 'field_sity', $field[0]);
?>
<?php if ($output_sity): ?>
<p><span class="label">Город: </span><span class="value"><?php print render($output_sity); ?></span></p>
<?php endif; ?>
Пробовал задавать разное условие. Например так:
<?php if ($output_sity) !== 0: ?>
или
<?php if ($output_sity) !== '': ?>
Никак не работает.
Комментарии
Ставьте https://drupal.org/project/devel и см. что дает переменная $output_sity на странице devel/php ?!
а в шаблоне ноды нету переменной $content, содержащей все поля? $content['field_sity']
Вообще $content есть. Я в отображении полей скрыл все поля кроме картинок и body. А остальные поля планирую вывести в шаблоне такой конструкцией как написал выше.
Думаете сделать условие на наличие поля $content['field_sity']?
sity - может, city?
думаю да
//code
}
Всем спасибо.
Мне подсказали как сделать. Сначала посмотрел что содержится в этой переменной:
var_dump($output_sity)
А в ней оказался вот такой массив, когда поле заполнено:
array(7) { ["#markup"]=> string(20) "Красноярск" ["#access"]=> bool(true) ["#printed"]=> bool(true) ["#type"]=> string(6) "markup" ["#pre_render"]=> array(2) { [0]=> string(24) "drupal_pre_render_markup" [1]=> string(27) "ctools_dependent_pre_render" } ["#after_build"]=> array(1) { [0]=> string(38) "conditional_fields_element_after_build" } ["#children"]=> string(20) "Красноярск" }
В итоге сделал сравнение такого вида:
<?php if ($output_sity['#markup']): ?>
2 sergeybelya city конечно правильно
Сначала это поле так и называлось. Потом обнаружил что несколько полей поломались, не знаю что с ними случилось, но значения в них не сохранялись. Я удалил эти поля и создал заново. А с city опечатался, но переделывать поленился.
2 drupby Проверил эту переменную ($content['field_sity']). Ее не существует.