Темизация страницы при ошибке подключения к БД

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

Аватар пользователя botan botan 18 марта 2008 в 14:05

Вот такой собственно вопрос.
При невозможности подключиться к БД, вываливается страничка с ошибкой, так вот хотелось бы темизировать данную страничку.
Drupal 5.7

PS
Да, я знаю что есть функция theme_maintenance_page() и её можно перегрузить функцией phptemplate_maintenance_page() в template.php, но работает это лишь если уводить сайт в офф, при ошибке БД грузится по умолчанию, ибо global $theme всегда пуст :/
Посмотрел много мануала в рунете и на друпал.орг, такое ощущение что не работает только у меня.
Проверял на 3 сайтах, версии (5.2, 5.7, 5.7) .. не работает такой финт нигде -(

Подскажите может я что-то упустил?

Комментарии

Аватар пользователя botan botan 18 марта 2008 в 15:44

мда?
А зачем? Текст пусть будет таким же, не вопрос .. я про сам смысл. Функция theme_maintenance_page() не перегружается.

Аватар пользователя Gedler Gedler 19 марта 2008 в 7:27

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

Аватар пользователя VladSavitsky VladSavitsky 19 марта 2008 в 10:57

Я настраивал эту страницу по этой инструкции: http://harzah.net/node/875.
На локалхосте всё было красиво, а на сервере варнинги вылазят и в них пути к скриптам указаны...
В общем не красиво выходит. Как убрать пока не разбирался...

Аватар пользователя botan botan 21 марта 2008 в 15:56

VladSavitsky, там понимаешь в чем дело ..
До вызова theme('maintenance_page', ...) не происходит инициализации темы .. т.е. чисто в теории сначала должна подгрузиться тема, установленная по-умолчанию, но на практике глобальная переменная $theme пуста, в результате скрипт не находит phptemplate_maintenance_page() определённой в твоей теме, поэтому грузится дефолтная функция без темизации.

В 6 версии это поправлено, потому что при ошибке подключения к БД вылазит темизированая страничка (по-дефолту гарланл), т.е. у меня складывается отчётливое впечатление что это баг ядра 5 версии.

Я правда не могу понять почему у тебя раньше прокатывал способ с http://harzah.net/node/875, потому что в принципе он не должен работать. Есть предположение, что баг появился с какого то релиза, т.е может в какой нить 5.2 или 5.1 работало, а потом отвалилось.

PS
А варнинги php наверное нужно выключить в настройках сервера. Лучше конечно перенаправить вывод ошибок в файл.

Аватар пользователя botan botan 25 марта 2008 в 13:35

Для проверки поставил 5.7 и 6.1
drupal 5.7 - не темизируется
drupal 6.1 - темизирована

$theme в 6 уже определена как минелли, в 5 пустая.

5.7
$theme - string(0) ""

6.1
$theme_path - string(23) "themes/garland/minnelli"
$theme - string(8) "minnelli"

Тогда логично что и темизировать нельзя в 5.