Это было бы очень просто в вашей теме, например. узел-foo.tpl.php для типа содержимого Foo, который имеет поле «видео»
<?php if(!empty($field_video[0]['view'])): ?>
<div class="block video">
<?php print $field_video[0]['view'] ?>
</div>
<?php print $field_some_other[0]['view'] ?>
<?php print $field_the_other_one[0]['view'] ?>
<?php endif; ?>
Некоторые заметки о стиле и лучшие практики:
Я предпочитаю, если/ENDIF в шаблонах, другие предпочитайте if() {}. Технически мало разница, я думаю, elseif; более читабельна в HTML.
Технически неверно просто распечатать значение, но следует использовать drupal_render(). Я лично по-прежнему предпочитаю печать, благодаря своей прозрачности и простоте. Drupal_render(), тем не менее, регистрирует то, что он «визуализировал», и позволяет вам в drupal_render ($ node) в конце отображать все незагруженные поля; очень полезно, если вы решите добавить поля позже, не изменяя весь шаблон каждый раз, когда вы это делаете. Drupal_render недоступен в tpl.php, но в предварительной обработке: как sayd, намного менее прозрачной и немного более сложной.
Dont! Когда-либо! напечатайте $ field_foo [0] ['значение'], всегда часть ['view']: первая не отображается и может (будет!) содержать инъекции XSS и подобные.
Странный вложенный массив ($ field_foo [0] ['value']) является результатом опции multiple-fields в Drupal. Лучшим способом было бы всегда перебирать каждое поле и никогда не просто выводить, hardcoded, первый ([0]) элемент. Однако, по соображениям удобочитаемости, простоты и прозрачности, я предпочитаю жестко кодировать индексы в моем шаблоне. Другие (по праву) не согласны со мной по этому поводу.
IMHO, нет ничего плохого в жестком кодировании первого ([0]) элемента, если вы уверены, что в обозримом будущем это поле будет однозначным. Обернуть его в foreach было бы преждевременной оптимизацией (которая, конечно же, является корнем всего зла :-)). – marcvangend
«до тех пор, пока вы можете быть уверены, что« в порядке. Тем не менее, ваш сайт не должен ломаться (как в: предупреждениях о путях, ошибках, открыть sec.holes) либо :) – berkes