Есть необходимость назначить некоторым разделам сайта уникальное оформление. Изменения касаются многих элементов интерфейса. В каждом разделе находятся разные сущности (термины таксономии, материалы разных типов). Определять по этому признаку не получается.
Пока вижу такой вариант решения. Проверять url текущей страницы. Если он начинается с заданной фразы, добавлять к body определённый класс. И уже css прописывать с указанием класса body. Механизм реализован через preprocess_html в template.php.
Возможно, есть какой-то более оптимальный путь решения?
Комментарии
Если умеете то делайте.
А вообще 2 ссылки дайте и конкретные примеры что исправить хотите говорите.
Сейчас сделано через preprocess_html. Запрашиваем путь, каждый уровень вложенности делаем классом для body. И дальше в css добавляем иерархию, основанную на классах body.
Что конкретно менять - нет смысла перечислять. Суть в смене цветового оформления. Фоновый рисунок, фоновый цвет, цвета текста, ссылок и границ. Довольно много элементов. Планирую вынести их в отдельные .css для своего удобства.
Вопрос в том, насколько правилен сам путь решения - использование preprocess_html и запрос request_path. Почему-то мне этот метод кажется не очень удачным.
Интересный у вас идеи/блог, в закладки.
Спасибо, мне приятно.
Правда блог у меня не на Друпале.
Ну всё зависит от архитектуры сайта.
Мой вариант
Если действительно много разных страниц, то делайте через шаблоны типов материалов.Даже при 10 - 20 различных разделах проще потом работать с файлами шаблонов. А не единственным препроцессом.
Один тип материала может принадлежать разным разделам (при желании этого можно избежать, если будет необходимость). В одном разделе могут быть разные типы материалов. К разделам относятся не только материалы, но и страницы терминов таксономии.
Шаблоны ничем не будут отличаться, кроме имени подключаемого файла css. Не будет ли это увеличением нагрузки?
на хостингах за 30 руб/мес падений производительности не наблюдаю. Хотя ни не замерял.
Через panels может стоит попробовать.
А приглядитесь к context и его "расширениям" и к themekey
Может найдете дополнительные признаки для проверки под тему. Или даже готовое решение.
Спасибо за советы. Этими модулями ещё не пользовалась, попробую разобраться.
как решили, подытожте, пжта.
Остановилась на коде:
$request_path_array = explode('/', request_path());
if ($request_path_array)
{
$vars['classes_array'][] = $request_path_array[0];
}
}
Поверяет адрес странницы и первую его часть добавляет к классам body. В css к нужным селекторам добавляю родителя body.class.