NanoCMS Flexmodule

Aus Melin DokuWiki

Wechseln zu: Navigation, Suche

Flexmodule sind HTML-Bausteine, auf die ein User beim Erstellen eines Artikels zugreifen und die er in beliebiger Reihenfolge kombinieren kann. Einsatzbereiche sind Themenlisten, Aufzählungen, Teaserblöcke und vieles mehr.

Newsletter mit Flexmodulen
Newsletter mit Flexmodulen


Jedes Theme kann über beliebig viele Flexmodule verfügen. Über Valid- und Invalidcodes wird bestimmt, welche Flexmodule über die Flexmodulleiste im Template benutzt werden können.


Inhaltsverzeichnis

[bearbeiten] Begriffe

[bearbeiten] Flexmodul

Als Flexmodul wird die einzelne Datei, die statische oder dynamische Bestandteile des Templates enthält, bezeichnet. Flexmodule können entweder HTML oder Perlcode zur Erzeugung von HTML enthalten.

[bearbeiten] Flexmodulleiste

Über die Flexmodulleiste können die vorhandenen Flexmodule im Template ausgewählt werden. Ein Template kann mehrere Flexmodulleisten enthalten.

[bearbeiten] Flexmodulinstanz

Die Flexmodulinstanz ist ein mit der Flexmodulleiste in das Template eingefügtes Flexmodul. Von einem Flexmodul können in einer Flexmodulleiste beliebig viele Instanzen erzeugt werden.

[bearbeiten] Schlüsselwort FLEX_NAME

Der Name des Flexmoduls im Template. Da in einem Template verschiedene Flexmodulleisten denkbar sind, hat jede Leiste einen eigenen Namen, der über %FLEX_NAME% angesprochen werden kann.

[bearbeiten] Schlüsselwort FLEX_ID

Jedes neue Flexmodul das vom User im Template hinzugeklickt wird erhält eine eigene FLEX_ID. Diese ID bleibt für die Lebenszeit des Flexmoduls gleich. Zusammen mit dem FLEX_NAME ergibt sich ein eindeutiger Bezeichner für dieses Flexmodul.

[bearbeiten] Schlüsselwort FLEX_NR

Die Flexnummer wird hauptsächlich zur Numerierung herangezogen. Da Nutzer die Flexmodule untereinander verschieben können ist es möglich daß die FLEX_NR sich im Gegensatz zur FLEX_ID ändert.

[bearbeiten] Schlüsselwort FLEX_MAX

Die höchste vergebene FLEX_NR.

[bearbeiten] Aufbau eines Flexmoduls

Flexmodule werden in einem Unterordner "flex" des Themes hinterlegt und haben die Endung ".flex" - egal, ob sie Text oder HTML beinhalten. Wenn man die Beispiele betrachtet wird man sehen daß es auch andere Endungen geben kann, das sind dann Varianten eines Flexmoduls, z.B. die Textversion oder eine Listendarstellung.

Beispiele sind:

  • msite/cms/themes/default/flex/textbox.flex
  • msite/cms/themes/default/flex/textmitbild.flex

Jedes Flexmodul hat folgenden Aufbau:

  • Beschreibung des Flexmoduls
  • Valid- und Invalidcodes (optional)
  • der Autor des Flexmoduls (optional)
  • Leerzeile

[bearbeiten] Ein Beispiel

# NAME: Headline
# ALLOW: SILHOUETTE_PRESS
Eingabe:
<INPUT NAME="MELIN:HEAD1" TYPE=TEXT SIZE=50 VALUE="">


[bearbeiten] Header

Der Header enthält Informationen, die in der Flexmoduleleiste und in der Flexmodul-Verwaltung angezeigt werden. Hierzu gehört ein Bezeichner (NAME) sowie die Angabe des Autors des Flexmoduls. Die Angabe der NAME ist zwingend notwendig, die Angabe des Autors ist optional. Nach diesen Zeilen muss eine Leerzeile folgen. Beispiel:

# NAME: Headline
# AUTHOR: Liels Dienas
Leerzeile 
  • Sind Valid- oder Invalidcodes gesetzt, müssen diese im Header eines Flexmoduls noch vor

der Leerzeile eingetragen werden.

[bearbeiten] Code Abschnitt

Der Codeabschnitt enthält den eigentlichen Code, der in das Template eingefügt wird, wenn ein User das Flexmodul in der Flexmoduleleiste auswählt. Es kann beliebiger HTML-Code verwendet werden. Beispiel:

<INPUT NAME="MELIN:HEAD" VALUE="" SIZE=35>
<TEXTAREA NAME="MELIN:HTMLBODY" ROWS=9 COLS=50 WRAP=SOFT></TEXTAREA>
  • Eingabefelder, die innerhalb eines Flexmoduls verwendet werden können sowohl benannt

als auch anonym sein. Werden benannte Felder verwendet, dann wird der Name jedes Feldes mit der Nummer des Flexmoduls innerhalb der Flexmodulleiste gefolgt von der Nummer der Flexmodulleiste erweitert.


[bearbeiten] Einbau in ein Template

Auf Flexmodule wird über die Flexmodulleiste zugegriffen. Die Flexmodulleiste muss mit einem eigenen Namen versehen werden ("MUSTER") und muss einen Validcode enthalten, damit klar ist welche Flexmoidule ur Auswahl angeboten werden sollen.

<!--INSERT_FLEXMODULE:MUSTER:SILHOUETTE_PRESS-->

In obigem Beispiel werden nur die Flexmodule dargestellt die einen Eintrag

# ALLOW: SILHOUETTE_PRESS

haben. Beim Erstellen eines Dokuments mit dem entsprechenden Template wird die Flexmodulleiste angezeigt und der User kann aus den Flexmodulen auswählen, die aufgrund des aktuellen Aufrufs verwendet werden können.

[bearbeiten] Validcode

Mit diesem Parameter wird die Validierung der Flexmodule gestartet. Alle Flexmodule,

  • deren Validcodes den Wert des Parameters enthalten,
  • deren Invalidcodes den Wert des Parameters nichtenthalten,
  • die weder Valid- noch Invalidcodes enthalten,

werden in der Auswahlliste der Flexmodulleiste angezeigt.

[bearbeiten] Ein einfaches Beispiel

[bearbeiten] Inhalt außerhalb eines Flexmoduls verwenden

Es kann nur Inhalt außerhalb eines Flexmoduls verwendet werden, der in ein benanntes Feld eingegeben wurde. Über den Namen des Feldes sowie den Flex-Index und die Flex-ID kann so jedes Feld eindeutig gefunden werden. Der Aufruf baut sich wie folgt auf: Eine solche Variable greift auf den Inhalt der Meta-Variablen an einer bestimmten Position in einem bestimmten Flexmodul zu. Die Position und das Flexmodul werden durch den Flex-Index und die Flex-ID bestimmt. Beispiel: Angenommen es existieren drei Flexmodulleisten in einem Template, von denen jedes zwei Instanzen hat. Jede Instanz beinhaltet ein Eingabefeld mit dem Namen name1und ein weiteres mit dem Namen name2. Der Flex-Index für das erste Flexmodul ist 0, für das zweite ist er 1 und für das dritte 2. Jede Flex- modul-Instanz wird analog nummeriert: Die erste Instanz eines jeden Flexmoduls erhält als Flex- ID die 0, die zweite die 1.

Nun kann der Inhalt jeder Flexmodul-Instanz außerhalb des Flexmoduls referenziert werden. Um zum Beispiel den Inhalt des Feldes name2in der zweiten Instanz des ersten Flexmoduls abzurufen, muss folgende Meta-Variable angesprochen werden: Die Nummerierung der Flexmodule bleibt auch dann erhalten, wenn ein User die Reihenfolge der Flexmodule ändert.


[bearbeiten] Beispiele =

[bearbeiten] Flexmodul Bild und Text mit Textversion und Inhaltsverzeichnis mit Sprungmarken

Die Anforderung bei dieser Templatekombination ist, eine beliebige Anzahl von Textblöcken mit optionalen Bildern einfügen zu können. Zu Beginn des Newsletters sollen die Titel der Blöcke gelistet werden, mit Sprungmarken im Newsletter zu den Texten. In der Textversion werden nur die Blöcke als Text untereinander gelistet.

Die Kurzliste wird über Flexmodul-Clones (Alternativen) gelöst mit der Endung ".alt". Diese werden im HTML-Teil eingebunden mit:


Der eigentliche Kern der EIngabe wird mit dem folgenden Aufruf eingebaut:


Und in der Textversion wird der folgende Aufruf verwendet:


Insgesamt kommt man mit einem Flexmodul aus, da die Abfrage ob Bild oder nicht im Template vorgenommen wird.

[bearbeiten] Flexmodul Sprungliste/Alt

# NAME: WISSEN Artikel
# ALLOW: WISSEN

  • <a href="#thema%FLEX_ID%" class="inhaltsverz"></a></li>

    [bearbeiten] Flexmodul Eingabe/HTML

    # NAME: WISSEN Artikel
    # ALLOW: WISSEN
    
    #IF (("" EQ "EDIT") OR ("" EQ "NEW"))
    
    
    #ENDIF
    
    
    <a name="thema%FLEX_ID%"></a>
    <INPUT NAME="MELIN:HEAD" VALUE="" SIZE=100> <a href="#top"><img src="http://www.wissen.de/wde/generator/material/bilder/nl/std/up.gif" width="10" height="20" alt="Zum Seitenanfang" border="0"></a>
    <a href="" target="_blank">
    
    <img src="MELIN:PIC1%FLEX_ID%_%FLEX_NAME%" width="150" height="100" border="0"></a>
    #IF (("" EQ "EDIT") OR ("" EQ "NEW"))
    
    HTML-Text:
    <TEXTAREA NAME="MELIN:HTMLBODY" ROWS=9 COLS=50 WRAP=SOFT></TEXTAREA>

    TXT anders?<INPUT TYPE=CHECKBOX NAME="MELIN:OPT_TEXT" VALUE="1">

    TXT Text:
    <TEXTAREA NAME="MELIN:TEXTBODY" ROWS=9 COLS=45 WRAP=SOFT></TEXTAREA>

    Link:
    <INPUT NAME="MELIN:LINK" SIZE="35" VALUE="http://www.wissen.de/wde/generator">

    #ELSE #IF ("" EQ "") #ELSE <a href="" target="_blank">mehr…</a> #ENDIF #ENDIF
    <img src="http://www.wissen.de/wde/generator/material/bilder/nl/std/pix.gif" width="10" height="10">
     
    #IF (("" EQ "EDIT") OR ("" EQ "NEW"))
    
    
    #ENDIF  
    
    
    

    [bearbeiten] Flexmodul Text

    # NAME: WISSEN Artikel
    # ALLOW: WISSEN
    
    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------
    #IF ("" EQ "1")
    #ELSE
    #ENDIF
    
    


    === Flexmodul Dateiupload über Mediendatenbank === 
    
    # NAME: Datei einsetzen
    
    #IF (("" EQ "EDIT") OR ("" EQ "NEW"))
    
    #ENDIF #IF (("" EQ "EDIT") OR ("" EQ "NEW"))


    #IF (("" EQ "EDIT") OR ("" EQ "NEW"))
    
    
    File Auswahl<M_FILEVAULT VIEW=""><input name="MELIN:M_LINKED_FILE" type="FILE">
    Beschreibung:
    <INPUT NAME="MELIN:BESCHREIBUNG" VALUE="" SIZE=25>
    
    #ELSE
    
    File-URL:  
    Zusatztext:
    Beschreibung:
    #IF ("" NE "") <a href="" target="_blank"> Download this article: </a> #ENDIF #ENDIF
    #ENDIF