пятница, 26 августа 2011 г.

Drupal: Как подключить css файл только для IE6 | Drupal для новичков. Друпал для начинающих

Drupal: Как подключить css файл только для IE6 | Drupal для новичков. Друпал для начинающих: Drupal: Как подключить css файл только для IE6
сб., 20/08/2011 - 23:27 — admin

drupal_add_css(path_to_theme() . '/ie6.css', array(
'group' => CSS_THEME,
'browsers' => array('IE' => 'IE 6', '!IE' => FALSE),
'preprocess' => FALSE)
);

Вместо строчки IE 6 можно прописать любое условное выражение доступное в Conditional Comments.

Комментарии

Отправлено через панель инструментов Google:

воскресенье, 14 августа 2011 г.

CSS injection

Некоторые сайты работают на многотемности, хотя фактически вся проблема сводится к тому, что просто какие-то классы для каких-то страниц должны определятся по разному.
Например, на одной странице фон должен быть одного цвета, а на других(или другой) - другого цвета.
Использовать шаблоны типа page-node-id.tpl.php тут совсем не к месту, модуль Themekey решает задачу, но создает сложности из-за кучи практически одинаковых тем. На помощь пришла идея с css injection.
Почитав в интернете несколько статей стало ясно, что в зависимости от урла можно подгружать различные css. Для этого мы должны написать соответствующую функцию в template.php
Но, во-первых, не все программисты, а во вторых - мне показалось это не гибко.
И тут нашелся модуль CSS Injector.
Суть модуля такова: в административной панеле, в настройках модуля вы указываете какой css код должен прогружаться на каких страницах. Определение страниц для кода такое же как и у блоков, поэтому сложностей не вызовет. Указанные стили записываются в отдельный файл, который уже инклюдится в head на выбранной странице.
Знали бы вы сколько бы времени я сэкономил, если бы нашел это решение раньше...
Если у кого-то будет проблема, что в head поялвяется инклюд, но в то же время пути в созданному css не корректны, то рекомендую сразу же воспользоватсья патчем (в файле css_injector.module строки с - удаляем, с + вставляем):
function _css_injector_rule_path($crid) {
if (!empty($crid)) {
- $local_path = drupal_realpath(_css_injector_rule_uri($crid));
- // Now remove the part before the drupal root.
- // The +1 gets rid of the leading '/'.
- $local_path = substr_replace($local_path, '', 0, strlen(DRUPAL_ROOT) + 1);
- return $local_path;
+ return variable_get('file_public_path', conf_path() . '/files') . '/css_injector/css_injector_' . $crid . '.css';
}
return NULL;
}