Embperl - building dynamic websites with Perl


Aufteilen des Codes in mehrere Komponenten
[ << Prev: Persistente Daten (Sessions) ] [ Content ] [ Next: EmbperlObject >> ]

 (Embperl 1.2 oder neuer)


Funktionentop

Wächst ein Programm, teilt man es in mehere Funktionen auf. Dies ist mit Embperlseiten ebenfalls möglich. Folgendes Beispiel zeigt dies an Hand von beschrifteten Texteingabefeldern:

 [$ sub textinput $]
    [- ($label, $name) = @_ -]
    [+ $label +]<input type=text name=[+ $name +]>
 [$ endsub $]
 <form>
    [- textinput ('Nachname', 'lname')  -]<p>
    [- textinput ('Vorname', 'fname') -]<p>
 </form>

Das sub Meta-Command kennzeichnet den Anfang der Funktion und die Parameter werden im Array @_ übergeben. Man kann innerhalb der Funktion alles tun, was auch in einer normalen Embperl Seite möglich ist. Aufgerufen wird die Funktion, wie jede andere Perlfunktion auch, einfach durch Schreiben des Namens und ggf. der Parameterliste.



Executetop

Wenn man an einer ganzen Website arbeitet, kommt es meistens vor, daß es Elemente gibt, die in jeder oder vielen Seiten immer wieder vorkommen. Anstatt den Quellencode nun in jede Seite zu kopieren, ist es möglich Embperl Module in die Seite einzufügen, so daß der Quellencode nur einmal existieren muß. So ein Modul könnte z.B. ein Kopf, ein Fuß, eine Navigationsleiste usw. sein. Es können dabei nicht nur Teile einer Seite eingefügt, sondern auch, ähnlich einem Unterprogramm, Argumente übergeben werden - z.B. um der Navigationsleiste mitzuteilen, welches Element hervorzuheben ist.

Beispiel für eine einfache Navigationsleiste

 [- @buttons = ('Index', 'Infos', 'Suchen') -]
 <table><tr><td>
     [$if $buttons[$col] eq $param[0]$] <bold> [$endif$]
     <a href="[+ $buttons[$col] +].html"> [+ $buttons[$col] +] </a>
     [$if $buttons[$col] eq $param[0]$] </bold> [$endif$]
 </td></tr></table>
 <hr>

Wenn man nun auf der Info-Seite ist, kann die Navigationsleiste wie folgt eingefügt werden:

 [- Execute ('navbar.html', 'Infos') -]

Dies fügt die Navigationsleiste, welche in der Datei navbar.html gespeichert ist, an entsprechender Stelle ein und übergibt ihr als Parameter die Zeichenkette 'Infos'. Das Navigationsleistenmodul selbst benutzt eine dynamische Tabelle um die Spalten anzuzeigen, welche den Text und einen entsprechenden Link enthalten. Die Texte werden dabei dem Array @buttons entnommen. Wenn der Text gleich dem übergebenen Parameter ist, wird er fett dargestellt. Weiterhin gibt es noch eine ausführliche Form des Executeaufrufes, welche es erlaubt sehr detailiert die Ausführung des Moduls zu kontrollieren.



Erstellen von Komponenten Librariestop

Statt eine extra Datei für jedes bischen HTML Code zu erstellen, welches in eine andere Seite eingefügt werden soll, ist es möglich diesen in eine HTML Datei zusammenzufassen. Um dies zuerreichen muß jedes einzelne Codestück eine eigene Embperl Funktion sein. Mittels des import Parameters der Execute Funktion können nun alle Embperl Funktionen in den Namensraum der aktuellen Seite importiert werden und fortan wie normale Perlfunktionen aufgerufen werden.

Weiterhin ist es möglich die Embperl Funktionen (zusammen mit normalen Perl Code) als ein Perl Modul (.pm Datei) zu installieren. Dadurch stehen sie systemweit zur Verfügung und können wie jedes andere Perl Modul mittels use genutzt werden.


[ << Prev: Persistente Daten (Sessions) ] [ Content ] [ Next: EmbperlObject >> ]


© 1997-2023 Gerald Richter / actevy