跳转到主要内容
nerochen 提交于 13 March 2012

原文地址:http://drupal.org/node/1209088

译者:这个文档描述的Drupal 6.x的维护页面定制方法。对D7应该也有一定的参考意义。 虽然是Drupal 6.x的文章,但觉得这篇文章有点Drupal way的意思,所以强自翻译,请指正。

原文如下:

当网站处于维护模式下时,我们期望不管用户输入本网站url是什么,都会被引导到一 个维护界面上。在Drupal 6.x中,我们可以通过如下方法做到这一点。

 

在"root/themes/garland/page.tpl.php"或默认维护主题的page.tpl.php中定义site-offline.html:(译者:在同一目录的template.php定义更合适一些,它会覆盖系统默认函数)

function phptemplate_maintenance_page($content, $messages = TRUE, $partial = FALSE) {
  drupal_goto('path/to/your/site-offline.html');
}

这种方法来源于http://blah.com/offline.html,它的缺点是不允许用户刷新页面。

在脱机维护时,你想使用定制的主题作为脱机维护页面,但系统不允许你使用。这时,你需要修改位于“root/sites/default”的settings.php的文件权限,增加读,写,执行权限。然后,取消以下三行代码的注释状态,并将维护主题从"garland"修改为你希望的主题,比如是minnelli。

修改前:

#   $conf = array(
#   'maintenance_theme' => 'minnelli',
#   );

修改后:

    $conf = array(
        'maintenance_theme' => 'minnelli',
    );

这将让你得到你期望的维护主题,但它与一些主题匹配得并不好,而且缺乏灵活的.css或者HTML内容。

这将允许您完全定制HTML页面作为脱机维护页面,不需要file.html的扩展,它仍然在以前的页面上。按照方法二的指示进行设置,除了主题部分,也不包括maintenance-page.tpl.php 和 maintenance-page-offline.tpl.php的内容。在设置了settings.php后,复制两份page.tpl.php,分别命名为"maintenance-page.tpl.php" 和"maintenance-page-offline.tpl.php"。删除这两个文件的全部内容,并创建如下几行:

<!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" lang="<?php print $language->language ?>" xml:lang="<?php print $language->language ?>">

<?php
  $head_title = 'Site Offline';
  $content =
?>
  
<head>
  <title><?php print $head_title ?></title>
  <?php print $content ?>
    <!--[if lt IE 7]>
    <style type="text/css" media="all">@import "<?php print base_path() . path_to_theme() ?>/fix-ie.css";</style>
    <![endif]-->
  <script type="text/javascript"><?php /* Needed to avoid Flash of Unstyle Content in IE */ ?></script>
</head>

<?php
$theme_width = "width";
$theme_width = theme_validate_page_width($theme_width);
?>
</html>

注:确保在php部分的底部,使用你期望的主题宽度函数替换掉theme_validate_page_width($theme_width)。

接下来,按照你的想法,生成.html和.css配置文件,例如:

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html lang='en-US'><head><title>site is Offline</title>
	<link rel='alternate' type='application/rss+xml' title='site.com' href='http://site.com/feeds/general'>
	<link rel='SHORTCUT ICON' href='sites/default/files/favicon.ico'>
<style>body {
	font-family: Verdana,Arial,Helvetica,sans-serif;
	font-size: 76%;
	color: #000;
	margin: 20px;
	background: #292929;
	text-align: center;
}
a
{
	color: #EFEFEF;
	font-weight: bold;
}
a:link {
	}
a:visited {
	}
a:active {
	}
h2 {
	font-size: 1.5em;
	border-bottom: 1px solid silver;
	padding-bottom: 3px;
	clear: both;
	}
pre {
        max-height: 240px.........
</style></head>

如下是网页的.css配置,最后把你的HTML完成。

</head>
<body>
<div class='logo'><a href='http://site.com'><img src='sites/default/files/sitelogo.png' 
<div class='content'>
</div>
<div class='footer'>
</div>
</body>
</html>

一旦你准备好“site is offline page”和“site maintenance page”的html内容后,用"替换所有的',并用'括起来,当然也可以采用其他方式。如果是html中必须有的'和"可以用'和"替代。当这些都对齐之后,把文件内容粘贴到‘$content =’之后,注意,'='之后要有一个空格,并在html之后增加‘;’。

感谢你读这篇教程,我希望这对你有用。 :)

  • 方法一、
  • 方法二、
  • 方法三、