countModules

Die countModules Funktion ist in Joomla! zum Zählen von Modulpositionen. Damit kann abgefragt werden, ob eine bestimmte Position auf der aktuellen Seite gerade aktiv ist.

Da es in JYAML dynamische Modulpositionen gibt, ist die in Joomla! integrierte countModules Funktion nicht für jeden Fall geeignet. Außerdem gibt es in den Layout Optionen die Einstellung "Leere Module zählen" womit zusätzlich der Inhalt geprüft werden muss. Aus diesem Grund wurde die countModules Funktion erweitert.

Was die Funktion grundsätzlich macht wird in der Joomla! Dokumentation beschrieben: http://docs.joomla.org/JDocumentHTML/countModules

Grundsätzlich hat sich nichts verändert. Nur wenn man speziell dynamische Template Positionen überprüfen möchte, gilt folgende Syntax.

Zählen einer normalen Modulposition

Dies ist unabhängig davon, ob sich die Position in einer dynamischen Position befindet.

Siehe Joomla! Dokumentation: http://docs.joomla.org/JDocumentHTML/countModules

Zählen einer dynamischen Position inklusive aller enthaltenen Unterpositionen

Wir haben z.B. die Dynamische Position "col1_content". Diese enthält die Modulpositionen left1, left2 und left3.

Beispiel: $this->countModules('col1_content') oder $this->countModules('col1_content:*')

Wie Sie sehen, funktioniert dies genauso wie das Zählen einer normalen Modulposition. Nur mit dem Unterschied, dass alle Unterpositionen mit überprüft werden.

Zählen einer spezifischen Unterposition innerhalb einer dynamischen Position

Wir haben z.B. die dynamische Position "col1_content". Diese enthält die Modulpositionen left1, left2 und left3. Nun möchten wir nur left2 innerhalb von col1_content zählen.

Beispiel: $this->countModules('col1_content:left2')

Wie Sie sehen, wird die dynamische Position und die Modulposition mit einem Doppelpunkt (:) getrennt.

Weitere Beispiele

Joomla! hat des Weiteren noch spezielle Positionen, z.B. vom Typ "component" oder "message". Normalerweise prüft man diese über die getBuffer Funktion. Speziell diese zwei Typen können in JYAML auch direkt über countModules geprüft werden. Dazu muss eine Raute (#) vorangestellt werden.

Beispiel: $this->countModules('col3_content:#component')

Folgend noch ein paar Beispiele mit Vergleichsoperatoren.

  • $this->countModules('col1_content OR col2_content OR col3_content')
  • $this->countModules('col1_content:left AND col2_content:right XOR col3_content:col3_top')
  • $this->countModules('main_navigation:* XOR top_navigation:*')

Für reale Anwendungsbeispiele sehen Sie sich einfach die HTML-Templates in /html/index/ an.

Tipp: Anwendung innerhalb von Joomla! Template Output Override Dateien

Wenn man sich nicht in den Haupt-HTML Template Dateien befindet, ist $this nicht vom Objekt JDocumentHTML bzw. nicht vom Objekt JYAML. Hier müssen Sie zuerst die Instanz aufrufen um eine Objekt Referenz zu erhalten.

Mit JYAML:

$document = JYAML::getDocument();
$document->countModules('...');

Ohne JYAML (geht mit jedem Joomla! Template)

$document = JFactory::getDocument();
$document->countModules('...');