Это было бы действительно просто в вашей теме, например node-foo.tpl.php для типа содержимого foo, который имеет поле "video"
<?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; ?>
Некоторые заметки о стиле и лучших практиках:
Я предпочитаю if / endif в шаблонах, другие предпочитают if () {}. Технически небольшая разница, я думаю, в противном случае; более читабелен в HTML.
Технически некорректно просто печатать значение, но следует использовать drupal_render (). Я лично до сих пор предпочитаю печать из-за ее прозрачности и простоты. Drupal_render (), однако, регистрирует то, что он «рендерит», и позволяет в конце drupal_render ($ node) визуализировать все неопределяемые поля; очень полезно, если вы решите добавить поля позже, без необходимости каждый раз менять весь шаблон. Drupal_render недоступен в tpl.php, но в предварительной обработке: как говорится, гораздо менее прозрачный и немного более сложный.
Dont! Когда-либо! выведите $ field_foo [0] ['value'], всегда часть ['view']: первая неэкранирована и может (будет!) содержать XSS-инъекции и тому подобное.
Странный вложенный массив ($ field_foo [0] ['value']) является результатом опции нескольких полей в Drupal. Лучшим способом было бы всегда выполнять итерации по каждому полю, а не просто отображать первый ([0]) элемент в жестком коде. Однако из соображений удобочитаемости, простоты и прозрачности я предпочитаю жестко кодировать индексы в моем шаблоне. Другие (по праву) не согласны со мной по этому поводу.