Joomla 1.5 Template Befehle

Achtung, öffnet in einem neuen Fenster. Drucken

Joomla 1.5 TemplatebefehleSeit der neuen Joomla Version 1.5 hat sich auch hinsichtlich der Templategestaltung einiges getan. Hier finden Sie eine Übersicht über die nunmehr wichtigsten und von uns am häufigsten gebrauchten Joomla 1.5 Template Befehle.


Übersicht über die wichtigsten Joomla 1.5 Template Befehle.

Allgemein

Joomla Stammverzeichnis: <?php $this->baseurl ?>

Seitenname: <?php echo $mainframe->getCfg('sitename'); ?>

Titel: <?php echo $mainframe->getPageTitle(); ?>

Beschreibung: <?php echo $this->description ?>

Aktives Template: <?php echo $this->template ?>

Sprache: <?php echo $this->language ?>

Template Parameter: <?php $this->params->get('ParameterName'); ?>

JText: <?php JText::_('Text');?>

Datum/Zeit: <?php $date = new JDate(time()); echo $date->toFormat(); ?>

Artikel Parameter: <?php print_r($this->params); ?>

Artikel Eigenschaften: <?php print_r($this->article); ?>


Über dem Head (Kopfbereich)

<!-- Kein direkter Zugriff -->
<?php defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
<!-- Doctype -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- HTML -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >

Head

<!-- Joomla Head integrieren -->
<jdoc:include type="head" />
<!-- CSS Datei(en) laden -->
<link rel="stylesheet" href=”<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />

<!-- Optional: Conditional Comments für bestimmte Browser, Beispiel (kleiner als ie6): -->
<!--[if lte IE 6]>
<link href="/templates//css/ie6down.css" type="text/css" />
<![endif]-->

<!-- Optional: laden von externen Javascript Dateien, Beispiel: -->
<script type="text/javascript" src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/javascript/NameDerDatei.js"></script>

Joomla Meldungen

(Joomla Ausgabe von Warnungen, Fehlern und Hinweisen, wird häufig vergessen)

<jdoc:include type="message" />


Joomla Inhalt

<jdoc:include type="component" />


Joomla Module (Beispiele)

<jdoc:include type="modules" name="top" style="" />
<jdoc:include type="modules" name="left" style="" />
<jdoc:include type="modules" name="right" style="" />
<jdoc:include type="modules" name="user1" style="" />
<jdoc:include type="modules" name="breadcrumbs" style="" />
<jdoc:include type="modules" name="search" style="" />
<jdoc:include type="modules" name="syndicate" style="" />
<jdoc:include type="modules" name="debug" style="" />


Joomla Modulestyles (Chromes)

(die Angabe eines Modulestyles ist optional, standart ist "none")

Grundsätzlich gibt es 4 verschiedene Modulstyles, die eine jeweils andere HTML Ausgabe erzeugen:

XHTML:

<div class="moduletable">
<h3>Modul Titel</h3>
Modul Inhalt
</div>

rounded

<div class="module">
<div>
<div>
<div>
<h3>Modul Titel</h3>Modul Inhalt
</div>
</div>
</div>
</div>

table

<table cellpadding="0"cellspacing="0" class="moduletable">
<tr>
<th valign="top">Modul Titel</th>
</tr>

<tr>
<td>Modul Inhalt</td>
</tr>

</table>

raw

<table cellpadding=0"cellspacing="1" border="0" width="100%">
<tr>
<td valign="top">
<table cellpadding="0"cellspacing="0" class="moduletable">
<tr>
<th valign="top">Modul Titel</th>
</tr>
<tr>
<td>Modul Inhalt</td>
</tr>
</table>
</td>
</tr>
</table>
und als 5. (aber eigentlich kein style):

none

Modulinhalt

Sie sind nicht an diese Modulchromes gebunden, sondern können auch eigene Chromes erstellen und einbinden. Wie das geht zeigen wir Ihnen in unserem Tutorial: Eigene Joomla Module Chromes erstellen.

if Abfragen (Checken, ob Module Inhalt haben)

Seit Joomla 1.5 wird die Modulabfrage über $this->countModules() gesteuert:

Einfache if Abfrage

<!-- Check, ob eine Modulposition (right) Inhalt hat -->
<?php if ($this->countModules( 'right' )) : ?>
<!-- dann soll folgendes geschehen: Modulposition soll angezeigt werden -->
<jdoc:include type="modules" name="right" style="xhtml" />
<?php endif ?>

Für 2 Modulpositionen

<!-- Check, ob Modulposition 1 (user1) und/oder Modulposition 2 (user2) Inhalt haben -->
<?php if ($this->countModules( 'user1 and/or user2' )) : ?>
<!-- dann soll folgendes geschehen Modulpositionen sollen angezeigt werden -->
<jdoc:include type="modules" name="user1" style="xhtml" />
<jdoc:include type="modules" name="user2" style="xhtml" />
<?php endif ?>

Modulpositionen zählen

<?php echo ($this->countModules( 'user1 + user2' )) : ?>

Gibt die Anzahl der enthaltenen Module aus.

GN Template Tipps



Kommentare 

 
#1 Andreas 2009-06-14 15:47
Das Prüfen, ob Module einen Inhalt besitzen, lässt sich auch über das jdoc:exists-Tag.ermitteln:
Zitieren
 
 
#2 David Neukirchen 2009-09-22 23:37
Ja, auch mit jdoc:exists ist es möglich. Wir wollten uns in dieser handlichen Übersicht allerdings auf eine Methode beschränken.
Zitieren
 
 
#3 Mario 2010-01-29 22:13
Hallo

also ehrlich gesagt bin ich über beide Tipps froh. :)
Zitieren
 
 
#4 Tobias 2010-02-19 10:01
Vielen Dank für diese hilfreiche Liste!

Gibt es denn auch eine Möglichkeit, die Meta-Keywords ähnlich wie die Beschreibung anzusprechen?
Ich habe es schon in der Art probiert $this->keywords, funktionierte jedoch nicht.

Ich möchte nämlich gern den jdoc head weglassen, die Meta-Angaben jedoch übernehmen.

Tipps willkommen! ;)
Zitieren
 
 
#5 David Neukirchen 2010-02-19 11:43
Hallo Tobias,

mit

$document =& JFactory::getDo cument();
$keywords = $document->getMetaData('keywords');
echo $keywords;

kannst du auch die meta keywords im template "ansprechen" und ausgeben.
Zitieren
 
 
#6 Tobias 2010-02-19 11:49
Perfekt!
Vielen Dank.
Zitieren
 
 
#7 rk 2010-05-28 04:00
Kann man im Template die exakte Komponente abfragen? Komponenten haben meist keine ItemID o.ä. im URL, daher wäre es ganz hilfreich, die gerade angezeigte Komponente zu ermitteln… vielleicht sogar deren Parameter und Tasks erkennen?… dann kann man entsprechend darauf reagieren.

Hat da jemand einen Tipp?
Zitieren
 
 
#8 David Neukirchen 2010-05-28 14:14
Für diese Abfrage kannst du mit 'JRequest::getVa r()' arbeiten und beispielsweise die Variable 'option' abfragen.
Sähe dann so aus:

$option = JRequest::getVa r('option');
echo $option;

Liefert den Namen der Komponente, bspw. com_content.
Zitieren
 
 
#9 rk 2010-05-28 20:02
zitiere David Neukirchen:
Für diese Abfrage kannst du mit 'JRequest::getVa r()' arbeiten und beispielsweise die Variable 'option' abfragen.
Sähe dann so aus:

$option = JRequest::getVa r('option');
echo $option;

Liefert den Namen der Komponente, bspw. com_content.


Vielen Dank!!! Genau so etwas habe ich gesucht. Werde es mal testen.
Zitieren
 
 
#10 rk 2010-05-29 04:05
Ich muss leider nochmal blöd nachfragen.
Ich wollte einen Parameter einer Komponente abfragen..
Abhängig vom Ergebnis, müßte ich dann per javascript eine Case-Abfrage machen o.ä.

Ich kenne zwar die Logik von anderen Sprachen, bin aber beim Mixen der PHP und javascript-Syntax eher (noch) unbewandert.

Wenn es nicht zu frech und faul erscheint ;-) würde ich gerne einen Tipp dazu bekommen. Mit meinem Halbwissen konnte ich leider nicht die gewünschte Information er-googlen.

Von der Logik brauche ich folgendes…

- Bin ich auf der Komponenten Seite?
Wenn ja, dann:
- Hole und prüfe die URL auf einen weiteren Parameter "P"
javascript Case:
- Ist "P" = "Wert1" dann setze per Script ein Selectfield auf diesen Wert.
- Ist "P" = "Wert2" dann setze per Script ein Selectfield auf diesen Wert
- usw.

Ohne javascript geht es wohl nicht?!
Bisher wurde das gleiche Prinzip mit jQuery, GetURLParam.js und Selectbox.js gemacht.
Leider gibt es mit jQuery einen Konflikt.


Danke!!!
Zitieren
 
 
#11 alfred 2010-06-01 14:47
Hallo,

ich habe ein modul, das nur eingeloggten usern angezeigt werden soll.

jedoch hat die div-id die die background-farbe weiß. wie kann ich es einstellen, dass dieses div nur angezeigt wird, wenn der user eingeloggt ist?
danke schon im voraus! :)
Zitieren
 
 
#12 David Neukirchen 2010-06-01 17:38
in den einstellungen des moduls im backend.
erweiterungen->module->deinModul->Zugriffsebene (Registriert).
Zitieren
 
 
#13 Adrian 2010-07-05 15:37
Danke für die schöne Zusammenfassung :)
Ich hätte da mal eine Frage zu: Man kann mit ($this->countModules( 'x' )) auslesen wieviele module sich auf einer Position befinden.
Kann man auch irgendwie die Reihenfolge der der Module auf einer Position auslesen? Ich würde gerne in meinem Chrome gezielt das erste bzw. das letzte Modul auf einer Position ansprechen um eine zusätzliche Klasse zu übergeben.
Zitieren
 
 
#14 David Neukirchen 2010-07-05 17:09
In unserem Tutorial zu den Joomla Module Chromes findest du einige Hinweise zur Chrome erstellung:
gn-webdesign.de/.../...

leider funktioniert $module->ordering nicht, mit der man die Reihenfolge, wie du es planst, leicht verarbeiten könnte.

Deine Frage war trotzdem sehr interessant. Mir ist auf die schnelle keine einfache Lösung eingefallen.

Serverseitig könnte man es über umwege so umsetzen:
gn-webdesign.de/.../...

Allerdings geht es auch schneller und einfache mit javascript Mootools (getFirst, getLast + addClass …)
Zitieren
 
 
#15 harald 2010-11-22 17:45
hi, habe einen Fehler bei folgender Anweisung gefunden, /templates//css/template.css" type="text/css" />

nach dem href="/ gehört der / weg, sonst nimmt er das CSS-File nicht, trotzdem danke für die infos, haben mir geholfen.
Zitieren
 
 
#16 Sven 2011-02-08 17:09
Ich finds fein das Ihr sone Liste erstellt habt, aber wenn dann solltet Ihr etwas mehr schreiben zu einigen Dingen, die meisten die es lesen haben nämlich null Plan.

Kleiner Tipp noch, $mainframe is deprecated seit es Joomla 1.5 gibt :P
bzw. sind alle globals deprecated seit Joomla 1.5
Zitieren
 
 
#17 BCP-Design 2011-09-22 12:34
Ich finde die Liste sehr gut! Genau so etwas habe ich gesucht wo man einfach mal auf die Schnelle nachsehen kann.

Zudem erstellen wir Joomla-Templates sehr selten weshalb das nochmal interessanter für uns ist. Vielen Dank!
Zitieren
 
 
#18 stroberry 2011-10-27 13:25
Hallo,
tolle Aufstellung. Ich wollte den Befehl zum Auslesen des Seitentitels (also Beitragstitel, nicht Menütitel!) benutzen, aber es funktioniert leider nicht. Ich nutze allerdings schon Joomla 1.7, aber daran kann es doch eigentlich nicht liegen?
Vielen Dank
Zitieren
 
 
#19 Nerd 2012-01-12 17:11
zitiere Andreas:
Das Prüfen, ob Module einen Inhalt besitzen, lässt sich auch über das jdoc:exists-Tag.ermitteln:

cooolll
Zitieren
 
 
#20 icetears 2012-07-31 14:04
I would have got a question about: you can ($ this-> modules count ('x')) to read how many modules are in one position.
Is it possible to somehow retrieve the order of the modules on a position?
Zitieren
 
 
#21 Rasenmäher 2012-09-26 13:22
zitiere David Neukirchen:
Hallo Tobias,

mit

$document =& JFactory::getDo cument();
$keywords = $document->getMetaData('keywords');
echo $keywords;

kannst du auch die meta keywords im template "ansprechen" und ausgeben.

Hallo
ich weiss, der Beirag is schon etwas älter…benutze aber teilweise noch 1.5 und hab mir nen Wolf gesucht wie man Kewords auslesen kann.

Ähmm Frage: Stimmt der obige Code? er verursacht bei mir einen Fehler
Zitieren