Тема Drupal не вызывается? - PullRequest
       36

Тема Drupal не вызывается?

1 голос
/ 18 сентября 2011

Я новичок в Drupal и пытаюсь создать функцию темы, которая создает небольшой iframe для моих видео. Я вызываю функцию в моей функции обратного вызова меню. Проблема в том, что функция темы не вызывается. Я попытался добавить имя модуля в начале функции темы, а также удалил, и это не помогло. Я очищаю кэш каждый раз, когда делаю изменения и включаю обратную трассировку в моем модуле devel, и вижу следующее предупреждение:

предупреждение: call_user_func_array () ожидает, что параметр 1 будет действительным обратный вызов, функция 'mymodule_mobile_mymodue_mobile_build_iframe' не найдено или неверное имя функции в call_user_func_array () (строка 656 из /var/www/includes/theme.inc). =>

function my_callback_function(){
$output = theme('mymodule_mobile_build_iframe',array(
           'arg1'=> $stream,
           'arg2'=> $node->nid,)
               );
return $output

}
function mymodule_mobile_theme(){

      return array(
        'mymodule_mobile_build_iframe' => array(
        'arguments'    => array(
        'arg1'    => NULL,
        'arg2'   => NULL,),),);
}

function theme_mymodule_mobile_build_iframe($arg1,$arg2){

    $host = 'http://www.myhost.com';

    $output = '<video width="320" height="240" controls="controls"> <source src=
        "'.$host.'/'.$arg1.'/'.$arg2.'/playlist.m3u8" type="video/mp4" />
        Your browser does not support the video tag.
        </video>';

    return $output;
}

Спасибо всем заранее!

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

Я подозреваю, что это простая проблема с именами;Ваш модуль называется mymodule или mymodule_mobile?Это будет то же имя, что и файл .info вашего модуля (очевидно, минус .info).

Если он называется mymodule, то вам просто нужно изменить хук темы на имя mymodule_theme().Все ловушки Drupal являются MODULENAME_HOOKNAME (), если ваш модуль называется mymodule Drupal будет ожидать поиск функции ловушки темы с именем mymodule_theme().

Самый простой тест - это поставить строку drupal_set_message('test'); какпервая строка вашей функции ловушки темы и очистить ваши кеши.Если вы не видите вывод сообщения test на экран, ваша функция перехвата не запустилась и не имеет правильного имени.

Если вы видите сообщение test и оно все ещене работает, я полагаю, что это указывает на проблему где-то еще, остальная часть вашего кода выглядит на месте.

EDIT Я только что заметил в комментарии, что вы используете файл шаблона... Я думаю, что есть некоторая путаница, так как вам нужно, чтобы ключ template в массиве возвращался из hook_theme().Не могли бы вы уточнить это?

0 голосов
/ 19 сентября 2011

Я не вижу проблем в вашем коде (я не проверял его), но вы уверены, что очистили кеш ... очистите кеш и скажите, если проблема все еще существует

...