У меня есть поле Фото со множественным значением - туда загружается много фотографий.
Эти фотографии должны выводиться справа от текста материала.
Я хочу спросить: как можно это правильно темизировать.
То есть материалы могут иметь поле фото заполненным, а в других оно - пустое.
Я хочу, чтобы было как на картинке
Но у меня не получается простым CSS сделать так. то есть такой код неправильный:
.field-name-field-foto {width:29%; float:right;}
этот код неправильный, так как не учитывает, что в некоторых записях нет фотографий, и тогда поле боди будет занимать только 70%, а надо 100%
Поэтому я хочу другое решение: нужно добавить блоку поля body новый класс has-foto, если материал имеет заполненное поле Фото,. тогда css будет выглядеть так:
.field-name-field-foto {width:29%; float:right;}
подскажите, как добавить такой атрибут? как я понимаю, надо использовать в файле template.php функцию template_preprocess_field https://api.drupal.org/api/drupal/modules%21field%21field.module/functio... ???
Вложение | Размер |
---|---|
dag-sv.jpg | 135.57 КБ |
Комментарии
делать проверку поля на не пустое или нет и выводить поле если не пустое с одним классом, а если пустое, то с другим, что то типа
...
}
else{
...
}
или
...один вывод разметки
<? php endif; ?>
<?php if(empty($node->field_example)); ?>
...другой вывод разметки
<? php endif; ?>
в файле template.php такой хук решил вопрос:
<?php
function THEMENAME_preprocess_field(&$variables, $hook) {
if ( $variables['element']['#title'] == 'Body' ) {
//dpm($variables);
if ( isset($variables['element']['#object'] -> field_foto['und']) ) {
//dpm('hello');
array_push($variables['classes_array'], 'has-foto');
}
}
}?>
CSS такой:
.field-name-field-foto {float:right;max-width:29%;}
.field-name-field-foto .field-item {float:right;}