2010-08-04 1 views
0

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

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

ответ

1

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

+0

IMHO, нет ничего плохого в жестком кодировании первого ([0]) элемента, если вы уверены, что в обозримом будущем это поле будет однозначным. Обернуть его в foreach было бы преждевременной оптимизацией (которая, конечно же, является корнем всего зла :-)). – marcvangend

+0

«до тех пор, пока вы можете быть уверены, что« в порядке. Тем не менее, ваш сайт не должен ломаться (как в: предупреждениях о путях, ошибках, открыть sec.holes) либо :) – berkes