UPD:
А вот-так:
<?php function mymodule_preprocess(&$variables, $hook)
{
if($variables['styles'])
$styles.='<style>.class{color:#ecf}</style>';
else
$styles='<style>.class{color:#ecf}</style>';
}?>
И незабываем очистить кеш.
PS: hook_preprocess() (или как вариант через drupal_set_html_head()).
PS2: в хуке hook_preprocess(&$variables, $hook) элементы массива $variables - это те переменные, которые используются для темизации в page.tpl.php.
UPD (2011.05.11)
У меня на реальном сервере почему-то этот хук (hook_preprocess) адекватно работает только из template.php, а если его запустить из модуля, то при отправке формы страница (в которую форма слалась) не отображается (просто белая), но сервер дает код 200.
Комментарии
читать документацию.
drupal_add_css
Не катит. Нужно добавить кусок типа:
<styles>.someclass{somestuff}</styles>
http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_se...
еще вариант - hook_preprocess - но они незадокументированы. но есть.
А он в 6-ом Друпеле работает?
да, по идее должно.
_theme_process_registry() смотри в theme.inc
оно там и по модулям скачет.
<?php
$prefixes = array();
if ($type == 'module') {
// Default preprocessor prefix.
$prefixes[] = 'template';
// Add all modules so they can intervene with their own preprocessors. This allows them
// to provide preprocess functions even if they are not the owner of the current hook.
$prefixes += module_list();
}
...................
foreach (
$prefixes as $prefix) {if (function_exists($prefix .'_preprocess')) {
$info['preprocess functions'][] = $prefix .'_preprocess';
}
if (
function_exists($prefix .'_preprocess_'. $hook)) {$info['preprocess functions'][] = $prefix .'_preprocess_'. $hook;
}
if (!empty(
$info['original hook']) && function_exists($prefix .'_preprocess_'. $info['original hook'])) {$info['preprocess functions'][] = $prefix .'_preprocess_'. $info['original hook'];
}
}
?>
на основании этого набора хуки дергаются потом. должны бы все быть
и он кешируется если что. то есть надо специфические кеши обнулить при отладке - чтобу увидеть - завелось/не завелось
<?php function mymod_preprocess(&$variables, $hook){$variables['styles'].='sometext';}?>
Так не работает. Как правильно?
кстати не факт то это правильно. я хз где $styles определяться может. копайте ядро. мне лень
ну и кеш убивайте. см. выше.
Спасибо. Все работает (а не работало потому, что кеш не обновил).
суньте решение и hook в сам топик. малозадокументировано ведь. зато другим будет полезно
<?php function mymodule_preprocess(&$variables, $hook)
{
$variables['styles'].='<style>.class{color:#ecf}</style>';
}?>
я бы на вашем месте проверил ее существование. .= даст предупреждение если тут $variables['styles'] ниче не будет инициализировано.