Проблема с самописными блоками

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

Аватар пользователя klapEts klapEts 11 апреля 2009 в 4:27

Пишу дополнительные блоки в собственном модуле. Благополучно отображаются в списке блоков на странице admin/build/block/list, но почему-то пропадает отображение всех блоков во всех регионах. Я использую две темы оформления - свою и garland (в админке). Так вот для garlanda всё нормально - наличие моих блоков не нарушает отображение регионов - т. е. можно добавлять блоки в регионы, всё нормально отображается. Проблема возникает в пользовательской теме - регионы пусты независимо от того, назначены им блоки, или нет. Регионы также объявлены свои собственные. Всё возвращается в норму, когда в своём модуле я убираю функцию декларации новых блоков (hook_block).

Комментарии

Аватар пользователя klapEts klapEts 12 апреля 2009 в 12:59

Кодировка шаблонов - юникод. Но даже если я не использую шаблонизацию в блоке, а вывожу какую-нибудь строку (например, "test") проблема остаётся.

Аватар пользователя klapEts klapEts 13 апреля 2009 в 0:58

Смотрите выше:

klapEts wrote:
Но даже если я не использую шаблонизацию в блоке, а вывожу какую-нибудь строку (например, "test") проблема остаётся.

Вообще, я уверен, что это баг друпала. Изворачиваюсь пока что, создавая пхпшный блок в админке, в который вставляю просто функцию его отображения из своего модуля. Но я считаю, что так дело не пойдёт. Здесь даже была где-то похожая тема, где у одного пользователя после views-ов регионы тоже отображались пустыми. Хочу знать, в чём причина.

Аватар пользователя v1adimir v1adimir 13 апреля 2009 в 1:48

v1adimir wrote:
klapEts wrote:
Вообще, я уверен, что это баг друпала.

http://bash.org.ru/quote/144075 ))

если проект не секретный, то приатачь исходники. попробую повторить у себя.
я сейчас как раз копаюсь с хардкорной темезацией и мне интересно в чем может быть проблема.

упс. косяк организовался с комментом. но это скорее всего не друпал глючит, а я. (

Аватар пользователя v1adimir v1adimir 12 апреля 2009 в 14:52

или clear cache не делал или в коде накосячил.
а не видя кода, сам понимаешь, никто ничего тебе не подскажет. )

Аватар пользователя klapEts klapEts 12 апреля 2009 в 16:36

Кеши очищал. Обращаю внимание, что всё работает в теме 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;
        }
    }
}
Аватар пользователя v1adimir v1adimir 12 апреля 2009 в 17:56

это у тебя theme('mymodule_test_block'); не работает.
поменял у себя ее на $block['content'] = 'AAAAAAAAAAAA'; и оно нормально выводится.

Аватар пользователя klapEts klapEts 13 апреля 2009 в 4:43

Исходник выйдет большой, так как помимо кодов включает все настройки внутри админки, тему оформления - короче говоря, для полного понимания придётся весь сайт целиком выкладывать. Проще создать простой модуль с одной функцией "hook_block" и ещё раз протестировать на двух темах.

По качеству исполнения друпала можно потом поговорить отдельно. Я бы не стал на него молиться.

Аватар пользователя Jimy Jimy 9 июня 2009 в 21:51

klapEts, удалось решить проблему?
У меня абсолютно такая же ситуация, но вразумительного ответа найти не удалось.