[РЕШЕНО] Как добавить что-то в переменную $styles из своего модуля?

Главные вкладки

Аватар пользователя beepbooptodelete beepbooptodelete 19 апреля 2011 в 19:57

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.

Комментарии

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 19 апреля 2011 в 20:55

vanyasmart wrote:
А он в 6-ом Друпеле работает?

<?phpfunction mymod_preprocess(&$variables, $hook){$variables['styles'].='sometext';}?> - так работать будет?


да, по идее должно.
_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'];
          }
        }
?>

на основании этого набора хуки дергаются потом. должны бы все быть Smile
и он кешируется если что. то есть надо специфические кеши обнулить при отладке - чтобу увидеть - завелось/не завелось

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 20 апреля 2011 в 0:59
<?php function mymodule_preprocess(&$variables$hook)
{
$variables['styles'].='<style>.class{color:#ecf}</style>';
}
?>

я бы на вашем месте проверил ее существование. .= даст предупреждение если тут $variables['styles'] ниче не будет инициализировано.