ID #1062

Von Layouts, Containern und Meta-Tags

Layouts

Layouts bilden die designtechnische Grundlage einer Website. Layouts beinhalten in erster Linie HTML Code und die dazugehörigen Bilder, die in einem separaten Ordner in dem Verzeichnis eines Mandanten gespeichert werden.
Layouts sind immer genau einem Mandanten in Contenido zugeordnet und sind sprachenunabhängig. Die Zuordnung zu einem Mandanten in Contenido bewirkt, dass ein Layout nur in diesem einen Mandanten verfügbar ist und in anderen Mandanten nicht angezeigt wird und nicht nutzbar ist. Jedem Mandanten können n Sprachen zugeordnet werden. Die definierten Layouts und auch Module stehen in allen Sprachen zur Verfügung. Eine Einschränkung des Zugriffs kann über die Vergabe von Rechten erfolgen.



Aufbau von Layouts

Die Layouts finden sich in Contenido unter ‚Style / Layouts’.
Ein Layout kann in Contenido erstellt, bearbeitet und gelöscht werden, soweit die entsprechenden Rechte vorhanden sind. Ein Layout besteht aus genau einem Namen, genau einer Beschreibung und einem Codebaustein.
Der Name des Layouts wird bei der Anzeige der Layouts in der Übersicht genutzt, sowie bei der Erstellung eines Templates. Der Name sollte kurz, prägnant und möglichst deskriptiv sein (z.B. Startseite oder Doorpage), damit der jeweilige Redakteur bei der Erstellung eines Templates einen schnellen Überblick über die vorhandenen Layouts erhält.
Bei der Erstellung eines Templates wird ebenfalls die Beschreibung des gewählten Layouts angezeigt.
Der Codebaustein eines Layouts kann HTML, PHP, CSS-Angaben, Links zu Bildern und CSS-Dateien und die nachstehend beschriebenen Container enthalten.

Speicherung von Layouts

Die erstellten Layouts werden in der Datenbank gespeichert. Zur Speicherung wird die Tabelle con_lay benutzt. Das Prefix ‚con’ kann durch ein beliebiges Prefix ersetzt werden. Die Datenfelder in der Tabelle sind:

idlay [int,10]
idclient [int,10]
name [varchar,255]
description [text]
deletable [tinyint,1]
code [text]
author[varchar,32]
created[datetime]
lastmodified[datetime].

Jeder Mandant besitzt einen eigenen Ordner mit den entsprechenden Unterordnern. Bei den Unterordnern existiert jeweils ein Ordner für die Bilder der Website, die im Rahmen der Layouts genutzt werden, sowie ein Ordner für CSS-Dateien und Skripte. Die CSS-Dateien und Skripte sind jeweils auch über einen Skript- und einen Style-Editor im Contenido Backend zugänglich.

Ordner des Mandanten:
-> images (Bilder für das Layout)
-> scripts (JavaScript-Dateien)
-> styles (Cascading Style Sheets – CSS-Dateien)

Container

HTML-Code gehört zu den zentralen Bestandteilen eines Layouts. Dazu gehören auch die Angaben zu CSS-, js-Dateien und Pfade zu Bildern. Damit aber ein Layout in Contenido wirklich verwendet werden kann, ist es notwendig Container für Module zu definieren. Die Container sind als Platzhalter zu verstehen, die bei der Erstellung eines Templates mit den gewünschten Modulen befüllt werden können.

Containerspezifikation ab Version 4.5.0 und folgende

Wichtig: Container aus den Versionen ab 4.3.1 bis 4.4.x können weiterhin verwendet werden und werden in vollem Umfang weiterhin unterstützt.
Die Container in einem Layout werden durch die Variable
definiert. Das X steht für eine beliebige ganze Zahl. Ein Container kann an jede beliebige Stelle in einem Layout positioniert werden.
Das obige Beispiel ist aber noch nicht vollständig und ist durch einige Definitionen zu ergänzen, damit ergibt sich dann z.B. für den ersten Container das folgende Bild:
Bild / Logo 1
Die verwendeten Spezifikationen haben folgende Bedeutung:

id="1"
Die ID ist die eindeutige Klassifizierung eines Containers und wird in der Anzeige der Container bei der Templateerstellung abgebildet. Für jeden Container muss eine eindeutige ID vergeben werden. Wenn eine ID mehrfach verwendet wird, dann erscheint das gleiche Modul in allen Containern mit der gleichen ID. Die ID wird auch im visual edit Modus bei der Templateerstellung vor das jeweilige Drop down gesetzt. Diese Spezifikation ist Pflicht.

name="Bild links oben"
Der Name des Containers wird ebenfalls bei der Erstellung eines Templates angezeigt. Der Name dient lediglich der Identifikation und kann auch ausgelassen werden.

types="Bild/Logo"
Die verschiedenen Containertypen sind eng mit den Modulen und der Templateerstellung verzahnt. Jeder Container und jedes Modul kann mit einem Typen versehen werden. Bei der Erstellung eines Templates wird für jeden Container geprüft, ob ein oder mehrere Module mit dem gleichen Typ vorhanden sind (z.B. in einem Container steht types="Navigation" und zwei Modulen haben ebenfalls den Typ Navigation, dann werden nur diese beiden Module in dem Container bei der Erstellung eines Templates angezeigt. Die types-Deklaration ist optional wird die Deklaration nicht genutzt oder leer (types="") gelassen, dann werden alle Module bei der Erstellung eines Templates angezeigt.

mode="mandatory"
Der Modus definiert, ob und wie Module in einem Container ausgewählt werden können. Für mode= gibt es drei vordefinierte Ausprägungen ("optional", "mandatory" und "fixed"). Mit ‚optional’ kann ein Modul bei der Erstellung eines Templates ausgewählt werden, muss aber nicht. Bei ‚mandatory’ muss ein Modul ausgewählt werden, die Option ‚- none –‚ steht nicht zur Verfügung. Bei ‚fixed’ wird das unter default definierte Modul verwendet, andere Module stehen im Drop down bei der Templateerstellung nicht zur Verfügung. Wird die Deklaration mode nicht verwendet, oder leer gelassen, dann wird per default ‚optional’ verwendet.

default="Bild(1)"
Mit der Deklaration 'default' wird das default-Modul bei der Erstellung einesTemplates beeinflusst. Das eingestellte default-Modul wird immer direkt angezeigt bei der Editierung eines Templates. Das default-Modul muss aus der entsprechenden Gruppe der Modultypen stammen. Ein Modul eines anderen Typs wird nicht angezeigt. Die Deklaration 'default' ist optional oder kann auch ohne Wert (default="") genutzt werden.

Containerspezifikation ab Version 4.3.2 bis 4.4.x

Die Container in einem Layout werden durch die Variable
CMS_CONTAINER[X]
definiert. Das X steht für eine beliebige ganze Zahl. Ein Container kann an jede beliebige Stelle in einem Layout positioniert werden. Bei der Definition eines Containers ist zu beachten, dass dieser in Grossbuchstaben geschrieben wird, nicht als 'cms_container' oder 'Cms_Container' und eine eindeutige Nummerierung besitzt.

Die Nummerierung sollte fortlaufend erfolgen. Eine doppelte Vergabe von Nummern in einem Layout führt zu Problemen, die sich bei der Erstellung eines Templates oder spätestens bei der Nutzung dieses Templates bemerkbar machen.

Wichtig: Bei der Verwendung der Container hat sich zu den vorherigen Versionen eine Änderung ergeben. In den Versionen bis 4.3 wurden die Container im PHP-Mode definiert, z.B.:
Diese Art der Definition führt bei den neuen Versionen bei der Verwendung von Modulen zu parse-Errors.

Meta-Tags

Titel und Meta-tag Angaben können, sollte aber nicht, definiert werden, da diese bei den Artikeleigenschaften von den Redakteuren hinterlegt werden können. Angaben aus den Artikeleigenschaften überschreiben die Angaben in den Layouts.

Werden bei den Artikeln kein Titel und keine Meta-tags definiert, so werden weder ein vorhandener Titel noch Meta-tags im Layout überschrieben.

Tags: -

Verwandte Artikel:

Es ist möglich, diese FAQ zu kommentieren.

Kommentar von Norbert Schellhammer:
was mir auf dieser Seite fehlt: Wie kriege ich ein Bild (z.B. \"HalloBild.gif\") in den Container[z.B.1]
Geschrieben am: 2038-01-19 04:14

Kommentar von Joerg Knoerchen:
Ich wuerde es besser finden, wenn man irgendwo zentral META Angaben machen könnte und diese verwendet werden, wenn in einem Artikel keine Meta-Angaben gemacht werden, als META-Angaben einfach fehlen zu lassen!
Geschrieben am: 2038-01-19 04:14

Kommentar von Ayshe Peters:
@Joerg: Man kann doch Meta-Tags zentral definieren, und zwar im Layout. Nur wenn man zusätzlich Meta-Tags in den Eigenschaften eines Artikels definiert, werden die aus dem Layout überschrieben.
Geschrieben am: 2038-01-19 04:14