Вывести значение поля

Аватар пользователя Dec0der Dec0der 16 июня 2017 в 21:36

Как вывести значение поля в шаблоне ноды?
Именно значение без стилей и обёрток?

<?php print render($content['field_name']); ?>
этот код выдаёт дефолтное поле со стилями

<?php print render($content['field_name'][0]); ?>
этот код выдаёт значение! Но только одно! Если значений больше, то они просто не выводятся.

Какой же код использовать?

Комментарии

Аватар пользователя Dec0der Dec0der 16 июня 2017 в 22:39

tlito, при таком коде получаем ошибку
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 36 bytes) in E:\xampp\htdocs\site.ru\sites\all\themes\sub\templates\node--scenario.tpl.php on line 159
ссылается на эту строку
<?phpprint render($content['field_name'][$i]);?>

Аватар пользователя Dec0der Dec0der 16 июня 2017 в 22:39

tlito, при таком коде получаем ошибку
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 36 bytes) in E:\xampp\htdocs\site.ru\sites\all\themes\sub\templates\node--scenario.tpl.php on line 159
ссылается на эту строку
<?phpprint render($content['field_name'][$i]);?>

Аватар пользователя tlito tlito 17 июня 2017 в 12:50

вначале замените цикл for на это:

<?php
echo "число элементов: "count($content['field_name']);
?>

узнав, что количество элементов не должно вызывать переполнение, попробуйте не использовать render():

<?php
for ($i=0;$i<count($content['field_name']);$i++) 
    echo 
$content['field_name'][$i];
?>
Аватар пользователя bumble bumble 17 июня 2017 в 15:48
1

Dec0der wrote:

Как вывести значение поля в шаблоне ноды?

Правильнее - в препроцессоре получить нужные значения и присвоить их переменной, а в шаблоне уже только вывести значения.

Например так:

<?php
function MYTHEME_preprocess_node(&$vars) {
  
$vars['myvar'] = MYTHEME_callback_for_getting_values($vars// Получаем необходимые значения
}
?>

И в шаблоне:


<?php if (isset($myvar)): ?>
  <ul>

  <?php foreach ($myvar as $myvar_item): ?>
    <li><?php print $myvar_item?></li>
  <?php endforeach; ?>

  </ul>
<?php endif; ?>

Для получения значений поля можно использовать field_get_items (ну, или EMW, если очень необходимо).