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;
}
}
(注:未经测试的代码,错别字要小心)
@benmango:我更新了我的答案根据评论的澄清如下 - HTH – 2010-01-28 09:21:47