Проблема с самописными блоками
11 апреля 2009 в 4:27
Пишу дополнительные блоки в собственном модуле. Благополучно отображаются в списке блоков на странице admin/build/block/list, но почему-то пропадает отображение всех блоков во всех регионах. Я использую две темы оформления - свою и garland (в админке). Так вот для garlanda всё нормально - наличие моих блоков не нарушает отображение регионов - т. е. можно добавлять блоки в регионы, всё нормально отображается. Проблема возникает в пользовательской теме - регионы пусты независимо от того, назначены им блоки, или нет. Регионы также объявлены свои собственные. Всё возвращается в норму, когда в своём модуле я убираю функцию декларации новых блоков (hook_block).
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
Может проблема в кодировках файлов шаблона?
http://drupal.ru/node/27643
Кодировка шаблонов - юникод. Но даже если я не использую шаблонизацию в блоке, а вывожу какую-нибудь строку (например, "test") проблема остаётся.
Смотрите выше:
Вообще, я уверен, что это баг друпала. Изворачиваюсь пока что, создавая пхпшный блок в админке, в который вставляю просто функцию его отображения из своего модуля. Но я считаю, что так дело не пойдёт. Здесь даже была где-то похожая тема, где у одного пользователя после views-ов регионы тоже отображались пустыми. Хочу знать, в чём причина.
http://bash.org.ru/quote/144075 ))
если проект не секретный, то приатачь исходники. попробую повторить у себя.
я сейчас как раз копаюсь с хардкорной темезацией и мне интересно в чем может быть проблема.
упс. косяк организовался с комментом. но это скорее всего не друпал глючит, а я. (
или clear cache не делал или в коде накосячил.
а не видя кода, сам понимаешь, никто ничего тебе не подскажет. )
Кеши очищал. Обращаю внимание, что всё работает в теме garland. Не работает только в пользовательской теме -регионы отображаются пустыми.
В самом коде нет ничего хитрого и сложного - обычное объявление блоков:
* Implementation of hook_block
*/
function mymodule_block($op = 'list', $delta = 0) {
// list the blocks
if ($op == "list") {
$block[0]['info'] = 'Test block';
return $block;
} else if ($op == 'view') {
switch ($delta) {
case 0:
// set up the block
$block['subject'] = 'Test block';
$block['content'] = theme('mymodule_test_block');
return $block;
break;
}
}
}
это у тебя theme('mymodule_test_block'); не работает.
поменял у себя ее на $block['content'] = 'AAAAAAAAAAAA'; и оно нормально выводится.
Исходник выйдет большой, так как помимо кодов включает все настройки внутри админки, тему оформления - короче говоря, для полного понимания придётся весь сайт целиком выкладывать. Проще создать простой модуль с одной функцией "hook_block" и ещё раз протестировать на двух темах.
По качеству исполнения друпала можно потом поговорить отдельно. Я бы не стал на него молиться.
klapEts, удалось решить проблему?
У меня абсолютно такая же ситуация, но вразумительного ответа найти не удалось.
А если?
return array();
};