Richtlinien für Lepton Templates

Ein Template für das Lepton CMS zu erstellen geht ganz einfach! In diesem Beitrag stellen wir die wichtigsten php Aufrufe und Richtlinien vor.
Template Guidelines
Für die Erstellung eines Lepton Templates benötigt man drei Dateien.
1. index.php
2. info.php
3. screen.css
Die .css Datei kann natürlich auch anders lauten wie z.B. template.css oder main.css.
Der head-Bereich einer index.php
Schritt 1
Das inkludieren der class.secure.php
<?php
if (defined('WB_PATH')) {
include(WB_PATH.'/framework/class.secure.php');
} elseif (file_exists($_SERVER['DOCUMENT_ROOT'].'/framework/class.secure.php')) {
include($_SERVER['DOCUMENT_ROOT'].'/framework/class.secure.php');
} else {
$subs = explode('/', dirname($_SERVER['SCRIPT_NAME'])); $dir = $_SERVER['DOCUMENT_ROOT'];
$inc = false;
foreach ($subs as $sub) {
if (empty($sub)) continue; $dir .= '/'.$sub;
if (file_exists($dir.'/framework/class.secure.php')) {
include($dir.'/framework/class.secure.php'); $inc = true; break;
}
}
if (!$inc) trigger_error(sprintf("[ <b>%s</b> ] Can't include class.secure.php!", $_SERVER['SCRIPT_NAME']));
}
// end include class.secure.php
?>
Schritt 2
DOCTYPE-Definition
<!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"> // hier beginnt head <head>
Schritt 3
Meta-Angaben
<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(); ?>" />
Schritt 4
Das einbinden der css-Datei
<link href="<?php echo TEMPLATE_DIR; ?>/style.css" rel="stylesheet" type="text/css" />
Schritt 5
Der Page Titel
<title><?php page_title('', '[WEBSITE_TITLE]'); ?></title>
// hier endet head
</head>
Der Body der index.php
Beispiele für Menü, Content, Suche und Login.
<body>
<!---------- Menu ---------->
<ul>
<?php show_menu(1,0,1,true,'<li>[a][menu_title][/a]','</li>','','','',''); ?>
</ul>
<!-- ************** Eventuelles Unter-Menu ************** -->
<ul>
<?php show_menu(1,1,-1,true,'<li>[a][menu_title][/a]','</li>','','','',''); ?>
</ul>
<!---------- Menu ----------->
<!---------- Das Content ----------->
<?php page_content(1); ?>
<!---------- End Content ----------->
<!---------- Optionale Suche ---------->
<?php
if (SHOW_SEARCH) { ?>
<form action="<?php echo WB_URL; ?>/search/index.php" method="get">
<p><input type="hidden" name="referrer" value="<?php
echo defined('REFERRER_ID') ? REFERRER_ID : PAGE_ID; ?>" /></p>
<fieldset>
<legend><?php echo $TEXT['SEARCH']; ?>:</legend>
<input type="text" name="string" class="search_string" />
<input type="submit" name="wb_search" id="wb_search" value="<?php
echo $TEXT['SEARCH']; ?>" />
</fieldset>
</form>
<?php
} ?>
<!---------- Ende Optionale Suche ----------->
<!---------- Optionale Loginbox ------------>
<?php
if (FRONTEND_LOGIN == 'enabled' && VISIBILITY != 'private'
&& $wb->get_session('USER_ID') == '') { ?>
<!-- login form -->
<form name="login" id="login1" action="<?php
echo LOGIN_URL; ?>" method="post">
<fieldset>
<legend><?php echo $TEXT['LOGIN']; ?>:</legend>
<label for="username" accesskey="1">
<?php echo $TEXT['USERNAME']; ?>:</label>
<input type="text" name="username" id="username"
style="text-transform: lowercase;" /><br />
<label for="password" accesskey="2"><?php echo $TEXT['PASSWORD']; ?>:</label>
<input type="password" name="password" id="password" /><br />
<input type="submit" name="wb_login" id="wb_login" value="<?php
echo $MENU['LOGIN']; ?>"/><br />
<!-- forgotten details link -->
<a href="<?php echo FORGOT_URL; ?>"><?php echo $TEXT['FORGOT_DETAILS']; ?></a>
<!-- frontend signup -->
<?php
if (is_numeric(FRONTEND_SIGNUP)) { ?>
<a href="<?php echo SIGNUP_URL; ?>"><?php echo $TEXT['SIGNUP']; ?></a>
<?php } ?>
</fieldset>
</form>
<?php
} elseif (FRONTEND_LOGIN == 'enabled' && is_numeric($wb->get_session('USER_ID'))) { ?>
<!-- logout form -->
<form name="logout" id="logout1" action="<?php echo LOGOUT_URL; ?>" method="post">
<fieldset>
<legend><?php echo $TEXT['LOGGED_IN']; ?>:</legend>
<p><?php echo $TEXT['WELCOME_BACK']; ?>, <?php echo $wb->get_display_name(); ?></p>
<input type="submit" name="wb_login" id="wb_login" value="<?php
echo $MENU['LOGOUT']; ?>" />
<!-- edit user preferences -->
<p><a href="<?php echo PREFERENCES_URL; ?>"><?php echo $MENU['PREFERENCES']; ?></a></p>
</fieldset>
</form>
<?php
} ?>
<!----------- Ende der Optionalen Loginbox -------------->
</body>
</html>
Die info.php
Allgemeinen Informationen was im Frontend und Backend angezeigt werden soll. Hier werden Teplatename, Speicherort, Autor, Lizenz, Beschreibung und zusätzliche Menüs sowie Inhaltsblöcke angelegt.
Im Beispiel heißt das Template Lepton-1
Im Beispiel heißt das Template Lepton-1
<?php
if (defined('WB_PATH')) {
include(WB_PATH.'/framework/class.secure.php');
} elseif (file_exists($_SERVER['DOCUMENT_ROOT'].'/framework/class.secure.php')) {
include($_SERVER['DOCUMENT_ROOT'].'/framework/class.secure.php');
} else {
$subs = explode('/', dirname($_SERVER['SCRIPT_NAME'])); $dir = $_SERVER['DOCUMENT_ROOT'];
$inc = false;
foreach ($subs as $sub) {
if (empty($sub)) continue; $dir .= '/'.$sub;
if (file_exists($dir.'/framework/class.secure.php')) {
include($dir.'/framework/class.secure.php'); $inc = true; break;
}
}
if (!$inc) trigger_error(sprintf("[ <b>%s</b> ] Can't include class.secure.php!", $_SERVER['SCRIPT_NAME']));
}
// end include class.secure.php
$template_directory = 'lepton-1;
$template_name = 'Lepton-1';
$template_function = 'template';
$template_version = '1.1';
$template_platform = '1.0';
$template_author = 'Ihr Name';
$template_license = 'Ihre Lizenz';
$template_license_terms = 'Ihre Lizenzbedingungen evt. Backlink';
$template_guid = 'a1619a06-4e52-44d9-bf1f-96f9809bac34333';
$template_description = 'Ihre Beschreibung ';
$block[1] = 'content-1';
$block[2] = 'content-2';
$menu[1] = 'Hauptnavigation';
?>

Hallo Jürgen,
vielen Dank für den prima Artikel.
Kannst Du sagen, wofür die class.secure.php nötig ist? Ich war der Meinung, das Template-System von LEPTON funktioniert weitestgehend noch gleich dem von WebsiteBaker – mit Ausnahme einiger Ergänzungen in der info.php. Doch unter WB war das Inkludieren der Datei nicht nötig (dort gab es diese ja auch gar nicht). Ich würde gern wissen, was ihr Zweck ist. Habe mir schon den Code angesehen (mit dem Code-Kommentar „THIS IS A TEMPORARY AND SMALL SOLUTION!“) aber werde nicht so richtig schlau daraus. Weißt Du mehr?
Viele Grüße
André