Dies ist eine alte Version des Dokuments!
Blackcat Template erstellen
Im Backend unter Addons (1) auf Neues Addon (2) erstellen klicken.
z.B. Template mit dem Thema Natur. Das Template hat zwei Menüs und ein News Block auf der linken Seite.
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:
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, damit es etwas schöner wird, 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>
!!! noch nicht fertig !!!