В template.tpl.php темы можно прописать функцию типа:
и тогда в теме не будут подключатся некоторые css файлы.
Можно ли подобное прописать не в template.tpl.php, а в *tpl.php файлах блоков и вьюх, чтобы эти css не подключались на страницах, где блоки выводятся?
Комментарии
Прописать можно все, только получиться фигня какая нибудь-)
Шаблоны, они в общем, только для того, чтобы оборачивать переменные-значения в html-код.
Это их единственное предназначение и все остальное от лукавого.
Остальная логика должна быть в специально отведенном для нее месте (специальный хук или альтер)
В шаблонах обычно доступны только переменные уровня шаблона, и как-то "повлиять" на переменные других шаблонов без извращений никак не получиться, и с извращениями скорее всего тоже.
Так что css отключать проще и лучше в css_alter-)
Т.е. логика: если блок выводится - CSS файл отключать - она не рабочая?
Если рабочая - почему это нельзя задать в шаблоне блока?
Если нет - как тогда правильно в зависимости от блока?
Не "рабочая". Рабочая звучала бы "если блок есть - подключать CSS файл".
Очень интересно, почему возникла такая ситуация?
На одном сайте (вычислить не сложно на каком, но давайте не будем об этом писать без его владельца) я несколько новых страниц делаю. Нужно чтобы старые файлы на мою работу не влияли. И наоборот - моя работа на страницы над которыми я не работал.
P.S. Вагон и маленькая тележка методов у меня в любом случае есть.
Может нужные страницы можно определить по урл, типу материала или ещё какие-нибудь? Например получить ноду или термин через menu_get_object() и на основании каких-то признаков ансетнуть эти стили?
Да, даже если в аргументах функции нет нужных данных, всегда можно получить url текущей страницы и все его производные (алиас, ноду и т.п.), а также текущего юзера и все его производные (роль, права и т.п.).
И на основании этих данных принять решение: заменять css или нет
пример: https://www.drupal.org/forum/support/theme-development/2011-01-27/d7-nee...
Надо смотреть контекст и альтерить/добавлять по необходимости на препроцессе.