In Joomla gibt es ein Modul, welches RSS-Feeds erzeugt, die andere abonnieren können. Das Problem ist nur, dass dieses Modul jeweils nur einen Feed für die gerade aktuelle Seite/Kategorie erzeugt.
RSS-Feeds kompakt ohne Erweiterung

Rechnung in Word - ohne Excel

Mit etwas einfacher Makroprogrammierung lässt sich in Word auch ohne Excel rechnen und somit eine Rechnung erstellen. Das Tutorial zeigt in mehreren Teilen, wie sich eine Rechnung mit allem Drum und Dran erstellen lässt.
Rechnung in Word - ohne Excel
Filter in zwei oder mehr Spalten zu setzen, die nicht voneinander abhängig sind, ist mit den Filtermöglichkeiten, die Excel bietet, nicht möglich. Angenommen Sie haben eine Tabelle mit ein paar Städten, zwei verschiedene Kategorien und zugehörigen Umsätzen. Aktivieren Sie über das Menüband Daten in der Gruppe Sortieren und Filtern den
Zwei Filter setzen mit ODER(...)
Die App kann bei time4mambo (https://www.time4mambo.de/downloads/category/8-apps.html) downgeloadet werden ----------------- Mir gefiehlen die guten alten Weblinks von Joomla nicht, als ich diese Site relaunchte. Beispielsweise war es nicht möglich die Sprache der
SEBLOD: Weblinks mit automatisierten Screenshots

Excel-Lösungen

  • Tutorials zu Fragen rund um Excel
  • Teilweise mit Makroprogrammierungen.
  • Fertige Excel-Sheets mit Teillösungen zum Download
Excel-Lösungen
Dieses Tutorial steht im Downloadcenter (http://www.time4mambo.de/downloads/viewcategory/3.html) als PDF zur Verfügung Einfache Rechnung Einzelpostenauflistung, Zwischensumme, Gesamtsumme und Mehrwertsteuer – für den Geschäftsmann
Rechnungserstellung mit Word und Excel
Seit Joomla 3 ist das CSS-Framework Bootstrap fester Bestandteil in Joomla und kann für eigene Templates somit einfach benutzt werden. Auf time4jaoomla erfahren Sie, wie es geht.
Bootstrap mit Joomla
Original-Auszug aus dem Buch Die Überlegung: Wir haben eine Kulturredaktion, der eine Kategorie zugeordnet ist. Und wir haben eine Politikredaktion, die in zwei Kategorien schreibt. Beide Redaktionen sollen nur ihre eigenen Beiträge bearbeiten, veröffentlichen und löschen können. Außerdem bekommen beide Redaktionen noch einen Chefreakteur zur Seite, der in allen
Fallbeispiel: Redaktionssystem
Schaut man sich das erste Mal einen CSS-Befehl an, führt das meistens zu einem panischen Weiterklicken, weil das alles sehr kompliziert ausschaut. Aber eigentlich ist es das nicht. Bei genauer Betrachtung ist CSS eigentlich sogar selbsterklärend und wenn man eine Weile damit umgegangen ist, geht es schon beinahe wie von
Wie funktioniert CSS
Das Tutorial steht auf time4mambo zum Download bereit: http://www.time4mambo.de/das-unternehmen/downloads/category/11-joomla-1-5.html (http://www.time4mambo.de/das-unternehmen/downloads/category/11-joomla-1-5.html) Dieses Tutorial ist ursprünglich für Joomla! 1.5 geschrieben worden. So ich es derzeit überblicke hat das Tutorial aber auch in Joomla!
Community Builder
Grafische Rollovers mit dem JCE zu machen ist ja recht einfach, weil der JCE hier schon fertige Einstellmöglichkeiten sehr einfach mitbringt.Aber wie wird ein Rollover-Effekt bei einer Textmarke erzielt? Eigentlich genauso wie ein grafischer Rollover-Effekt - nur mit einem klitzekleinen Trick: Zunächst schreiben wir den Text: Lass uns was schreiben und mittendrin einen
Text-Rollover mit dem JCE
Dieses Tutorial steht als PDF-Download im downgeladen (https://www.time4mambo.de/downloads/category/8-apps.html)werden. (https://www.time4mambo.de/downloads/category/8-apps.html) ---------------------- Als ich das erste Mal Seblod installiert hatte, habe ich große unverständliche Augen gemacht, ein wenig herumgeklickert, versucht die
SEBLOD: Einführung am Beispiel eines selbsterstellten Portfolios
deenfritptrues

Deutschsprachige Seblod-Community

Zu dritt haben wir die deutschsprachige SEBLOD™-Community gegründet. Neben Ressourcen und Webseiten , die mit SEBLOD™ gemacht sind, bieten wir ein Supportforum zu Fragen rund um SEBLOD™ an.

https://seblod.time4mambo.de


Para- und Nonverbale Kommunikation

Damit ist zum einen die Körpersprache gemeint und zum anderen die Art, wie wir kommunizieren. Zu letzterem gehören der Tonfall, Sprachmelodie, Artikulation, Sprechtempo und auch die Pausen zwischen den Wörtern.

Das reine Wort, der Inhalt, machen 7% unserer Kommunikation aus. Die para- und nonverbale Kommunikation zusammen 93%. Wie Sie 93% mehr Erfolg haben können, erfahren Sie auf dieser Website:

Körpersprache


Selbst geschrieben: Joomla für Redakteure

Amazon:
Dieses essential bietet speziell Redakteuren einen Einstieg in das Content Management System Joomla!. Losgelöst vom „Ballast“ der zahlreichen Einstellungen und Möglichkeiten, die in anderen Büchern thematisiert werden, wendet sich dieses Buch ausschließlich an die eigentlichen Endnutzer des Systems und konzentriert sich dabei auf das Schreiben und Veröffentlichen von Beiträgen. Der erfahrene Autor und Joomla!-Kenner Axel Tüting erklärt jeden Schritt praxisnah und verständlich.

Joomla für Redakteure


Selbst geschrieben: SEBLOD - Das Handbuch

Das Content-Management-System Joomla! stellt dem Anwender bereits eine breite Palette von Funktionen zur Ausgestaltung von Webauftritten bereit. Bei erfolgreichen Webseiten steigt mit der Zeit aber der Anspruch in Bezug auf Funktionalität. Es ist nur eine Frage der Zeit, bis Sie an die Grenzen von Joomla! stoßen. Entweder greifen Sie dann in den Programmcode ein oder setzen auf ein Content Construction Kit (CCK). Das mächtigste dieser Art ist SEBLOD®. Wie Sie damit die Grenzen von Joomla! sprengen, zeigt Ihnen das vorliegende Handbuch.

SEBLOD - Das Handbuch



Dankesagen...

Wenn die Tutorials dir weitergeholfen haben, dann kannst du mit einer kleinen Spende Danke sagen.

Newsletter

captcha 

Schulungen

Langjährige Erfahrung als Dozent zu verschiedenen Themen.
Ich komme zu Ihnen in die Firma oder organisiere Räume vor Ort. Dazu steht mir ein Netzwerk aus vielen Jahren Tätigkeit als freier Dozent zur Verfügung.
Weitere Informationen, sowie Referenzen finden Sie auf der Firmenseite time4mambo

    MS-Excel
    2003 / 2007/ 2010
    MS-Project
    2003 / 2007
    MS-Word
    2003 / 2007 / 2010
    MS-PowerPoint 2010
    Joomla! 1.5 / 2.5
    Körpersprache für Präsentation und zur verkaufsfördernen Motivation

    Weitere Themen auf Anfrage

Interesse? Lust? Zeit? Dann freue ich mich über eine eMail oder Anruf.
Kontaktdaten im Impressum


Newsletter

Nach Bestätigung des Buttons wird eine Bestätigungs-eMail versendet, die Sie bitte durch anklicken bestätigen. So kann Missbrauch mit Ihrer eMail-Adresse ausgeschlossen werden

Die Templates von SEBLOD unterscheiden sich an einigen Stellen gravierend vom Joomla!-Templating. Dennoch sind ein paar Parallelen vorhanden. Die Templates sind ausschließlich für die Darstellung des Inhaltsbereichs zuständig, also für den Bereich, in dem die Beiträge und andere Komponenten abgebildet werden. Die Templates greifen nur auf Inhaltstypen und/oder (Such-)Listen zu, die mit SEBLOD erstellt wurden. In diesem Kapitel werfen wir zunächst einen Blick auf die vorhandenen Templates. Dazu gehören auch die voreingestellten CSS-Dateien. Danach geht es um die Entwicklung eigener Templates.

21.1        Grundsätzlicher Aufbau

Wenn Sie im SEBLOD-Menü Template ausgewählt haben, erhalten Sie zunächst einen Überblick über die installierten Templates.

Klicken Sie oben rechts im Template Manager auf Varianten, wechseln Sie in die CSSAnsicht. Dort sehen Sie alle installierten CSS-Dateien, die Sie im Inhaltstyp auswählen können.

08 01

Bild 21.1: Zwischen den installierten Templates und den vorhandenen CSS-Dateien wechseln.

Sie können die CSS-Dateien lediglich downloaden und bei den Templates generell nur die Struktur einsehen.

In der Template-Ansicht können Sie einige wenige Einstellungen verändern, die jedoch bei bereits benutzten Templates mit einiger Vorsicht zu genießen sind. Der Versuch, dem Template einen anderen Namen zuzuweisen, schlug bei mir mit der Fehlermeldung, dass der Eintrag bereits vorhanden und ein Duplicate entry (doppelter Eintrag) nicht möglich sei, fehl. Somit sind Sie vor einem versehentlichen Überschreiben eines bestehenden Templates geschützt.

Ändern können Sie die Zuordnung Inhalt/Formular oder Liste. Das Template kann (und muss) gezielt der Ausgabe zugewiesen werden. Nicht nur das generelle Aussehen kann verändert werden, es kann auch gezielt ein Template für die Listenansicht oder für die Suchergebnisse und für den eigentlichen Inhalt angegeben werden. Damit reiht sich SEBLOD auch im Individualdesign in die Joomla!-Tradition der sehr flexiblen Layoutmöglichkeiten ein.

Sie können einem vorhandenen Template jederzeit einen anderen Titel geben. Wenn Ihnen beispielsweise das Template namens Blog nicht gefällt, geben Sie einen anderen Titel ein. Bestehende Zuweisungen verlieren nicht ihre Gültigkeit, und Sie können das Blog-Template in Zukunft an einem für Sie besseren Namen erkennen.

Standardmäßig ist ein Template dem App Ordner Core zugewiesen. Sie können das Template grundsätzlich in jeder App auswählen und benutzen. Wenn Sie jedoch ein Template für einen bestimmten Inhaltstyp erstellen, ist es für den besseren Überblick sinnvoll, das Template dieser App entsprechend zuzuweisen. Wenn Sie Ihre App downloaden, wird ein der App zugewiesenes Template automatisch mit heruntergeladen und steht nach dem Installieren in einer anderen Umgebung wieder zur Verfügung.

Mit dem On/Off-Umschalter können Sie ein Template auch deaktivieren bzw. aktivieren. Interessant kann das sein, wenn Sie an einem Template noch arbeiten möchten, aber verhindern wollen, dass etwaige Redaktionsmitglieder dieses Template bereits auswählen können.

21.2 Ein neues Template zuweisen

Unter Beschreibung können Sie einen eigenen Kommentar schreiben, vielleicht einige Besonderheiten für andere Administratoren oder wofür Sie das Template gemacht haben.

Unter Quellen sehen Sie, wie bereits erwähnt, lediglich die Struktur des Templates, die installierten Dateien und wo sie liegen. Mit den kleinen Pfeilen neben den Verzeichnissen können Sie die Unterordner einsehen, sofern vorhanden. Sie können jedoch kein Verzeichnis anklicken, um gezielt zu sehen, ob und, wenn ja, welche Dateien dort liegen. Auch können Sie an dieser Stelle leider keine Dateien editieren. Allerdings können Sie schnell überblicken, ob es Overrides in diesem Template gibt.

21.2         Ein neues Template zuweisen

Ob Sie ein eigenes Template erstellt oder ein fertiges aus dem Internet heruntergeladen[1] haben – Sie müssen es explizit in SEBLOD zuweisen. Der erste Schritt für ein neues Template ist, wie bei Joomla! üblich, der Installer bei Erweiterungen/ Erweiterungen. Nach der Installation kehren Sie in die Template-Ansicht von SEBLOD zurück und klicken oben links auf Neu. Sie kommen nun in die Detailansicht des Templates. Da Sie an dieser Stelle noch keines ausgewählt haben, ist die Strukturansicht, die Quelle, zunächst leer.

Sie müssen zunächst einen Titel vergeben und darunter, unter Name, das dazugehörige Template auswählen. Ihnen werden hier alle Templates, die Sie installiert haben, angezeigt, also auch die Joomla!-Templates, die mit SEBLOD nichts zu tun haben und dort auch nicht funktionieren. Zur Erinnerung: Joomla! benutzt ein Template, das die gesamte Webseite abbildet – SEBLOD das Template lediglich zur Anzeige des Inhalts, wozu die Ein- und Ausgabe sowie das Backend wie auch das Frontend gehören.

Nachdem Sie das frisch installierte Template ausgewählt haben, entscheiden Sie, ob das Template in allen Inhaltstypen, Listen und Suchformularen benutzbar oder auf bestimmte App Ordner eingeschränkt ist. Wie im vorigen Kapitel bereits erwähnt, können Sie ein Template stets in jedem Inhaltstyp verwenden, egal, welchem App Ordner Sie es zugewiesen haben. Es ist also zunächst lediglich eine optische Zuweisung. Wenn das Template überall gelten soll, dann ordnen Sie es dem Schnellen Ordner oder Core zu.

Der Schnelle Ordner ist eine Art Sammelbecken für alles, was nicht einwandfrei zugeordnet werden kann bzw. wird. Das ist in Ordnung, solange Sie allein damit arbeiten oder der Schnelle Ordner übersichtlich gehalten wird. Um auch noch in einigen Monaten oder gar Jahren einen schnellen Überblick über das System zu gewährleisten, ist es jedoch ratsamer, konsequent übersichtlich und transparent zu arbeiten.

Nun müssen Sie noch auswählen, um was für einen Typ es sich bei dem Template handelt. Soll es für Inhalte und Formulare gültig sein oder für Listenansichten?

Nach dem ersten Speichern wird Ihnen auch die Quellen-Ansicht angezeigt und somit die Struktur des Templates.

Wechseln Sie zu den Inhaltstypen oder Suchlisten – je nachdem, wem das neue Template zugeordnet wurde – und weisen Sie dort bei den Templates das neue Template zu.

08 04

Beachten Sie, dass Sie das Template jedem Formular zuweisen müssen, wenn Sie es in allen Formularen benutzen möchten, also in AdminForm, SiteForm, Einleitung und Inhalt.

21.3        Ein eigenes Template

Es gibt generell zwei Möglichkeiten für ein eigenes Template. Die eine ist ein komplett eigenes Template, bei dem aber ein wenig Programmieraufwand vonnöten ist, die andere Möglichkeit besteht aus Overrides in einem bestehenden Template wie beispielsweise dem Standard-Template seb_one. Zusätzlich kann eine Mischung aus beidem gemacht werden, also ein eigenes Template mit individuellen Overrides. Damit lassen sich verschiedene Varianten mit nur einem Template darstellen und unterschiedlichen Bereichen gezielt zuweisen.

In fast allen Verzeichnissen finden Sie stets eine leere index.html. Wenn Sie Overrides erstellen oder ein eigenes Template bauen, schreiben Sie diese Datei in die Verzeichnisse. Damit verhindern Sie, dass jemand den Inhalt eines Verzeichnisses auslesen kann. Denn wird das Verzeichnis im Browser aufgerufen, sieht man nur eine leere Seite – die leere index.html.

Fangen wir mit dem Standard-Template von SEBLOD an: mit dem seb_one.

21.4        Overrides im seb_one

Es gibt einige Möglichkeiten, die Ausgaben seiner Formulare mit dem seb_one zu beeinflussen. Ausgaben für die Positionen oder für einzelne Felder zur manipulieren und eigenes CSS sind natürlich auch möglich.

21.4.1    Positionen

Beginnen wir mit der Ausgabe in den Positionen. Ich erstelle zum Üben ein kleines Formular, um Buchbesprechungen zu veröffentlichen. Dazu erzeuge ich drei Felder:

  • Buchtitel, Speicherung: Standard – article – title
  • Article Category id – ich verwende das vorgegebene Kategoriefeld
  • Buchtext als Wysiwyg-Editor – Benutzerdefiniert – article – introtext

Der Buchtext wird in der Position #MAINBODY veröffentlicht, die anderen beiden Felder in der Position #TOPBODY, davon jeweils eine AdminForm und das Gleiche als Inhalt.

08 05

Bild 21.3: Eine einfache Form zur Buchbesprechung.

Ich möchte nun unter dem Titel direkt einen Werbebanner einblenden. Eine Möglichkeit wäre, eine Modulposition einzufügen und dieser Position ein Bannermodul zuzuweisen. In diesem Beispiel lege ich den Werbebanner aber mit einem Override für die Position # TOPBODY an, denn dort ist der Buchtitel veröffentlicht, und danach möchte ich den Banner abbilden.

Dafür müssen Sie im Template seb_one das Verzeichnis positions mit dem Aliasnamen Ihres Inhaltstyps erweitern und ein weiteres Verzeichnis für den Ausgabebereich erstellen. In unserem Fall sieht der komplette erweiterte Pfad dann so aus:

001

/positions/buchbesprechung/content

Den Alias Ihres Inhaltstyps finden Sie nach dem ersten Speichern in der Übersicht. Sie haben im oberen Bereich des Inhaltstyps, im Ausklappbereich, zwar die Möglichkeit, einen Alias einzutragen, jedoch hat dieser bei mir nicht funktioniert.

Da ich den Werbebanner nur im Inhalt ausgeben möchte, reicht hier als Zuweisung content, der englische Begriff für »Inhalt«.

Dort erzeuge ich nun eine neue PHP-Datei, die den Namen der Position trägt, die ich überschreiben möchte. In meinem Beispiel soll der Werbebanner unter dem Titel ausgegeben werden, der wiederum an der Position # TOPBODY steht. Also erzeuge ich eine Datei namens topbody.php. Da ich einen kompletten Override mache, muss ich hier zunächst kundtun, dass meine Felder auch gerendert werden, also der Buchtitel zur Ausgabe gebracht wird. Darunter schreibe ich die Ausgabe für den Werbe-

banner.

001

<?php

002

echo $cck->renderField('buchtitel');

003

echo "<img src=\"images/werbung/".$cck->getValue('art_catid').

".jpg\">";

004

?>

Ich habe der Einfachheit halber meinen Werbebanner mit der ID der Kategorie abgespeichert. Dazu habe ich zuvor zwei Kategorien erstellt

[ Belletristik (ID = 10) [ Sachbuch (ID = 11) und dazu einen Banner 10.jpg in das Verzeichnis images/werbung geladen. Mit

001

$cck->getValue('art_catid')

frage ich über die Kategorie-ID den Valuewert des Feldes ab und hänge diesen Wert an den Bildpfad. Dieser wird anschließend um den Dateisuffix ergänzt.

08 06

Bild 21.4: Override, um den Werbebanner an der richtigen Stelle einzufügen.

Wenn Sie mehrere Felder an einer Position haben, müssen Sie die anderen Felder auch rendern. Dadurch können Sie beliebigen Code vor, nach oder zwischen den einzelnen Feldern einfügen.

08 07Bild 21.5: Der Override im positions-Verzeichnis

Ich möchte einen Link zu meinen Google+-Profil bei den Buchbesprechungen angeben. Dafür gibt es verschiedene Lösungsansätze. Einer besteht darin, im Template des Inhaltstyps (Form: Inhalt) einzustellen, dass der Beschreibungstext angezeigt werden soll. Dazu stehen Ihnen verschiedene Methoden zur Verfügung. Im Beschreibungsfeld des Feldes buchtext habe ich mir einen Link auf mein Google+Profil gesetzt, wie in der folgenden Abbildung zu sehen ist.

Nun möchte ich das Ganze ein wenig aufhübschen und umgestalten. Eine Möglichkeit ist, direkt in der CSS-Datei von SEBLOD entsprechende Formatierungen vorzunehmen, eine andere, einen Override für die Position #MAINBODY zu machen. Dazu habe ich zunächst eine gleichnamige Datei angelegt – mainbody.php –, die ich im gleichen Verzeichnis wie die topbody.php gespeichert habe.

08 12

Bild 21.6: Beschreibungstext mit Link zum Google+-Profil.

Ich möchte meinen Beschreibungstext über dem eigentlichen Text ausgeben, weshalb ich zunächst den Beschreibungstext aufrufe und mit ein wenig CSS formatiere und erst dann das eigentliche Feld rendere:

001

<?php

002

echo "<div style='border-bottom:1px solid #000000;margin-

bottom:20px;'>".$cck->getDescription('buchtext')."</div>";

003

echo $cck->renderField('buchtext');

004

?>

Eine Linie unter meinem Beschreibungstext und ein wenig Abstand nach unten reichen mir hier. Mit $cck->getDescription(´buchtext´) rufe ich den Beschreibungstext auf.

08 16Bild 21.7: Die Ausgabe im Frontend.

 

21.4.2 Variationen

Wenn Sie viele Felder haben, könnte der Weg mit den Positionen natürlich etwas mühselig sein, da Sie jedes einzelne Feld rendern müssten. Wollen Sie hingegen einzelne Blöcke, einzelne Positionen insgesamt ausgeben und lediglich davor oder danach den Code ändern, dann haben Sie die Möglichkeit, im variations-Verzeichnis ein Override zu machen. Ich habe dort ein neues Verzeichnis namens werbung erstellt und eine gleichnamige PHP-Datei gespeichert. Der Code ist abermals recht simpel und wirkt fast identisch mit dem obigen Code bei den Positionen.

001

<?php

002

echo $content;

003

echo "<img src=\"images/werbung/".$cck->getValue('art_catid').

".jpg\">";

004

?>

Einziger Unterschied ist die erste Zeile:

001

echo $content;

Mit dieser Zeile sprechen Sie alle Felder an. Allerdings müssen Sie diese Datei explizit zuweisen. Dazu wechseln Sie in Ihre Inhaltsform und wählen unter Variation die PHPDatei aus. In meinem Beispiel heißt diese werbung.php. Wichtig ist, dass das Unterverzeichnis genau so heißt wie die PHP-Datei.

Sie erhalten nach der Auswahl ein kleines Pluszeichen. Wenn Sie es anklicken, werden Sie nichts sehen. Das können wir natürlich ändern und uns ein paar zusätzliche Einstellungen generieren. Dazu legen Sie im gleichen Verzeichnis eine Datei namens option.xml an. In dieser erstellen Sie ein fieldset mit Parameterangaben.

08 08Bild 21.8: Auswählen des Overrides unter der Variation im Inhaltstyp

 

Als Beispiel habe ich mir drei Felder gemacht. Zum einen kann ausgewählt werden, wie der Banner ausgerichtet werden soll (links, rechts oder zentriert), und die Bannergröße kann auch verändert werden. Da ich Ausrichtung und Größe optisch trennen möchte, verwende ich zwei fieldsets.

001

<?xml version="1.0" encoding="utf-8"?>

002

<form>

003

<fieldset name="banner_ausrichtung" label="Ausrichtung">

004

  <field name="ausrichtung" type="list" default="center" description="Ausrichtung des Banners" label="Ausrichtung">

005

   <option value="left">links</option>

006

   <option value="right">rechts</option>

007

   <option value="center">mittig</option>

008

   </field>

009

</fieldset>

010

  

011

<fieldset name="banner_groesse" label="Größe">

012

   <field name="breite" type="text" default="468" description="Breite des Banners angeben" label="Breite" size="50"></field>

013

   <field name="hoehe" type="text" default="60" description="Höhe des Banners angeben" label="Höhe" size="50"></field>

014

</fieldset>

015

</form>

Wenn Sie nun auf das kleine Pluszeichen klicken, erhalten Sie nachfolgendes Formular angezeigt:

08 09

Bild 21.9: Incividuelle HTML- und CSS-Angaben.

 

Um die Eingaben im eigenen Code verwenden zu können, brauchen Sie nur

$option->get(`FIELD_NAME‘)

einzugeben. FIELD_NAME müssen Sie natürlich mit dem Namen im field ersetzen. Um den Banner auszurichten und mit der gewählten Bildgröße anzuzeigen, erweitern Sie die Datei werbung.php mit nachfolgendem Code:

001

<?php

002

echo $content;

003

echo '<div style="clear:both; text-align:'.$options->get

('ausrichtung').'">';

004

echo '<img src=’.$this->baseurl.’/images/werbung/'.$cck->getValue

('art_catid'). '.jpg width='.$options->get('breite').' height=

'.$options->get('hoehe').' />';

005

echo '</div>';

006

?>

clear:both ist notwendig, weil SEBLOD im vorherigen Rendern den Buchtitel mit float:left ausgibt.

08 10Bild 21.10: Der Override im variations-Verzeichnis.

 

21.4.3 Aufgeräumter Quellcode mit eigenen Markups

Nach wie vor haben wir das Problem, dass der Quellcode, den SEBLOD erzeugt, mit vielen DIV-Verschachtelungen daherkommt. Des Rätsels Lösung, um das zu verhindern, liegt in einem Override der Felder. SEBLOD hat uns hierfür bereits eine Datei mitgegeben, die allerdings standardmäßig deaktiviert ist. Wir finden sie im Verzeichnis fields: _markup.php. Damit wir mit ihr arbeiten können, müssen Sie den Unterstrich am Anfang der Datei entfernen. Noch besser ist es, Sie kopieren die Datei, belassen die Originaldatei im Ordner und entfernen bei der Kopie den Unterstrich.

Datei mit Unterstrich

Eine Datei, die mit einem Unterstrich beginnt, ist deaktiviert. Sie kann wegen dieses vorangestellten Unterstrichs nicht ausgeführt werden.

Zunächst unterscheidet sich die Ausgabe mit dieser aktivierten Datei nicht von dem, was SEBLOD normalerweise ausgibt. Wir können jedoch diese Datei nach eigenem Gusto anpassen. Die Funktion ccMarkup_seb_one(…) kommt mit fünf Blöcken daher:

  • Computation – Bezieht sich auf Berechnungen, die Sie im Inhaltstyp bei den Nummern eingeben können.
  • Conditional – Bezieht sich auf Abhängigkeiten, die Sie unter der jeweils gleichen Nummer eingeben können.
  • $desc – Formatiert Feldbeschreibungen, wenn Sie welche angegeben haben.
  • $label – Bezieht sich auf den Titel des Feldes.
  • $html – Ist für die Ausgabe des Inhalts des Feldes zuständig.

Im einfachsten Fall belassen Sie Computation und Conditional für die Berechnungen und Abhängigkeiten und ändern die drei unteren Blöcke. Wenn Sie komplett auf DIV-Umschließungen verzichten möchten, reicht dieser Code:

001

$desc = '';

002

if ( $cck->getStyleParam( 'field_description', 0 ) ) {

003

$desc =       ( $field->description != '' ) ? $field->description :

'';

004

}

005

  

006

$label = '';

007

  if ( $options->get( 'field_label', $cck->getStyleParam(

'field_label', 1 ) ) ) {

008

   $label         =       $cck->getLabel( $field->name, true, (

$field->required ? '*' : '' ) );

009

   $label         =       ( $label != '' ) ? $label : '';

010

}

011

  

012

$html = $label.$html.$desc;

013

  

014

return $html;

In $desc und $label fragen Sie zunächst ab, ob für diese Typen überhaupt Werte existieren. Wenn ja, werden sie ausgegeben, andernfalls wird eine leere Zeichenkette erzeugt. Da Sie Inhalte ausgeben, werden Sie vermutlich immer einen Wert für $html haben. In der vorletzten Zeile setzen Sie diese einzelnen Werte einfach zusammen und geben sie mit return zurück.

Damit haben Sie einen aufgeräumten Quellcode. Sie können das natürlich auch ein wenig anpassen, damit Sie entweder eine individuelle Ausgabe formatieren oder die einzelnen Feldausgaben mit CSS-Klassen und -IDs belegen können. Um beispielsweise einfache DIVs um die Feldausgaben zu legen, können Sie nachfolgenden Code einfügen:

001

$label = '';

002

if ( $options->get( 'field_label', $cck->getStyleParam( 'field_label', 1

) ) ) {

003

$label = $cck->getLabel( $field->name, true, ( $field->required ? '*' :

'' ) );

004

$label = ( $label != '' ) ? '<div class="meine_labelklasse">.'.$label.'</div>' : '';

005

}

006

  

007

$html = '<div class="meine_feldklasse">'.$html.'</div>';

008

$html = $label.$html.$desc;

009

 

010

Return $html;

Wenn Sie sich den Quellcode Ihrer Ausgabe nach einem Browser-Refresh anschauen, dann haben Sie um Ihre Felder Ihren HTML-Code:

08 14

 

21.4.4 Verschiedene Markup-Overrides

Im vorangegangenen Kapitel haben Sie gelernt, wie Sie auf einfache Art und Weise die Ausgabe »aufräumen« können. Sie können zusätzlich auch Markup-Dateien für bestimmte Inhaltstypen erstellen. Dazu brauchen Sie nur das fields-Verzeichnis mit dem Namen des Inhaltstyps zu erweitern und die markup.php hineinzukopieren. Wenn ich beispielsweise meinen Inhaltstyp Buchbesprechung mit einer eigenen MarkupDatei ausstatten möchte, lege ich ein entsprechendes Unterverzeichnis an:

08 15Bild 21.12: Die HTML-Ausgabe für einen bestimmten Inhaltstyp anpassen.

 

Zusätzlich müssen Sie den Funktionsnamen verändern, indem Sie an das Ende den Namen des Inhaltstyps anfügen, also letztlich den Verzeichnisnamen übernehmen. In meinem Beispiel muss der Funktionsname nun so aussehen:

001

function cckMarkup_seb_one_buchbesprechung( $cck, $html, $field,

$options )

002

{ … }

Die genaue Syntax lautet: cckMarkup_[Templatename]_[Inhaltstyp]

Statt Inhaltstyp können Sie natürlich auch einen Suchtyp angeben. Diese Markup-Datei wird nur ausgeführt, wenn Sie den Inhaltstyp Buchbesprechung ausgeben.
Haben Sie mehrere Inhaltstypen, die alle das Standard-Template seb_one benutzen, können Sie so dennoch auf sehr einfache Art und Weise individuelle Ausgaben formatieren, ohne ein eigenes Template erstellen zu müssen. Da seb_one sehr viele Positionen mitbringt, ist dieser Weg vielleicht einer der besten, um SEBLOD zu individualisieren.

21.4.5 Zusammenfassung und Fazit

Der Unterschied zwischen den beiden Methoden des Overrides ist nicht nur, dass Sie mit den Variationen ganze Blöcke und bei den Positionen einzelne Felder in den jeweiligen Positionen ansprechen, sondern auch, dass Sie die Overrides in den Variationen explizit zuweisen müssen, wohingegen die Overrides in den Positionen immer ausgeführt werden. Mit den Zuweisungen der Variationen haben Sie damit zusätzliche Möglichkeiten: Einzelne Positionen in den Formularen können eine eigene Formatierung erhalten.

Das, gekoppelt mit der markup.php für das ganze Template oder bestimmte Inhaltstypen, bietet vielfältige Möglichkeiten der eigenen Template-Gestaltung mit den bereits mitgelieferten Standard-Templates.

21.5         Einstieg mit einem einfachen Template

Auf den ersten Blick sind die Templates von SEBLOD recht verwirrend und scheinen rein gar nichts mit den Joomla!-Templates gemeinsam zu haben. Bei genauer Betrachtung finden sich aber durchaus Gemeinsamkeiten. Da wir hier aber ein Template haben, das sich zum einen ausschließlich auf den Content-Bereich bezieht und es sich zudem um die Darstellung speziell von SEBLOD-Formularen handelt, sind einige Dateien und teilweise die Ordnerstruktur gravierend anders, als es von den Joomla!-Templates bekannt ist.

Um das Templating von SEBLOD-Templates zu verstehen, erstelle ich ein sehr einfaches Template.

08 02Bild21.13: Struktur für ein ganz einfaches Template.

 

Wie die Abbildung zeigt, unterscheidet sich das SEBLOD-Template in der Struktur zunächst nicht so stark von der Joomla!-Template-Struktur. Lediglich ein paar Verzeichnisse sind hinzugekommen. Allerdings brauchen Sie in diese Verzeichnisse nichts hineinzuschreiben bis auf die obligatorische leere index.html. Die benötigen Sie zum einen, um auch eigentlich leere Verzeichnisse aus der ZIP-Datei installieren zu können, aber auch als einfachen Verzeichnisschutz, damit die Dateien eines Verzeichnisses nicht einfach aufgelistet werden und somit für jeden sichtbar sind.

Wirklich wichtig sind zunächst nur die drei Dateien im Template-Root-Verzeichnis. Also:

  • index.php
  • config.php
  • templateDetails.xml

Die beiden Grafikdateien dienen als Template-Miniansicht. Die template_preview.png wird angezeigt, wenn Sie im Inhaltstyp auf den Button Positionen klicken, und template_thumbnail.png wird Ihnen angezeigt, wenn Sie im Joomla!-Backend in die Template-Ansicht wechseln (Erweiterungen/Templates/Templates).

21.5.1    Festlegen der Positionen

Wie Sie es aus den Joomla!-Templates kennen, werden auch im SEBLOD-Formular die Positionen in der templateDetails.xml bestimmt.

001

<?xml version="1.0" encoding="utf-8"?>

002

<extension type="template" version="3.3" method="upgrade">

003

<name>SEBLOD_Grundtemplate</name>

004

<creationDate>28.10.2014</creationDate>

005

<author>Axel Tüting</author>

006

<copyright>Axel Tüting</copyright>

007

<authorEmail>Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!;/authorEmail>

008

<authorUrl>www.time4mambo.de</authorUrl>

009

<version>1.0</version>

010

<description>Ein ganz einfaches SEBLOD-Template – Ein Grundgerüst mit dem Sie weiterarbeiten können</description>

011

 

012

<files>

013

   <folder>css</folder>

014

   <folder>images</folder>

015

   <folder>positions</folder>

016

   <folder>variations</folder>

017

   <folder>fields</folder>

018

   <folder>includes</folder>

019

   <folder>languages</folder>

020

    <filename>config.php</filename>

021

   <filename>index.php</filename>

022

    <filename>templateDetails.xml</filename>

023

    <filename>index.html</filename>

024

</files>

025

 

026

<languages folder="languages">

027

  <language tag="en-GB">en-GB/en-GB.tpl_seb_one.ini</language>

028

   <language tag="de-DE">de-DE/de-DE.tpl_seb_one.ini</language>

029

</languages>

030

 

031

<positions>

032

   <position>links</position>

033

   <position>rechts</position>

034

</positions>

035

 

036

</extension>

Anders als im Joomla!-Template legen Sie nicht den client fest, sondern die method= upgrade. Das SEBLOD-Template greift sowohl im Front- als auch im Backend. Im oberen Abschnitt geben Sie Informationen zum Ersteller des Templates, der vermutlich Sie sind, ein. Sie finden diese Angaben im Backend bei den Templates wieder.

Im Abschnitt files binden Sie die Verzeichnisse und deren Dateien und einzelne Dateien ein. Sie können auch Sprachdateien definieren, die Sie entsprechend einbinden. In diesem ersten Beispiel habe ich zwei Positionen definiert. Eine für links und eine für rechts. Wenn Sie dieses Template auswählen, erhalten Sie im Inhaltstyp diese beiden Positionen.

21.5.2 Damit überhaupt etwas ausgegeben wird: config.php

Die config.php können Sie aus dem bestehenden tpl_seb_one kopieren. Das Template finden Sie im Übrigen auch im Template-Verzeichnis von Joomla!.

001

<?php

002

defined( '_JEXEC' ) or die;

003

global $user;

004

$app =         JFactory::getApplication();

005

$path_lib =     JPATH_SITE.'/libraries/cck/rendering/rendering.php';

006

$user =        JCck::getUser();

007

if ( ! file_exists( $path_lib ) ) {

008

print( '/libraries/cck/rendering/rendering.php file is missing.' );

009

die;

010

}

011

require_once $path_lib;

012

?>

Zwecks besseren Lesens des Codes spare ich am Anfang die @package-Hinweise etc.

Neben dem Setzen einiger globaler Variablen sind hier die Zuweisung und die Abfrage auf das Vorhandensein der rendering.php entscheidend.

Die rendering.phprendering bedeutet frei übersetzt Ausführung – sorgt dafür, dass das gesamte Back- und Frontend überhaupt angezeigt und ausgegeben werden kann. Dazu gehört so ziemlich alles, was SEBLOD ausmacht. Wie Sie gleich sehen werden, nutzen wir die Methoden der rendering.php, weshalb es auch sehr wichtig ist, dass diese Datei eingebunden ist.

Sie sollten allerdings Änderungen nicht in dieser SEBLOD-Core-Datei vornehmen. Das können Sie an anderer Stelle besser machen. Außerdem wird beim nächsten Update die rendering.php vielleicht wieder überschrieben. Die rendering.php lädt denn auch Ihre Einstellungen und Ihre App mit allem, was dazugehört.

Sie könnten auch auf die config.php verzichten und den Code direkt an den Anfang der index.php setzen. Da aber die Möglichkeit besteht, seine eigene Rendering-Klasse zu erstellen, ist es zwecks besseren Überblicks besser, wenn Sie solcherlei in der config.php belassen. Sie folgen damit der SEBLOD-Struktur. Und da es ja auch sein kann, dass Sie Ihre Applikationen weitergeben, kann ein Nachfolger Ihre Dateien und Änderungen sauber nachvollziehen.

Ein Beispiel für eine eigene Rendering-Klasse können Sie dem kostenlosen SD Simple Simon Template[2] entnehmen. Sie benötigen hierfür allerdings vertiefte Programmierkenntnisse, was den Rahmen dieses Buches sprengen würde.

21.5.3 Die eigentliche Ausgabe: index.php

Die index.php ist die Datei, die dafür sorgt, dass unsere Felder ausgegeben werden und dass wir mit ihnen arbeiten können. Nachdem Sie die config.php eingebunden haben und somit die rendering.php ansprechen können, benutzen wir deren Methoden, um unsere Felder zur Anzeige zu bringen.

001

<?php

002

defined( '_JEXEC' ) or die;

003

require_once dirname(__FILE__).'/config.php';

004

$cck = CCK_Rendering::getInstance( $this->template );

005

if ( $cck->initialize() === false ) { return; }

006

echo $cck->renderPosition( 'links' );

007

echo $cck->renderPosition( 'rechts' );

008

?>

In $cck steht quasi unser Template als Objekt. Mit $cck->renderPosition sprechen Sie unser Template an und rufen die Methode renderPosition in der rendering.php auf. Diese Methode sorgt dafür, dass unsere Felder in unseren Positionen auch angezeigt werden.

08 03

Bild 21.14: Zwei Positionen und jeweils ein einfaches Textfeld im Inhaltstyp.

Alles, was Sie nun noch tun müssen, ist, aus den Verzeichnissen und Dateien eine ZIP-Datei zu erstellen und sie Ihren Formularen zuzuweisen.

21.5.4 Rendering-Variationen

Statt alle Positionen Ihres Templates einzeln anzusprechen, so wie ich es in dem überschaubaren Beispiel oben gemacht habe, können Sie auch eine Schleife über Ihre Positionen legen, was besonders dann sinnvoll ist, wenn Sie viele Positionen in Ihrem Template haben.

001

foreach($this->positions as $position => $fields){

002

if($cck->countFields($position)){

003

   echo $cck->renderPosition($position);

004

};

005

};

Sie können hier auch sehr gut HTML-Code mit übergeben. Um eine DIV-Klasse, um die Felder zuzuweisen, können Sie die Schleife folgendermaßen erweitern:

001

foreach($this->positions as $position => $fields){

002

if($cck->countFields($position)){

003

   echo "<div class=".trim(strtolower($position)).">";

004

   echo $cck->renderPosition($position);

005

   echo "</div>";

006

};

007

};

Sie erhalten nun ein div mit einer Klasse gleichen Namens wie die Position:

001

<div class="links">

002

<div id="cck1r_links" class="cck-pos-links seb_css3 vertical cck1rdeepest">

003

<div id="cck1r_feld_links" class="cck_forms cck_admin cck_text

 

cck_feld_links"><div id="cck1r_label_feld_links" class="cck_label cck_label_text">

004

<label for="feld_links">Feld Links</label>

005

</div>

006

<div id="cck1r_form_feld_links" class="cck_form cck_form_text">

007

<input type="text" id="feld_links" name="feld_links" value="" class="inputbox text" size="32" maxlength="255" />

008

</div>

009

</div>

 

21.5.5 Der Ordnung halber: die eigene CSS-Datei

In der Ordnerstruktur des SEBLOD-Templates gibt es auch ein Verzeichnis namens css. Es liegt nahe, dort eine CSS-Datei unterzubringen.

08 11Bild 21.15: Eigene CSS-Dateien einbinden.

Es reicht allerdings nicht, dort einfach eine CSS-Datei hineinzuschreiben – sie muss auch eingebunden werden. Das machen Sie in Ihrer index.php. Als Beispiel habe ich eine kleine CSS-Datei mit dem Namen meine.css erstellt. Ich möchte den Beitragstext links um 150 Pixel einrücken und ihn in roter Schrift ausgeben. Der CSS-Code dafür:

001

#cck5_value_buchtext {

002

padding:0 0 0 150px;

003

color:#E8143C;

004

width:500px;

005

}

In die index.php meines Templates muss ich diese Datei noch einbinden. Dazu schreibe ich folgende Zeilen an den Anfang meiner Datei:

001

$doc = JFactory::getDocument();

002

$doc->addStyleSheet( JURI::root( true ).'/templates/'.$cck->template.

'/css/'.meine.css' );

Mit getDocument ist die Datei gemeint, die im Browser ausgegeben wird. Diese wird quasi in $doc gespeichert. Mit addStyleSheet weisen Sie dieser Ausgabe Ihre CSSDatei zu.

Wenn Sie zur Laufzeit den Quelltext der Ausgabe anschauen, dann finden Sie im Header diese Zeile:

001

<link rel="stylesheet"href="/j336/templates/seb_one/css/meine.css" type="text/css" />

Übrigens gründet sich letztlich auf die Möglichkeit der eigenen CSS-Datei auch das Verzeichnis images. Wie von den Joomla!-Templates bekannt, liegen hier meistens Grafiken, die zu Layoutzwecken genutzt werden, die einfach mit relativen Pfaden von der CSS-Datei aufrufbar sind.

Wer nicht so bewandert mit den relativen Pfaden ist:

001

#beispiel {

002

Background: url(/../images/meinBild.jpg);

003

}

Da die CSS-Datei im Verzeichnis css liegt, müssen Sie zuerst mit ../ eine Verzeichnisebene zurück- und dann direkt in das images-Verzeichnis hineingehen. Um eine eigene HTML-Ausgabe des Templates zu erstellen, passen Sie die markup.php im Verzeichnis fields an.

21.6         Globale Methoden und Eigenschaften

Es gibt einige fertige Methoden und Eigenschaften, die Sie in Ihren Individualanpassungen übernehmen können. Hier eine kleine Liste mit diesen Befehlen. FELDNAME müssen Sie jeweils mit dem Alias Ihres Feldes ersetzen.

     

$cck-> Gibt Ihnen den Inhalt des Labels für das getLabel(´FELDNAME´) Feld aus.

$cck-> Gibt den Inhalt des Feldes aus. getValue(´FELDNAME´)

$cck->                 Gibt Ihnen den kompletten Code aus, der

getHTML(´FELDNAME´) erzeugt wird, wenn Sie bei den Nummern Link und Typografie auswählen und einen Link zuweisen.

Beispiel einer Ausgabe mit Typografie Fett:

<strong>Max Frisch: Stiller</strong>

     

$cck->                 Gibt Ihnen den kompletten Code aus, der

getTypo(´FELDNAME´) erzeugt wird, wenn Sie bei den Nummern Link und Typografie auswählen und eine Typografie zuweisen.

Beispiel einer Ausgabe:

<a href="/ /index.php/belletristik?id=3:maxfritsch-stiller">Max Frisch: Stiller</a>

$cck->                 Wenn Sie ein Feld haben, das Ihnen als

getText(´FELDNAME´)     Value eine ID zurückgibt, können Sie mit diesem Methodenaufruf stattdessen den zugehörigen Text ermitteln.

In einer Checkbox wird Ihnen der Text der aktivierten Checkboxen ausgegeben, genau so bei den Radiobuttons.

Beispiel:

$cck->getValue('art_catid');

//Liefert das Ergebnis: 10

$cck->getText('art_catid');

//Ergibt als Rückgabe den Kategorienamen »Belletristik«

$cck->                 Sowohl das Label als auch der Inhalt des

renderField(´FELDNAME´) Feldes (Value) werden ausgegeben. Das Label kann mit einem clear im Inhaltstyp jedoch explizit gesperrt werden. Genau so wie ein Deaktivieren der Labelausgabe in den Template-Optionen des Inhaltstyps.

$cck->getDescription    Gibt den Beschreibungstext eines Feldes

(´FELDNAME´)           aus.

$cck->id               Liefert Ihnen die ID der aktuell verwendeten Formularausgabe zurück.

Beispiel:

cck5

Diese ID wird als Präfix vor verschiedenen HTML-IDs und -Klassen benutzt:

<div id="cck5_topbody" class="cck5-deepest">

 


[1] Unter http://www.seblod.com finden Sie auch fertige Templates zum Downloaden.

[2] http://www.seblod.com/products/2315


webdesign von time4mambo

www.time4joomla.de is not affiliated with or endorsed by the Joomla! Project or Open Source Matters. The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.