Я пытаюсь выполнить следующее. Я должен использовать Drupal 6 в качестве проектного требования, но я хочу использовать его со своими собственными таблицами стилей HTML и CSS для каждого узла/представления/панели и т.д.
Проблема, безотносительно темы я всегда находил, что Drupal обращается к моему содержимому HTML и мои таблицы стилей CSS и CSS, связанный с выбранной темой. Я также попробовал, без успеха, с помощью stylestripper модуля (установленный в sites/all/modules). Независимо от того, что я делаю, дополнительные таблицы стилей CSS применяются к моим страницам, полностью уничтожая мое расположение.
Что надлежащий путь состоит в том, чтобы достигнуть этого? Почему stylestripper не работает вообще? Существует ли абсолютно пустая доступная тема? Я попробовал основной, mothership, дзэн и т.д., но я всегда вижу, дополнительные таблицы стилей CSS относились к моим страницам.
Это сводит меня с ума, Drupal был выбран кем-то еще для его гибкости.Заранее спасибо.
<?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 .
Обновление:
Надлежащее место для размещения этой функции - в шаблоне .php
вашей темы. На самом деле в вашем случае вам нужно передать массив имен файлов css, которые вы хотите исключить.
Вызов drupal_add_css ()
без переданных аргументов предоставит $ css
массив файлов CSS, которые будут прикреплены к вашей теме. . Так что сейчас самое подходящее время, чтобы войти!
Как видите, в первом цикле foreach
мы просто ищем массив $ css
для имен файлов, которые существуют в переданном массиве $ exclude
, для удаление стиля. И мы проделываем ту же работу во втором цикле для вставки стиля. И в конце мы возвращаем тематическое представление всех стилей, которые должны быть прикреплены к теме, используя функцию drupal_get_css ()
. (может, в вашем случае ничего)
Ну а где вызывать эту функцию? Вы можете вызвать эту вспомогательную функцию в _phptemplate_variables ()
для D5 или YOUR_THEME_preprocess ()
для D6. Как мы видим это в действии для 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);
}
Я уверен, что вы знаете, как исключить их всех;)
Я не могу, это сработает, но я думаю, просто удалите следующую строку в page.tpl.php вашей темы
<?php echo $styles ?>
и тогда drupal не будет использовать свои собственные стили ..
это может сработать для вас.