Всем привет, вывожу поле вот так"
<?php print render($content['field_date']); ?>
Как мне вывести это поле, изменив формат вывода например на текстовый?
Всем привет, вывожу поле вот так"
<?php print render($content['field_date']); ?>
Как мне вывести это поле, изменив формат вывода например на текстовый?
Вам, скорее всего, придётся читать и выводить значение поля, а не результат render(). Поскольку render() обычно выводит поле в HTML-обвязке (тут всё зависит от шаблона поля), а это уже не годится для strtotime(). Кстати, типично для render используется объект поля, а не значение поля, достаточно: <?php print render($content['field_date']); ?>. Ну это так, к слову.
Т.е. в вашем случае как-то так (сам не проверял, если что):
<?php print date('d.m.Y', strtotime($node->field_date['und'][0]['value'])); ?>
Комментарии
Обычно мне, если необходимо вывести данные поля как то иначе, чем то что предлагают стандартные решения - из админки. Я лезу в ноду например:
<?php $field_value = $node->['field_name']['und'][0]['value'];?>
А дальше делаешь с данными что хочешь.
у меня этот код ошибку выбивает.
<?php $field_value = $node->['field_date']['und'][0]['value'];?>
Да ты прав) правильно -
<?php $field_value = $node->field_name['und'][0]['value'];?>
Но это для текстового поля, у поля типа DATE другая структура.
Воспользуйся функцией модуля devel
<?php dpm($node->field_date);?>
так правильно?
<?php print render($content['field_date']['#object']->field_date['und'][0]['value']); ?>
$content - это переменная со значением полей для рендера на страницу.
а $node - это объект, нода, которая содержит всю информацию о данной годе.
А как вывести в нормальном формате? У меня выводит в ISO (16.08.202020 00:00)
Как убрать 00:00?
Дурпал 7 что уже полностью deprecated?
Видимо, в ISO сохранена изначально дата в поле.
Путём некоторых манипуляций с strtotime() и date() можно добиться требуемого результата.
Есть пример как это сделать в строке?
<?php print render($content['field_date']['#object']->field_date['und'][0]['value']); ?>
Вам, скорее всего, придётся читать и выводить значение поля, а не результат render(). Поскольку render() обычно выводит поле в HTML-обвязке (тут всё зависит от шаблона поля), а это уже не годится для strtotime(). Кстати, типично для render используется объект поля, а не значение поля, достаточно: <?php print render($content['field_date']); ?>. Ну это так, к слову.
Т.е. в вашем случае как-то так (сам не проверял, если что):
<?php print date('d.m.Y', strtotime($node->field_date['und'][0]['value'])); ?>
Спасибо, это решение!
Строго говоря, это не то, чтобы костыль, но и не по фэн-шуй. Я привёл решение только как пример реализации. А вообще-то значение поля следует переопределять хотя бы на этапе preprocess-функций, а не в *.tpl.php. Лет десять назад тут на форуме крепких люлей выписывали (в вербальной форме) за код в шаблоне. И, в общем-то,правильно делали.