По умолчанию каждое поле содержит набор из нескольких дефолтных 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']);
}
Код используется в моей базовой теме.
Написанное актуально для
Drupal 7
Похожие записи
- Как добавить базовое поле комментарию (сохраняем User Agent комментатора)
- Добавляем на страницу управления отображением материала поля "Заголовок" и "Дата создания"
- Добавляем на страницу управления отображением комментария поля "автор" и "дата создания"
- Расширить сторонний форматтер своим функционалом
- Пустой форматтер для Field Group
Комментарии
привет
а скажите как скрывать лейблы у полей которые пустые, а то они отображаются
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
Добавить комментарий