изменение страницы нижнего колонтитула в друпале 7

В Drupal 6 у моего модуля была следующая функция, которая вставляла javascript в нижний колонтитул страницы, но в Drupal 7 все изменилось. Как я могу сделать этот следующий код в drupal 7?

function myfunc_footer()
 {
    if(variable_get('myvar',1) && !drupal_match_path(drupal_get_path_alias($_GET['q']),  
          'admin/*'))
    {
         if ($somevar = variable_get('somevar',''))
             {
        return '<script src="'.$somevar.'" type="text/javascript"></script>';
         }
         else
             {
        drupal_set_message(t('something is wrong.'));
         }
    }
}

заранее спасибо


person Alon    schedule 10.10.2011    source источник


Ответы (1)


Ничего в вашем коде не изменилось с Drupal 6 на 7... все функции действительны, и если это работало для Drupal 6, нет причин, по которым это не будет работать для Drupal 7.

Я действительно не понимаю, почему вы используете drupal_match_path для псевдонима пути, вы должны запускать его для пути маршрутизатора, а не для URL-адреса:

if(variable_get('myvar',1) && !drupal_match_path($_GET['q'], 'admin/*')) {

Попробуйте это и посмотрите, решит ли это вашу проблему, если нет, не могли бы вы немного рассказать о том, какую ошибку вы получаете?

РЕДАКТИРОВАТЬ

Спасибо за обновление, ваш второй комментарий ниже почти прав, вам просто нужно указать ключ для массива рендеринга:

function myfunc_page_alter(&$page) { 
  $page['page_bottom']['my_extra_element'] = array(
    '#markup' => '<div><h3> testingthisout</h3> </div>', 
    '#weight' => 25
  ); 
} 

Вам не нужно указывать '#type' => 'markup', так как markup используется по умолчанию.

Затем убедитесь, что ваш модуль (тот, что называется myfunc) точно установлен, и очистите кеши. У вас не должно быть никаких проблем оттуда

person Clive    schedule 10.10.2011
comment
Привет, произошел переход с drupal6 на drupal7. hook_footer() был удален, и теперь мне нужно использовать hook_page_build, который я назвал myfunc_page_build(). - person Alon; 10.10.2011
comment
Я попробовал следующий код, который не сработал: function myfunc_page_build(&$page) { $page['page_bottom']['']= array( '#type' =› 'markup', '#markup' =› ' ‹div›‹h3› testingthisout‹/h3› ‹/div›', '#weight' =› 25, ); } - person Alon; 10.10.2011
comment
hook_footer() был удален, $closure стал $page_bottom, добавлен $page_top - person Alon; 10.10.2011
comment
Я изменил это на то, что вы сказали, но ничего не было напечатано в нижнем колонтитуле страницы. модуль установлен. подходит ли имя этого myfunc_page_build? имена должны совпадать? где эта функция на самом деле вызывается? - person Alon; 10.10.2011
comment
Плохо, функция ловушки называется hook_page_alter поэтому ваша функция должна называться myfunc_page_alter, если ваш модуль называется myfunc. Обязательно очистите кеш после того, как вы изменили имя, иначе Drupal не подберет его. - person Clive; 10.10.2011
comment
спасибо, я попробую это завтра, под очисткой кеша вы имеете в виду кеш браузера, верно? - person Alon; 11.10.2011
comment
Нет кешей Drupal, перейдите в admin/config/development/performance и нажмите кнопку "Очистить все кеши" :-) - person Clive; 11.10.2011
comment
Спасибо большое, завтра проверю и сообщу. большое спасибо за время и помощь :-) - person Alon; 11.10.2011