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é