{"id":992,"date":"2018-03-30T13:56:59","date_gmt":"2018-03-30T11:56:59","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=992"},"modified":"2018-03-30T15:57:48","modified_gmt":"2018-03-30T13:57:48","slug":"joomla-template-2-die-index-php","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/03\/30\/joomla-template-2-die-index-php\/","title":{"rendered":"Joomla-Template 2: die index.php"},"content":{"rendered":"<h2>Das Grundger\u00fcst f\u00fcr den Seitenaufbau: die index.php<\/h2>\n<p>Diese kann man sich bei einem anderen Template mopsen, oder eine der vielen Online-Vorlagen kopieren und modifizieren, z.B. bei <a href=\"http:\/\/joomla-templates-erstellen.de\/joomla-template-installation.htm\">joomla templates erstellen<\/a> (Template-Installation) als zip-Datei herunterladen oder <a href=\"https:\/\/docs.joomla.org\/Understanding_Joomla!_templates#Template_files\">in der Joomla-Doku nachlesen<\/a>. Meine index.php ist ein kleiner Bastard, den ich aus mehreren Vorlagen zusammenkopiert habe. Der Dateiheader sieht folgendermassen aus:<\/p>\n<pre>&lt;?php\r\n\r\ndefined('_JEXEC') or die;\r\n\r\n\r\n\/* The following line gets the application object for things like displaying the site name *\/\r\n$app = JFactory::getApplication();\r\n?&gt;\r\n\r\n&lt;!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd\"&gt;\r\n&lt;html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"&gt;\r\n&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\" \/&gt;\r\n&lt;jdoc:include type=\"head\" \/&gt;\r\n&lt;link rel=\"stylesheet\" href=\"&lt;?php echo $this-&gt;baseurl ?&gt;\/templates\/&lt;?php echo $this-&gt;template ?&gt;\/css\/formate.css\" type=\"text\/css\" \/&gt;<\/pre>\n<p>Im einleitenden PHP-Teil wird das Joomla-Applicationobject geladen, damit wir auf Systemvariable wie z.B. den Namen der Website zugreifen k\u00f6nnen. Dann folgt ein HTML-Header (hab ich auch so aus der Joomla-Doku kopiert) mit Einbindung unseres Stylesheets. Die Zeile:<\/p>\n<pre>&lt;jdoc:include type=\"head\" \/&gt;<\/pre>\n<p>erzeugt einen kompletten Header, das kann man sich im Seitenquelltext anschauen, hier mal ein Ausschnitt:<\/p>\n<div id=\"attachment_989\" style=\"width: 536px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-989\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-989\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/head.jpg\" alt=\"head\" width=\"526\" height=\"260\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/head.jpg 526w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/head-300x148.jpg 300w\" sizes=\"(max-width: 526px) 100vw, 526px\" \/><p id=\"caption-attachment-989\" class=\"wp-caption-text\">head<\/p><\/div>\n<p>Jetzt wirds dann aber interessant, denn jetzt kommen die Inhalte. In der <a href=\"https:\/\/docs.joomla.org\/Creating_a_basic_index_file\">Joomla-Doku<\/a> ist ein sehr basic gehaltenes Beispiel gezeigt:<\/p>\n<pre><span class=\"o\">&lt;<\/span><span class=\"nx\">body<\/span><span class=\"o\">&gt;<\/span>\r\n<span class=\"o\">&lt;<\/span><span class=\"nx\">jdoc<\/span><span class=\"o\">:<\/span><span class=\"k\">include<\/span> <span class=\"nx\">type<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"modules\"<\/span> <span class=\"nx\">name<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"top\"<\/span> <span class=\"o\">\/&gt;<\/span> \r\n<span class=\"o\">&lt;<\/span><span class=\"nx\">jdoc<\/span><span class=\"o\">:<\/span><span class=\"k\">include<\/span> <span class=\"nx\">type<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"component\"<\/span> <span class=\"o\">\/&gt;<\/span>\r\n<span class=\"o\">&lt;<\/span><span class=\"nx\">jdoc<\/span><span class=\"o\">:<\/span><span class=\"k\">include<\/span> <span class=\"nx\">type<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"modules\"<\/span> <span class=\"nx\">name<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"bottom\"<\/span> <span class=\"o\">\/&gt;<\/span>\r\n<span class=\"o\">&lt;\/<\/span><span class=\"nx\">body<\/span><span class=\"o\">&gt;\r\n\r\n<\/span><\/pre>\n<p>Erstaunlich, aber das reicht f\u00fcr den Anfang.<\/p>\n<ul>\n<li>In der zweiten Zeile wird eine Modulposition namens &#8222;top&#8220; erzeugt und Joomla mitgeteilt, dass es hier Module laden kann.<\/li>\n<li>In der dritten Zeile wird die Component geladen, das ist der Kern der Seite und enth\u00e4lt den relevanten Beitrag.<\/li>\n<li>In der vierten Zeile wird eine zweite Modulposition namens Bottom erzeugt.<\/li>\n<\/ul>\n<p>Das Ganze passiert innerhalb des body-tags und reicht schon aus, um eine simple Seite anzuzeigen. Das ganze m\u00fcssen wir jetzt auf die Modulpositionen anpassen, die wir in unserer templateDetails.xml definiert haben. Kurz zur Erinnerung, das sah im ersten Ansatz so aus:<\/p>\n<pre>&lt;positions&gt;\r\n &lt;position&gt;oben&lt;\/position&gt;\r\n &lt;position&gt;left&lt;\/position&gt;\r\n &lt;position&gt;breadcrumb&lt;\/position&gt;\r\n &lt;position&gt;search&lt;\/position&gt;\r\n &lt;position&gt;right&lt;\/position&gt;\r\n &lt;\/positions&gt;<\/pre>\n<p>Wir packen das Ganze noch in einen div namens wrap, der hat nichts anderes zu tun als die Breite auf 1260px zu setzen, und dann sieht unser body erstmal so aus:<\/p>\n<pre>&lt;div id=\"wrap\"&gt;\r\n&lt;div id=\"header\"&gt;\r\n&lt;a href=\"&lt;?php echo $this-&gt;baseurl ?&gt;\"&gt;&lt;img src=\"&lt;?php echo $this-&gt;baseurl ?&gt;\/templates\/&lt;?php echo $this-&gt;template ?&gt;\/images\/logo.jpg\" alt=\"Logo\" \/&gt;&lt;\/a&gt;\r\n&lt;!-- end #header --&gt;\r\n&lt;\/div&gt;\r\n\r\n\u00a0\u00a0 \u00a0&lt;div id = \"oben\"&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"modules\" name=\"oben\" style=\"xhtml\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/div&gt;\r\n\r\n\r\n\u00a0\u00a0 \u00a0&lt;div id=\"sidebarLeft\"&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"modules\" name=\"left\" style=\"xhtml\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;!-- end #sidebarLeft --&gt;&lt;\/div&gt;\r\n\r\n\u00a0\u00a0 \u00a0&lt;div id=\"content\"&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"component\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"message\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"modules\" name=\"debug\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;!-- end #content --&gt;&lt;\/div&gt;\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0&lt;div id=\"sidebarRight\"&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"module\" name=\"search\" style=\"xhtml\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"modules\" name=\"right\" style=\"xhtml\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;!-- end #sidebar2 --&gt;&lt;\/div&gt;\r\n\r\n&lt;!-- end #wrap --&gt;&lt;\/div&gt;<\/pre>\n<p>Nicht irritieren lassen, ich hab die breadcrumbs und den footer einfach weggelassen.<\/p>\n<p>Aber ansonsten ist der Aufbau eigentlich eher einfach. Erst definiere ich mir eine header-div, die tut nichts anderes als mein Headerbild aufnehmen und einen Link auf die Startseite setzen, das passiert mit der Zeile:<\/p>\n<p><em>&lt;a href=&#8220;&lt;?php echo $this-&gt;baseurl ?&gt;&#8220;&gt;&lt;img src=&#8220;&lt;?php echo $this-&gt;baseurl ?&gt;\/templates\/&lt;?php echo $this-&gt;template ?&gt;\/images\/logo.jpg&#8220; alt=&#8220;Logo&#8220; \/&gt;&lt;\/a&gt;<\/em><\/p>\n<p>Hab ich aus der Joomla-Doku so kopiert und nur Pfad und Namen zur Bilddatei angepasst.<\/p>\n<p>Dann gibt f\u00fcr jede Modulposition eine div, und der wird mitgeteilt wie sie heisst und was sie zu tun hat. Wir fangen oben an:<\/p>\n<pre>&lt;div id = \"oben\"&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"modules\" name=\"oben\" style=\"xhtml\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/div&gt;<\/pre>\n<p>Hier setze ich sp\u00e4ter mein Modul f\u00fcr das Hauptmen\u00fc rein, dar\u00fcber nachher mehr.<\/p>\n<p>Die linke Seitenleiste kriegt den Platz f\u00fcr meine neuesten Beitr\u00e4ge reserviert, das ist ebenfalls ein Modul.<\/p>\n<pre>&lt;div id=\"sidebarLeft\"&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"modules\" name=\"left\" style=\"xhtml\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;!-- end #sidebarLeft --&gt;&lt;\/div&gt;<\/pre>\n<p>In der Mitte ist Platz f\u00fcr unseren Seiteninhalt, die \u00fcberaus wichtige Component, und f\u00fcr Fehlermeldungen:<\/p>\n<pre>&lt;div id=\"content\"&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"component\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"message\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;jdoc:include type=\"modules\" name=\"debug\" \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;!-- end #content --&gt;&lt;\/div&gt;<\/pre>\n<p>In der rechten Seitenleiste platzieren wir das Suchformular und eine weiter Modulposition, in die kommt nachher meine Liste mit den Rezeptkategorien.<\/p>\n<pre>&lt;div id=\"sidebarRight\"&gt;\r\n &lt;jdoc:include type=\"module\" name=\"search\" style=\"xhtml\" \/&gt;\r\n &lt;jdoc:include type=\"modules\" name=\"right\" style=\"xhtml\" \/&gt;\r\n &lt;!-- end #sidebar2 --&gt;&lt;\/div&gt;<\/pre>\n<p>Das wars auch schon. Jetzt k\u00f6nnten wir unser (noch komplett ungestyltes) Template schon mal anschauen.<\/p>\n<h2>Die Installation<\/h2>\n<p>Wir packen jetzt den gesamten Inhalt unseres Arbeitsordners in eine ZIP-Archiv:<\/p>\n<div id=\"attachment_994\" style=\"width: 301px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-994\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-994\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/zip-datei-erzeugen.jpg\" alt=\"zip-datei-erzeugen\" width=\"291\" height=\"624\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/zip-datei-erzeugen.jpg 291w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/zip-datei-erzeugen-140x300.jpg 140w\" sizes=\"(max-width: 291px) 100vw, 291px\" \/><p id=\"caption-attachment-994\" class=\"wp-caption-text\">zip-datei-erzeugen<\/p><\/div>\n<p>Dann gehen wir im Kontrollzentrum unter Erweiterungen-&gt;Verwalten-&gt;Installieren-&gt;Paketdatei hochladen und laden unser ZIP-Archiv. Ich hatte beim ersten Versuch einen Fehler, weil in der templateDetails.xml eine falsche Dateieendung f\u00fcr das Logo angegeben war, bitte gegebenenfalls korrigieren:<\/p>\n<p>&lt;filename&gt;images\/logo.<strong>jpg<\/strong>&lt;\/filename&gt;<\/p>\n<p>Das sollte es aber gewesen sein, unter Erweiterungen-&gt;Templates-&gt;Stile sollte jetzt unser neues Template auftauchen, und wir k\u00f6nnen es als Standard setzen.<\/p>\n<div id=\"attachment_996\" style=\"width: 1022px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-996\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-996\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/standar-setzen-1.jpg\" alt=\"standard-setzen\" width=\"1012\" height=\"497\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/standar-setzen-1.jpg 1012w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/standar-setzen-1-300x147.jpg 300w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/standar-setzen-1-768x377.jpg 768w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/standar-setzen-1-624x306.jpg 624w\" sizes=\"(max-width: 1012px) 100vw, 1012px\" \/><p id=\"caption-attachment-996\" class=\"wp-caption-text\">standard-setzen<\/p><\/div>\n<p>Wenn wir jetzt unsere Webseite anschauen, kommt das nat\u00fcrlich noch sehr traurig weil komplett ungestylt daher:<\/p>\n<div id=\"attachment_997\" style=\"width: 1267px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-997\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-997\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/ungestylt.jpg\" alt=\"ungestylt\" width=\"1257\" height=\"651\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/ungestylt.jpg 1257w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/ungestylt-300x155.jpg 300w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/ungestylt-768x398.jpg 768w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/ungestylt-1024x530.jpg 1024w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/ungestylt-624x323.jpg 624w\" sizes=\"(max-width: 1257px) 100vw, 1257px\" \/><p id=\"caption-attachment-997\" class=\"wp-caption-text\">ungestylt<\/p><\/div>\n<p>Aber darum k\u00fcmmern wir uns gleich. Zuerst schauen wir uns mal an, was wir auf welche Modulposition geladen haben, das ist n\u00e4mlich gar nicht viel:<\/p>\n<div id=\"attachment_998\" style=\"width: 1133px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-998\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-998\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/modulpositionen.jpg\" alt=\"modulpositionen\" width=\"1123\" height=\"462\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/modulpositionen.jpg 1123w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/modulpositionen-300x123.jpg 300w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/modulpositionen-768x316.jpg 768w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/modulpositionen-1024x421.jpg 1024w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/03\/modulpositionen-624x257.jpg 624w\" sizes=\"(max-width: 1123px) 100vw, 1123px\" \/><p id=\"caption-attachment-998\" class=\"wp-caption-text\">modulpositionen<\/p><\/div>\n<p>Auf left sitzen die neuesten Beitr\u00e4ge, auf oben das Main Men\u00fc, und auf right die Rezeptkategorien. Die Suche ist hier leider nicht mit im Bild, die sitzt auf Position search. Das wars auch schon!<\/p>\n<p>Jetzt gehen wir dran, unseren Seitenaufbau zu stylen. Was jetzt noch kommt ist fast reines CSS , und daf\u00fcr gibt es einen neuen Beitrag.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Grundger\u00fcst f\u00fcr den Seitenaufbau: die index.php Diese kann man sich bei einem anderen Template mopsen, oder eine der vielen Online-Vorlagen kopieren und modifizieren, z.B. bei joomla templates erstellen (Template-Installation) als zip-Datei herunterladen oder in der Joomla-Doku nachlesen. Meine index.php ist ein kleiner Bastard, den ich aus mehreren Vorlagen zusammenkopiert habe. Der Dateiheader sieht folgendermassen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[44],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/992"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=992"}],"version-history":[{"count":6,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/992\/revisions"}],"predecessor-version":[{"id":1005,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/992\/revisions\/1005"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}