通过drupal的API添加样式表

来源:互联网 发布:modbus通讯协议及c编程 编辑:程序博客网 时间:2024/04/30 08:37

原文: http://drupaluser.cn


Drupal使用者中文社区 ,提供drupal模块中文介绍,drupal教程,drupal开发,drupal主题制作文章。

通过.info文件添加样式表,对于大多数主题来说,已经足够了.由于.info文件是静态的,所以不能动态
的添加样式表。依据主题是如何处理样式表的,将它们放到一块也是可以的。当你有所疑虑的时候,使
用.info文件就可以了。
有两个API函数可用来处理样式表,drupal_add_css 和drupal_get_css。下面是一个动态添加样
式表的例子。将前缀"drop"改为你的主题名。
<?php
function drop_preprocess_page(&$variables) {
$front_style = path_to_theme() .'/front-page.css';
$path_style = path_to_theme() .'/path-'. arg(0) .'.css';
if (file_exists($front_style) && $variables['is_front']) {
$include_style = $front_style;
}
elseif (file_exists($path_style)) {
$include_style = $path_style;
}
if (isset($include_style)) {
drupal_add_css($include_style, 'theme', 'all', FALSE);
$variables['styles'] = drupal_get_css();
}
}
?>
在上面的例子中,访问首页,将会加载样式表"front-page.css",而访问其它页面,则会根据内部
路径的不同加载其它的样式表。例如,对于页面,http://example.com/admin,将会使用"pathadmin.
css"。
一些注意点:
· 根据样式表加载的时间和地点,将会调用drupal_get_css来加载要添加的样式表。在模板预处
理页面 template_preprocess_page )首先对其进行初始回显。关于预处理器顺序的具体细节,
可参看预处理器和变量。
· 在drupal_add_css存在一个参数,用来聚合添加的文件。当要添加的样式 是非常动态的话,可
以考虑像前面的例子那样,禁用该参数,这是由于向一个大的聚合文件中添加一个比较小的文件
需要重新创建一个新的聚合CSS文件。生效 后,加载页面的速度将会变慢,并且耗费更多的带
宽。