[РЕШЕНО] Ошибка в block_block_view

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

Аватар пользователя CannibalZ CannibalZ 20 октября 2012 в 14:03

Здравствуйте. Вот уже прошло не мало времени, и руки начинают опускаться... Гуглил, где только не искал, что только не читал, а проблему так и не решил. После Joomla и DLE - Drupal реально сложный...

Ну собственно о ошибке:
Выбивает строчек 8 вот это фигни - Notice: Trying to get property of non-object в функции block_block_view() (строка 245 в файле /home/l/live/sekret.net/public_html/modules/block/block.module).

Ошибка как я понял здесь:
unction block_block_view($delta = '') {
$block = db_query('SELECT body, format FROM {block_custom} WHERE bid = :bid', array(':bid' => $delta))->fetchObject();
$data['subject'] = NULL;
245- $data['content'] = check_markup($block->body, $block->format, '', TRUE);
return $data;

Ну какая там ошибка? Если я там ничего не трогал! Подскажите, спасибо...

Комментарии

Аватар пользователя boatsman boatsman 20 октября 2012 в 17:39

для начала, определите какая $delta передается в функцию во время ошибки

дальше залезть в mysql (таблица block_custom) и по 'bid' (он же $delta) посмотреть в каком блоке проблема

Аватар пользователя CannibalZ CannibalZ 20 октября 2012 в 20:40

boatsman wrote:
для начала, определите какая $delta передается в функцию во время ошибки

дальше залезть в mysql (таблица block_custom) и по 'bid' (он же $delta) посмотреть в каком блоке проблема

Я нуб... Извините, но ничего не понял...........

Аватар пользователя CannibalZ CannibalZ 20 октября 2012 в 21:33

boatsman wrote:
Так, по порядку, залезть в базу данных и просмотреть таблицу block_custom можете?

Да, там уже был (могу), но ничего понятного для меня там "пока" нет.

Аватар пользователя boatsman boatsman 21 октября 2012 в 7:19

Многие будут плеваться, но делаем тупо и быстро Smile

Вставьте после конструкции
$block = db_query('SELECT body, format FROM {block_custom} WHERE bid = :bid', array(':bid' => $delta))->fetchObject();

Вот это:

if (!is_object($block)) {
file_put_contents(DRUPAL_ROOT . '/sites/default/files/wrong_block', $delta);
}

Перезагрузите страницу с ошибкой, посмотрите в файл /sites/default/files/wrong_block - там должна быть цифра. Ищите в базе в таблице custom_block в колонке bid эту цифру, есть там соответствующая запись?

Аватар пользователя imarat imarat 21 октября 2012 в 15:58

у вас сайт с этими ошибками нормально работает? Если да - идем в конфигурацию, разработка, ошибки, не показывать

Аватар пользователя boatsman boatsman 21 октября 2012 в 16:02

так, идем на страницу управления блоками, создаем там пустой блок, называем его как-нить, идем в базу в таблицу custom_block и у этого нового блока меняем bid на 5. enjoy Smile

Аватар пользователя CannibalZ CannibalZ 21 октября 2012 в 16:50

boatsman
Спасибо вам за помощь, но проблема так и не решилась, сделал все как вы говорили - ошибка есть. Но был сильно удивлен когда поставил стандартный шаблон - и ошибки пропали!!! Шаблон кстати tb_blog...

Аватар пользователя boatsman boatsman 21 октября 2012 в 17:37

если ошибка осталась, то, вероятно, у вас этот "потерянный" блок не единственный.

Удаляем файл wrong_block

меняем
if (!is_object($block)) {
file_put_contents(DRUPAL_ROOT . '/sites/default/files/wrong_block', $delta);
}

на

if (!is_object($block)) {
file_put_contents(DRUPAL_ROOT . '/sites/default/files/wrong_block', $delta . "\n", FILE_APPEND);
}

перезагружаем страницу с ошибкой
смотрим в wrong_block что получилось

Аватар пользователя CannibalZ CannibalZ 21 октября 2012 в 22:15

Вот че вышло: 8 3 4 6 11 7 8 3 4 6 11 7...
Самое интересное, что сайт только делаю, установил шаблон на новый друпал с демо данными, а геморроя ппц...

Аватар пользователя dwizhok-ok dwizhok-ok 16 октября 2014 в 0:31

Попробовал советы от boatsman, но это скорее из разряда диагностики. Каждый раз мы таким образом создаём всё новые и новые ошибки-блоки.
Решение самое простое! Совсем не нужно трогать файл block.module )) Объясняю! Ошибка возникает из за самопроизвольного удаления одного из блоков напрямую в базе данный (mysql), а именно в таблице block_custom. Например удалили блок со значением 32 в колонке bid. Ошибка будет возникать после этого на тех страничках где он стоял. Почему? Потому что мы забыли ещё подкорректировать вот эту таблицу block. Идём в него, ищем в колонке delta нашу заветную циферку 32 и удаляем строку. Обязательно проверьте чтоб в этой строке в колонке theme стояла именно ваша на данный момент включенная тема. Всё!!!