Вот появилась новая проблемка, как поменять страницу об отсутствии доступа к базе данных ?
А то пока на сервере в Германии делали облуживание, иногда высвечивалась эта страничка, и все бы ничего, но в ней указано имя базы данных и имя пользователя, спасибо что еще и пароль не показали.
Так можно ли поменять эту страничку, и как ?
Особенно хорошо было бы не менять ядро, если можно.
Спасибо.
Комментарии
Ну раз никто не отвечает пока, изложу свои соображения.
Как понял из коментариев в theme.inc, походу эту страницу нельзя поменять без редактирования файлов database.mysql.inc и database.mysqli.inc.
Т.к. когда эта страница выводится на экран, то сам Drupal не знает какая сейчас тема, да и логично, откуда ? Ведь база не доступна.
Вот блин....
хех... и это называется "отделение содержания от оформления"... что мешало проверять нужный файл в папке тем, например?
Ну такое можно реализовать только для перехвата страницы "504 - Сайт находится на обслуживании" - но ведь тогда проблем с базой нет, но буду смотреть эту функцтю, а вдруг и здесь сработает.
ну почему же? неужели при отсутствии коннекта к базе нельзя переадресовывать, например, на определённую страницу? я думаю можно, ничто не мешает эту страницу конфигурировать отдельно (чистый хтмл, например)...
ну а эту страницу (например noconnect.html) искать, скажем, в папке themes...
Хотя действительно скорее всего посмотрю выдержки из database.mysql.inc и database.mysqli.inc, т.е. как там определяется что нет коннекта к базе, а потом этот кусок сделать отдельным файлом и первым подлючить в index.php сайта, а затем кж делать редирект на html страничку в папке с темой.
Осталось только это реализовать, но учитывая что с php не знаком буду действовать методом тыка :-), ну да ладно хотябы в голове сложилась логика что писать, а уж куски кода "повыдергивать" из файлов папки include смогу.
Да, это бы сделать, да ещё "сайт в оффлайне"... тогда бы вообще всё было нормально... а то непорядок, когда показывается что-то не темообразное...
если получится что-то рабочее сделать, то может напишете, что вы делали и как?
Если насчет Сайт в оффлайне, то могу порекомендовать посмотреть тему meta, там эта страница настроенна, оттуда и себе стянул такую страничку
да? интересно... не подскажете где конкретно в этой теме что смотреть? устанавливать из-за этой мелочи не хочется...
Создаем в папке нашей темы подпапку "maintenance" ( просто мне так удобно, смотрите сами как хотите)
в корне скина создаем файл "maintenance_page.tpl.php"
вот его содержание, только надо заменить везде где встретится
themes/luna/maintenance/
на
themes/НАЗВАНИЕ НАШЕГО СКИНА/maintenance/
(знаю, есть функция для определения пути к скину, но лень было вспоминать, вот и прописал полный путь)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="Shortcut Icon" type="image/x-icon" href="favicon.ico" />
<meta name="generator" content="Drupal" />
<base href="<?php global $base_url; print $base_url;?>" />
<style type="text/css" media="all">import "themes/luna/maintenance/maintenance.css";
</style>
<!--[if IE 6]>
<script type="text/javascript" src="themes/luna/maintenance/pngfix.js"></script>
<![endif]-->
</head>
<body>
<div id="message-box">
<?php if ($site_name != ""): ?>
<h2><?php print $site_name ?><br />503 - Service Unavailable</h2>
<?php else: ?>
<h2>503 - Service Unavailable<br />Sorry For The Inconvenience</h2>
<?php endif; ?>
<div id="message"><?php print $content ?></div>
</div>
<div>
<img src="themes/luna/maintenance/maintenance-drupalicon.png" width="359" height="460"
alt="Shedko Software" id="drupal-logo" />
</div>
</body>
</html>
затем в папку maintenance ложим лого сайта с именем "maintenance-drupalicon.png", размер 359 на 460, это казано в предыдущем файле.
также сюда ложим рисунок для фона страницы, с именем "background-grey.gif", размеры 9 на 450 пкс.
создаем в этой же подпапке файл "maintenance.css", с содержанием
P u t t i n g t h i n g s o n t o p o f o t h e r t h i n g s ! By: Ken Collins
+---------------------------------------------+
*/
* { list-style: none; margin: 0; padding: 0; }
img { border: none; }
a { text-decoration: none; }
a, a:link, a:visited { border-bottom: 1px dotted #666; color: #f93; }
a:hover, a:active { color: #9c6; }
html, body { background: #fff url('background-grey.gif') repeat-x fixed top left }
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 62.6%;
min-width: 420px;
}
#message-box {
left: 394px;
position: absolute;
top: 175px;
z-index: 10;
}
h2 {
color: #9C0;
font-family: "Arial Narrow", Arial, Helvetica, sans-serif;
font-size: 2.4em;
font-weight: normal;
line-height: 1em;
text-transform: uppercase;
width: 16em;
margin-bottom: 4px;
}
#message {
width: 32em;
font-size: 120%;
font-family: Verdana, "Lucida Grande", Geneva, Arial, Helvetica, "Bitstream Vera Sans", sans-serif;
font-weight: normal;
color: #333;
letter-spacing: 0em;
line-height: 1.5em;
border-top: 1px dashed #666;
padding-top: 5px;
}
#drupal-logo {
top: 22px;
position: absolute;
left: 31px;
z-index: 5;
}
в папке maintenance создаем последний файл "pngfix.js", а его содержание
// Drupal.js Global Killswitch
if (isJsEnabled()) {
addLoadEvent(correctPNG);
}
// ------------------------------------------------------------------------
// | Correctly handle PNG transparency in Win IE 5.5 or higher.
// | http://homepage.ntlworld.com/bobosola.
------------------------------------------------------------------------
function correctPNG()
{
for(var i=0; i<document.images.length; i++)
{
var img = document.images[i]
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
{
var imgID = (img.id) ? "id='" + img.id + "' " : ""
var imgClass = (img.className) ? "class='" + img.className + "' " : ""
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
var imgStyle = "display:inline-block;" + img.style.cssText
if (img.align == "left") imgStyle = "float:left;" + imgStyle
if (img.align == "right") imgStyle = "float:right;" + imgStyle
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
var strNewHTML = "<span " + imgID + imgClass + imgTitle
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle +
";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
img.outerHTML = strNewHTML
i = i-1
}
}
}
теперь осталось последнее, открываем template.php из папки своего скина и в него добавляем
* Catch the theme_maintenance_page function in "includes/theme.inc", and redirect
* through the template api and point Drupal to the "maintenance_page.tpl.php" file
# to style the 503 Service Unavailable page when the site is offline. The phptemplate
* variables function is used to get the $stie_name variable used on the page template.
*/
function phptemplate_maintenance_page($content) {
return _phptemplate_callback('maintenance_page', array('content' => $content));
}
Все идем и смотрим
интересно... спасибо большое, сам бы я и не разобрался...
[b]"создаем в этой же подпапке файл “maintenance.css”, с содержанием"[/b]
это надо именно с таким содержанием или с тем, что в моём css?
[b]теперь осталось последнее, открываем template.php из папки своего скина и в него добавляем[/b]
куда добавляем? на какой строке? или заменяем то, что там было?
для человека не знающего php, у вас всё очень хорошо получается...
это надо именно с таким содержанием или с тем, что в моём css?
этот css просто определяет стили этой страницы которая генерируется из "maintenance_page.tpl.php", я его пока не менял, так как и такая страничка мне нравится. потом уж буду менять
куда добавляем? на какой строке? или заменяем то, что там было?
просто добавляем в конец этого файла, у меня сработало.
ясно, спасибо за развёрнутое пояснение... теперь осталось решить проблему страницы "нету коннекта к базе" и всё будет нормально...
будем надеятся, что кто-нибудь уже возился с этим и поделится опытом, а то уж больно не хочется менять модули из "include"
Как вариант можно в файле template.php создать функицию phptemplate_maintenance_page и через неё сделать вывод страницы на обслуживании, странно что его в манулае друпала не описали, наверное потому что создать файл темы проще гораздо.
странно, что это не настраивается... и не входит в ядро...
такие ошибки довольно частое явление, их бывает видно и на достаточно серьёзных сайтах...