<?php
/**
* Helper function to allow easy CSS excludes + includes
*/
function _phptemplate_get_css($exclude = array(), $include = array()){
$css = drupal_add_css();
foreach ($css['all']['module'] as $k => $path) {
$file = substr($k, strrpos($k, '/') + 1);
if (in_array($file, $exclude)){
unset($css['all']['module'][$k]);
}
}
foreach ($include as $file){
$css['all']['theme'][path_to_theme() .'/'. $file] = true;
}
return drupal_get_css($css);
?>
更多的drupal.org。
更新:
合適的地方把這個功能,在template.php
文件的主題。其實在你的情況下,你需要傳遞一個你想排除的css文件名數組。
對drupal_add_css()
的調用沒有任何參數通過,將爲$css
提供將附加到您的主題的CSS文件數組。所以這是進入的好時機!
如您所見,在第一個foreach
循環中,我們只需尋找$css
陣列中存在的傳入$exclude
數組中的文件名,以刪除樣式。我們在第二個循環中進行樣式插入。最後,我們返回所有樣式的主題表示,這些樣式應附加到使用drupal_get_css()
函數的主題上。 (也許在你的情況什麼都沒有)
那麼,在哪裏調用這個函數?您可以在D5的_phptemplate_variables()
或D6的YOUR_THEME_preprocess()
中調用此幫助函數。正如我們看到這個動作的D6 (未經測試):
function YOUR_THEME_preprocess(&$vars, $hook){
// Stylesheet filenames to be excluded.
$css_exclude_list = array(
'lightbox.css',
'lightbox_lite.css',
);
// Making use of previously defined helper function.
$vars['styles'] = _phptemplate_get_css($css_exclude_list);
}
我敢肯定你知道如何排除「他們所有;)
謝謝,這似乎是完美的。您能否添加實際使用該功能所需的缺失細節?我應該在哪個文件中放置函數?如何調用它來排除所有的CSS樣式表? – 2010-02-27 11:56:04
不客氣,我要'更新答案;) – sepehr 2010-02-27 12:39:35
優秀!這正是我正在尋找的!感謝您分享這一點! – 2010-02-27 14:59:57