Eine Website mit Hilfe eines Droplets vorübergehend sperren

Es gibt Situationen, bei denen die Öffentlichkeit nicht oder noch nicht auf einer Website erwünscht ist, weil z.B. gerade ein Relaunch vorbereitet wird und Webdesigner sowie Redakteure ungestört Inhalte einpflegen oder die eine oder andere Funktionalität ausprobieren möchten.

Website vorübergehend geschlossen

Hierfür wird eine Lösung benötigt, die Besucher der Website auf eine Hinweisseite (Sperrseite) umgeleitet und den Administratoren bzw. Redakteuren einen uneingeschränkten Zugriff ermöglicht.

Die Umsetzung ist recht einfach und erfolgt in 4 Schritten:

1. Template für die Hinweisseite

Für die Hinweisseite sollte ein anderes Template verwendet werden als für die normalen Webseiten. Da diese Seite für die Besucher eine Sackgasse bildet ("Bis hier hin und nicht weiter") wird keinerlei Navigation benötigt. Die Seite kann schlicht sowie einfach sein und sollte den Besucher über den Grund der vorläufigen Sperrung sowie über Kontaktmöglichkeiten (E-Mail, Telefon) zum Websitebetreiber informieren.

Für die meisten Fälle wird das Blank Template völlig ausreichen, das zusammen mit Website Baker installiert wird, sollen anspruchsvollere Ideen umsetzen werden, erstellen Sie sich einfach ein geeignetes Template für die Hinweisseite.

2. Hinweisseite erstellen

Beispiel für eine vorläufig gesperrte WebsiteLegen Sie eine neue Seite an und legen Sie den Typ auf WYSIWYG, das ||Template|| entweder auf Blank Template oder das von Ihnen für die Hinweisseite erstellte Template und die Sichtbarkeit der Seite auf Versteckt fest.

Gestalten Sie die Seite entsprechend Ihren Vorstellungen und speichern Sie sie ab.

Merken Sie sich bitte die PAGE_ID dieser Seite.

3. Erstellen des Droplets site_locked

Den Aufruf der Hinweisseite übernimmt ein Droplet. Öffnen Sie bitte unter den Admin-Tools die Droplets und fügen Sie ein neues Droplet ein. Übernehmen Sie bitte die folgenden Vorgaben:

Name: site_locked

Beschreibung: Lock Website temporarily

Code:


//:Lock website temporarily
//:[[site_locked?page=PAGE_ID&admin=1]] - all parameters are optional
// $Id: site_locked.php 3 2009-11-23 04:22:02Z ralf $
/*
 * DEFAULT VALUE for $locked_page_id: -1
 * Insert the PAGE_ID of the Page which should be shown,
 * if the website is temporarily locked and not available.
 * This Page SHOULD USE ANOTHER TEMPLATE then the page which
 * is calling this droplet!    
 */
// change $locked_page_id to the PAGE_ID of your "Site is locked" Page
$locked_page_id = -1;
// or call this droplet with the param $page to tell the script the PAGE_ID
if (isset($page)) $locked_page_id = $page;
(isset($admin)) ? $admin_only = (bool) $admin : $admin_only = false;
if (($locked_page_id < 1) || ($locked_page_id == PAGE_ID)) {
  // nothing to do...
  return ' ';
}
else {
  global $wb, $database;
  if ((($admin_only == true) && (($wb->is_authenticated()) && (in_array(1,$wb->get_groups_id())))) ||
      (($admin_only == false) && ($wb->is_authenticated()))) {
    // user is authenticated and may access to the normal pages
    return '<script type="text/javascript">'.
    'document.title = "[WEBSITE LOCKED] "+document.title;'.
    '</script>';
  }
  else {
    $query = "SELECT `link` from ".TABLE_PREFIX."pages where `page_id`=".$locked_page_id;
    $result = $database->query ($query);
    if ($result) {
      $data = $result->fetchRow();	
      $url = WB_URL.PAGES_DIRECTORY.$data['link'].PAGE_EXTENSION;
      return '<script type="text/javascript">'.
      'window.location = "'.$url.'";'.
      '</script>'.
      '<meta http-equiv="refresh" content="0; url='.$url.'">';
    }
    else return 'ERROR: '.$database->get_error();
  }
}

Das Droplet wird im Kopfbereich des verwendeten Standard Template eingetragen und prüft, ob der Aufrufer der Seite angemeldet bzw. berechtigt ist oder nicht.

Berechtigten (angemeldeten) Besuchern werden die normalen Webseiten angezeigt, wobei in der Titelzeile des Browser zusätzätzlich der Hinweis [WEBSITE LOCKED] angezeigt wird.

Alle anderen Besucher werden auf die Hinweisseite weitergeleitet, deren PAGE_ID in der Variablen $locked_page_id festgelegt wird.

Um das Droplet zu aktivieren, tragen Sie bei $locked_page_id die PAGE_ID Ihrer Hinweisseite ein, um das Droplet wieder zu deaktivieren tragen Sie $locked_page_id = -1 ein.

4. Standard Template(s) anpassen

Öffnen Sie die index.php des von Ihnen verwendeten Standard Template, verwenden Sie hierzu z.B. das Add-on Addon File Editor (AFE)

Fügen Sie den Aufruf für das Droplet [[site_locked]] im Kopfbereich nach dem <title> Tag ein:


<?php
// prevent this file from being accessed directly
if (!defined('WB_PATH')) die(header('Location: ../../../index.php'));
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=<?php 
  echo defined('DEFAULT_CHARSET') ? DEFAULT_CHARSET : 'utf-8'; ?>" />
  <meta name="description" content="<?php page_description(); ?>" />
  <meta name="keywords" content="<?php page_keywords(); ?>" />
  <?php 
  // automatically include optional WB module files (frontend.css, frontend.js)
	if (function_exists('register_frontend_modfiles')) {
		register_frontend_modfiles('css');
		register_frontend_modfiles('js');
	} ?>
	<link rel="stylesheet" type="text/css" href="<?php 
		echo TEMPLATE_DIR; ?>/template.css" media="screen,projection" />
	<link rel="stylesheet" type="text/css" href="<?php 
		echo TEMPLATE_DIR; ?>/print.css" media="print" />
	<title><?php page_title('', '[WEBSITE_TITLE]'); ?></title>
  [[site_locked]]
</head>
<body>
...
</body>
</html>

WebsiteBaker Tipps & Tricks bei TwitterFalls Sie das Add-on Simple PageHead verwenden, fügen Sie den Aufruf für das Droplet [[site_locked]] nach simplepagehead() ein.

Das war's. Wenn Sie Ihre Website vorübergehend sperren möchten, tragen Sie im Code für das Droplet site_locked lediglich die PAGE_ID Ihrer Hinweisseite ein und schon ist Ihre Website für Besucher gesperrt.

Bitte helfen Sie mit, diesen Tipp zu verbessern oder zu ergänzen!

Ralf Hertsch

Ralf Hertsch, 22.11.2009