IIRC, ссылки на таблицы стилей уже были обработаны при вызове функций *_preprocess_page()
и созданная разметка помещена в $variables['styles']
. Так что уже поздно использовать drupal_add_css()
.
Вы можете либо собрать разметку <link ...>
для своих дополнений и добавить ее к $variables['styles']
, либо вам нужно найти лучшее место для вашего звонка на drupal_add_css()
ранее в цепочке обработки (возможно, из модуля ).
Что это за место, трудно сказать, не зная, что именно вы подразумеваете под «проверь страницу, на которой я нахожусь», но если мы говорим о страницах узлов, hook_nodeapi()
будет кандидатом .
ИЗМЕНИТЬ после уточнения в комментариях:
Если решение о том, какие таблицы стилей добавить, основано только на пути, то hook_init
(в пользовательском модуле) будет подходящим местом для этого, так как после этого путь не изменится. Единственный хитрый момент в этом случае - получить чистые URL. Если (как я предполагаю) вы используете чистые URL-адреса, вы не можете использовать arg(0)
для получения первого элемента пути, так как он будет возвращать первый элемент внутреннего пути Drupal (например, «узел»). для узловых страниц). Таким образом, вы должны сначала получить чистую версию URL:
// Get current path alias, if any (will return original path, if no alias set)
$path = drupal_get_path_alias($_GET['q']);
// Extract first element
$path_elements = explode('/', $path);
// Do we have at least one element?
if (0 < count($path_elements) {
// Yes, add stylesheet based on that
switch ($path_elements[0]) {
case 'advice':
drupal_add_css('path/to/advice.css');
break;
case 'services':
drupal_add_css('path/to/services.css');
break;
// TODO: Add other variations ...
default:
// Might add a default alternative here
break;
}
}
(ПРИМЕЧАНИЕ: непроверенный код, остерегайтесь опечаток)