Im Backend unter Addons (1) auf Neues Addon (2) erstellen klicken.
Speichern klicken nicht vergessen!
Der Ordner nbproject kann unbeachtet bleiben!
Datei info.php:
In dieser Datei fehlt die Angaben für das Menü. Diese ergänzen wir jetzt mit:
// Variablen für Menüs $menu[1] = 'Hauptnavigation';
Die komplette Datei sieht dann so aus:
<?php /** * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see <http://www.gnu.org/licenses/>. * * @author Matthias Blatt * @copyright 2014, Matthias Blatt * @link http://blackcat-cms.org * @license http://www.gnu.org/licenses/gpl.html * @category CAT_Templates * @package LernTemplate * */ if (defined('CAT_PATH')) { if (defined('CAT_VERSION')) include(CAT_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']), E_USER_ERROR); } $template_name = "LernTemplate"; $template_directory = "lerntemplate"; $template_type = "template"; $template_function = "template"; $template_description = "Was kann das Template"; $template_version = "0.1"; $template_platform = "1.x"; $template_author = "Matthias Blatt"; $template_guid = "42A157F2-55AE-1642-F21D-62F1B51D9705"; $template_license = "GNU General Public License"; // Variablen für Menüs $menu[1] = 'Hauptnavigation';
Mit den Variablen $menü[x] werden die Menüs die im Frontend verfügbar sein sollen angelegt. Im obigen Beispiel gibt es ein Menü mit dem Namen Hauptnavigation. Die Namen sind frei wählbar.
Datei index.php:
Kann so bleiben wie Sie ist!
Datei icon.png:
Diese Grafik 32×32 pixel wird im Backend angezeigt. Sie ist nicht zwingend notwendig!
Datei header.inc.php:
Da schreib ich gar nicht viel zu (gibt es ja hier), kopiere die Datei aus dem mojito Verzeichnis 'templates/mojito/css/default/template.css' in das Verzeichnis 'templates/lerntemplate/css/default/template.css' und ändere die Pfadangabe in Zeile 51.
'css' => array( array( 'media' => 'all', 'file' => 'templates/lerntemplate/css/default/template.css' )
genauso in Zeile 69 und 73 (Zeilenangabe ohne Gewähr, können sich ja bei Version-updates ändern)
Anpassung index.tpl
In der ersten Zeile sollte immer
<!DOCTYPE html>
stehen, sonst nix. Also keine „Ich bin der Author, etc.!“
Den HTML-Header ersetzen.
Der HTML-Header besteht aus einer Reihe von Angaben, etwa META-Angaben, dem Seitentitel, der externen CSS-Datei, usw. Kurz, alles, was zwischen <head> und </head> steht.
Der komplette Bereich wird durch eine einzige Angabe „{get_page_headers()}“ ersetzt:
<!DOCTYPE html> <html> <head> {get_page_headers()} </head>
Der Aufruf {get_page_headers()} ist ein Platzhalter, der eine Funktion der Template Engine Dwoo aufruft. Diese füllt nun den HTML-Header mit allem, was notwendig ist - dem Seitentitel, dem CSS, den META-Angaben, eventuell zu ladenden JavaScripts, usw.
Der Platzhalter für den Seitentitel heißt {page_title()} Der Webseiten-Titel kann ebenfalls benutzt werden.
Das Ergebnis sieht also folgendermaßen aus:
<body> {page_title()} </br> {$WEBSITE_TITLE} </body>
Hier fällt nun ein Unterschied auf: Es gibt eine zweite Art von Platzhaltern, die keine Funktionen der Template Engine aufrufen, sondern Variablen repräsentieren. Grundsätzlich kann man sich folgendes merken:
Info für Websitebaker Überläufer!!!
Alles, was in WebsiteBaker eine Funktion war (z.B. page_content() oder page_title()), ist auch weiterhin eine Funktion. ({page_content()}, {page_title()}, …) Alles, was in WebsiteBaker eine Konstante war (z.B. WEBSITE_TITLE oder PAGE_ID), ist jetzt eine Variable. ({$WEBSITE_TITLE], {$PAGE_ID}, …)
Das Menü
{show_menu()}
Den Seiteninhalt ersetzen
Durch den Aufruf {page_content()}, ebenfalls ein Platzhalter wie schon oben beschrieben wird die Seite mit dem eigentlichen Inhalt befüllt.
{page_content()}
Der Fussinhalt wird mit {page_footer} dargestellt.
{page_footer}
Die komplette index.tpl ohne css Formatierung sieht so aus:
<!doctype html> <html> <head> {get_page_headers} </head> <body> {page_title()} </br> {$WEBSITE_TITLE} </br> {show_menu()} </br> {page_content()} </br> {page_footer} </br> </body> </html>
Mit CSS Formatierung
Die template.css und die index.tpl mit CSS- Formatierung. Es ist allerdinges eine sehr einfache css Formatierung!
template.css
* { margin: 0; padding: 0; } #kopf { width: 100%; min-height: 100px; border: 1px solid black; } #menü { position: absolute; width: 150px; min-height: 400px; border: 1px solid black; padding: 20px; } #inhalt { margin-left: 191px; width: 1000px; min-height: 400px; padding: 2%; border: 1px solid black; } #fuss { display: flex; width: 100%; min-height: 100px; border: 1px solid black; }
index.tpl
<!doctype html> <html> <head> {get_page_headers} </head> <body> <h1>{page_title()}</h1> <div id="kopf">{$WEBSITE_TITLE}</div> <div id="menü">{show_menu()}</div> <div id="inhalt">{page_content()}</div> <div id="fuss">{page_footer}</div> </body> </html>
Zum download, das komplette Template lerntemplate.zip