Могу ли я сделать поля видимыми, только если у изображения есть изображение? - PullRequest
0 голосов
/ 05 августа 2010

Можно ли использовать CCK для добавления условия в форму модуля прикрепления изображений, где, если я не выбрал изображение для узла содержимого, некоторые поля не видны?

В настоящее время у меня нет доступных операций для моего поля прикрепления изображения в моем определении типа контента, где настройка и удаление доступны для всех других полей.

1 Ответ

1 голос
/ 05 августа 2010

Это было бы действительно просто в вашей теме, например 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]) элемент в жестком коде. Однако из соображений удобочитаемости, простоты и прозрачности я предпочитаю жестко кодировать индексы в моем шаблоне. Другие (по праву) не согласны со мной по этому поводу.

...