темизация сообщений об офлайне и недоступности базы данных (4.7, 5.0)

Автор: B.X - 16.07/2007, пн - 10:56

В template.php в вашей теме (если нет, то создаём), добавляем:

  1. <?php
  2. function phptemplate_maintenance_page($content) {
  3.   return _phptemplate_callback('maintenance_page', array('content' => $content));
  4. }
  5.  
  6. function _phptemplate_variables($hook, $vars) {
  7.   switch($hook) {
  8.     case 'maintenance_page' :
  9.       $vars['site_name'] = variable_get('site_name', '') ;
  10.     break;
  11.   }
  12.   return $vars;
  13. }
  14. ?>

В созданный файл maintenance_page.tpl.php добавляем (замените заголовки):

  1. <?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3.  
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  5.  
  6. <head>
  7. <title>::: Harzah.Net | Сайт на обслуживании</title>
  8.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9.   <link rel="Shortcut Icon" type="image/x-icon" href="favicon.ico" />
  10.   <meta name="generator" content="Drupal" />
  11.   <base href="<?php global $base_url; print $base_url;?>" />
  12.   <style type="text/css" media="all">@import "themes/slash/maintenance.css";</style>
  13.   <!--[if IE 6]>
  14.   <script type="text/javascript" src="themes/slash/mata_pngfix.js"></script>
  15.   <![endif]-->
  16. </head>
  17. <body>
  18.  
  19. <div id="message-box">
  20.         <?php if ($site_name != ""): ?>
  21.     <h2><?php print $site_name ?><br />503 - Сервис Недоступен</h2>
  22.     <?php else: ?>
  23.     <h2>503 - Сервис Недоступен<br />Приносим Извинения за Неудобство</h2>
  24.   <?php endif; ?>
  25.         <div id="message"><?php print $content ?></div>
  26. </div>
  27.  
  28. <div>
  29.   <img src="themes/slash/maintenance-drupalicon.png" width="359" height="460" alt="Drupal Logo" id="drupal-logo" />
  30. </div>
  31.  
  32. </body>
  33. </html>

Для того, чтобы изменить ещё и сообщение о недоступности к базе данных, нужно изменить код includes/database.mysql.inc на строке 105:

  1. <?php
  2. drupal_set_header('HTTP/1.1 503 Service Unavailable');
  3.     drupal_set_title('Unable to connect to database server');
  4.     print theme('maintenance_page', '<p>If you still have to install Drupal, proceed to the <a href="'. base_path() .'install.php">installation page</a>.</p>
  5. <p>If you have already finished installed Drupal, this either means that the username and password information in your <code>settings.php</code> file is incorrect or that we can\'t connect to the MySQL database server. This could mean your hosting provider\'s database server is down.</p>
  6. <p>The MySQL error was: '. theme('placeholder', mysql_error()) .'.</p>
  7. <p>Currently, the username is '. theme('placeholder', $url['user']) .' and the database server is '. theme('placeholder', $url['host']) .'.</p>
  8. <ul>
  9.  <li>Are you sure you have the correct username and password?</li>
  10.  <li>Are you sure that you have typed the correct hostname?</li>
  11.  <li>Are you sure that the database server is running?</li>
  12. </ul>
  13. <p>For more help, see the <a href="http://drupal.org/node/258">Installation and upgrading handbook</a>. If you are unsure what these terms mean you should probably contact your hosting provider.</p>');
  14.     exit;
  15. ?>

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

  1. <?php
  2. drupal_set_header('HTTP/1.1 503 Сервис Недоступен');
  3.     drupal_set_title('::: Harzah.Net | Нет соединения с сервером базы данных');
  4.     print theme('maintenance_page', '<head><style type="text/css" media="all">@import "http://harzah.net/themes/slash/maintenance.css";</style><link rel="Shortcut Icon" type="image/x-icon" href="http://harzah.net/files/favicon.ico" /></head><div id="message-box"><h2>::: Harzah.Net<br />503 - Сервис Недоступен</h2><div id="message">Нет соединения с базой данных. Подождите, пожалуйста, некоторое время. Мы скоро вернёмся. Спасибо за ваше терпение. </div></div><div><img src="http://harzah.net/themes/slash/maintenance-drupalicon.png" width="359" height="460" alt="Drupal Logo" id="drupal-logo" />
  5. </div>');
  6.     exit;
  7. ?>

Несколько неправильно, с точки зрения стандартов, но работает и показывается одинаково во всех трёх браузерах. Для версии 4.7 всё также, только номера строк не везде совпадают и имена функций могут быть немного не те (смотрите по аналогии). Ну и последнее, добавьте в папку вашей темы прикреплённые файлы.

Комментарии

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