Drupal: изменение цветовой схемы в зависимости от узла

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

В настоящее время я использую JavaScript для изменения цветовой схемы на основе заголовка страницы. После добавления нескольких страниц контента я теперь понимаю, что это ужасный способ ведения дел. Мне нужны некоторые идеи для лучшего способа изменения цветовой схемы в зависимости от содержимого.

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

Я также подумал об использовании CCK для добавления поля к типу содержимого моей страницы, а затем об изменении цветовой схемы на основе этого пользовательского поля. Это устранило бы необходимость добавлять код в мой JavaScript для каждой новой страницы.

Или есть модуль для изменения цветовых схем на странице?


person rsrobbins    schedule 13.08.2010    source источник


Ответы (4)


Вы можете взглянуть на модуль ThemeKey, который позволяет определить, какая тема используется на основе на таких условиях, как тип узла или путь.

person Dave Reid    schedule 13.08.2010
comment
Я отмечу это как ответ, но на самом деле я использовал модуль «Разделы», потому что именно так организованы страницы/узлы. - person rsrobbins; 15.08.2010

Вы можете добавить некоторые css в функцию hook_preprocess_page на основе узла или других критериев и добавить css в шаблон страницы как встроенные стили.

Идея будет такой же, как и в JavaScript, но у вас будет php, drupal и т. д., чтобы делать то, что вам нужно. Это должно быть намного проще, так как вы можете проверить тип узла или значение, которое вы установили для объекта узла.

person googletorp    schedule 13.08.2010

CSS-модуль выполняет специфичный для узла CSS, поэтому вы можете использовать его для настройки цветов.

person Scott Reynen    schedule 13.08.2010

Я бы предложил реализовать hook_preprocess_page в вашей теме и применить класс body на основе отображаемого типа узла (или типов). Или, возможно, поместите эти классы в предварительный процесс узла для отображения. Так, например, если вы просматриваете узел «проект», введите:

<body class="... node-type-project">...

Затем дизайнер может ориентироваться на стили в зависимости от того, какие классы имеет тело. Это довольно легко автоматизировать, просто выполните "node-type-". strreplace("_", "-", $node->type), чтобы изменить любой будущий тип узла на класс, который затем вы вводите либо в тело, либо в узел.

person John Fiala    schedule 13.08.2010