Drupal → Удаление лишних CSS классов у полей
По умолчанию каждое поле содержит набор из нескольких дефолтных CSS классов — field field-name-[field_name] field-type-[field_type] field-label-[label_display]
. 3 класса тут явно лишних, а четвёртый — field-name-[field_name]
, неплоха бы выводить в виде [field_name]
. Исправляем ситуацию:
/** * Preprocess function for field.tpl.php */ function THEMENAME_preprocess_field(&$vars) { // Remove classes $remove_classes = array( 'field', 'field-name-' . $vars['field_name_css'], 'field-type-' . $vars['field_type_css'], 'field-label-hidden', 'field-label-above', ); $vars['classes_array'] = array_diff($vars['classes_array'], $remove_classes); // Add class array_unshift($vars['classes_array'], $vars['field_name_css']); }
Код используется в моей базовой теме.
Комментарии
привет
а скажите как скрывать лейблы у полей которые пустые, а то они отображаются
xandeadx, спасибо за лайфхак.
Юрий, а в чем проблема проверять не пустое ли поле, и не выводить его просто?
проблема в том что не хочется писать код и темизировать кучу полей
Я обычно использую mytheme_field(), скопировав логику из дефолтной функции темизации и заменив необходимое. Да и пожалуй такое решение рабтает быстрее.
Кроме того можно разные филды темизировать по-разному по field_name
А как быть, если тема не использует файл field.tpl.php ?
Не очень понятно, как скачать Ваш базовую тему. Не могли бы Вы дать прямую ссылку, чтобы в ней посмотреть код убирания лишних css классов?
http://xandeadx.ru/blog/drupal/621
Гигантское спасибо. Куча невнятных стилей - чуть ли не самая бесявая для меня вещь в Друпале. Была )
Заюзал этот препроцессор, у вьюх тоже убрал.
только я вместо
array_unshift($vars['classes_array'], $vars['field_name_css']);
использовал
array_unshift($vars['classes_array'], <strong>'field-'.</strong>$vars['field_name_css']);
всё же нужно в классе указывать принадлежность к полю. А то в случае, например, с Body получается двусмысленно.
в template.php
Оставить комментарий