Группы блоков с уникальным классом тема Zen как?

Главные вкладки

Аватар пользователя sikwel sikwel 25 февраля 2010 в 13:11

Здравствуйте, умные люди.

Я верстальщик. Ковыряю zen.

Возник вопрос по поводу генерируемых этой темой классов у блоков.
Вот есть такой кодик в файле шаблона блоков, задание классов в зависимости от назначения блока-родителя:

$block->module . '-' . $block->delta; ?>" class="<?php print $classes; ?>">

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

К примеру конкретная задача, задать разным группам блоков (группы определяются не исходя из их функционала, допустим сначала два с одник классом, потом один с другим, потом опять два с третьим, к примеру разного цвета фон у блоков чтобы был).
Как эту задачу правильно реализовывать нужно?

С друпалом я разбираюсь не так давно, с месяц потихоньку ковыряю. так что, если можно подоходчивее, пожалуйста

Комментарии

Аватар пользователя sikwel sikwel 25 февраля 2010 в 13:16

упс, а пхп кодик по умолчанию подсвечивается) тогда прошу прощения)

<div id="block-<?php print $block->module . '-' . $block->delta; ?>" class="<?php print $classes; ?>"><div class="block-inner">
 ...
</div></div> <!-- /block-inner, /block -->

выделенные переменные это вот эти):
module . '-' . $block->delta;
$classes;

Аватар пользователя adubovskoy adubovskoy 25 февраля 2010 в 14:00

http://www.ra-don.ru/node/130 - такой вариант не подойдет?

Еще советую присмотреться к skinr. Он сложноват для освоения, документации на русском нет, но для верстальщика это находка... Помогает систематизировать все и расставить по полочкам.

Аватар пользователя sikwel sikwel 25 февраля 2010 в 14:18

ыы, сюрприз) спасибо Александр, как раз нашел самостоятельно Вашу статейку в гугле по "запросу как генерируются классы блоков zen друпал", Вы там шестой) только статейка немного не та, в смысле полистать пришлось)

а модули действительно то что надо)

кстати, а чтобы я для себя понял, может кто-нибудь объяснит сам механизм задания зеновских классов блокам?

Аватар пользователя adubovskoy adubovskoy 25 февраля 2010 в 14:37

Там все довольно просто. Block->module выводит имя модуля, который этот блок вывел (т.е. у выведенного через views блока будет ".views" к примеру).
block->delta выводит ID блока. (#block-block-4 к примеру).

А переменная $classes задана в template.php темы zen и является небольшим улучшением $body_classes - переменной, которая для тега body выводит некоторые классы, помогающие верстать (пример front logged-in page-node node-type-page one-sidebar sidebar-right). Навскидку сейчас содержимое body_classes не назову, это в апи надо покопаться...

p.s. я правильно вопрос понял, об этом была речь?

Аватар пользователя sikwel sikwel 25 февраля 2010 в 14:52

Да, именно это я и хотел понять, спасибо. А есть где-нибудь полный список стандартных названий модулей, которые выводят блоки, и список этих улучшенных зеновских боди классов можно посмотреть или у меня паранойя (: и вывод этих классов нужно смотреть в зависимости от модуля и по коду в template.php, который в главной зен темен лежит?

Аватар пользователя adubovskoy adubovskoy 25 февраля 2010 в 14:58

zen 1.0, template.php со строчки 124 - function zen_preprocess_page это оно. Он немного стилизует вывод и добавлят/убирает префиксы (типа "node-").

Название классов которые выводят модули - это определяется именем модуля.

Аватар пользователя sikwel@drupal.org sikwel@drupal.org 2 марта 2010 в 10:42

хм.. очень классный конечно модуль Skinr, вроде понял его работу.
Поставил (распаковал папку с модулем куда нужно).
Активировал. В меню модуль появился.
В инфофайле написал следующее:

skinr[very_lage_font][title] = Очень большой шрифт
skinr[very_lage_font][type] = radios
skinr[very_lage_font][description] = Этот класс задает всему содержимому блока очень большой шрифт в 17 или 30 пикселей.
skinr[very_lage_font][features][] = block
skinr[very_lage_font][options][1][label] = очень большой
skinr[very_lage_font][options][1][class] = very-lage-font
skinr[very_lage_font][options][2][label] = огромный (:
skinr[very_lage_font][options][2][class] = very-very-lage-font

стили прописал в файле стилей соответствующие.

Захожу на страницу отображения регионов и блоков, выбираю нужный блок, который уже есть на странице, жму на "configure". Перехожу к настройкам skinr, в настройках модуля появились соответствующие две радиокнопки переключения этих двух классов.
Выбираю класс, жму на сохранить и ничего не происходит)

Смотрю в код, у блока никаких классов не добавилось.

Также никаких классов не добавляется и во вновь создаваемый блок.

И не работает добавление классов в Advanced options
по Apply additional CSS classes:

Может у меня руки кривоваты?))