Tricksen in Joomla

0 | 6143 Aufrufe
Sie können diese Wikiseite nach der Anmeldung auf Webmasterpro bearbeiten. Helfen Sie mit und verbessern Sie "Tricksen in Joomla" mit Ihrem Wissen!

Anzeige Hier werben

Es passiert manchmal so, dass man in Joomla die nötige Funktionalität nicht hat, weil diese von Entwicklern nicht vorgesehen ist. Auch eine Fülle von Erweiterungen in Form von Komponenten, Module oder Plug-Ins bietet das nicht an. In solchen Fällen bleibt eines - entweder die Problematik sein lassen oder einen Umweg suchen. Ich zeige hier ein Paar solche Umwege. Die folgenden Tipps funktionieren in Joomla 1.5.

Tipp 1 - Menüpunkte für verschiedene Sprachen ausblenden

Mithilfe von JoomFish! kann man eine auf Joomla basierende Website ganz einfach mit Mehrsprachigkeit aufwerten. Aber stellen wir vor, manche Menüpunkte wären für verschiedene Sprachen irrelevant, so dass man diese gerne ausblenden würde. JoomFish! bietet diese Funktion nicht an soeben Joomla selbst. Die einzige Erweiterung, die diese Funktionalität anbietet ist Multilingual Menu Addon von JoomFish, die aber nur den JoomFish! Club Mitgliedern zu Verfügung steht und daher ziemlich teuer ist. Ich sage gleich, der folgende Trick ist ein ziemlicher Hack und ist nur für Notfälle sowie nur für kleinere Websites mit wenigen Sprachen geeignet. Vielleicht findet aber jemand das hilfreich.

Im Backend kopiert man das Menü, in dem die Punkte auszublenden sind und löscht diese Punkte - z.B. das Menu main-menu-de kopieren, die Kopie main-menu-en benennen und anschließend einen oder mehrere Punkte darin löschen.

Im Template in index.php werden nach Bedarf mehrere Positionen definiert, in denen die Menüs zu platzieren sind:

 
PHP
1
2
3
4
5
6
7
8
<div id="navigation">
  <?php if ($this->language=="en-gb") {?>
    <jdoc:include type="modules" name="menu-en" style="horz" />
  <?php } ?>
  <?php if ($this->language=="de-de") {?>
    <jdoc:include type="modules" name="menu-de" style="horz" />
  <?php } ?>
</div>

Hier habe ich zwei Positionen definiert, die bei verschiedenen Sprachversionen eingebunden werden.

In der templateDetails.xml Datei registrieren wir diese Positionen:

 
XML
1
2
3
4
5
6
<positions>
  ...
    <position>menu-de</position>
    <position>menu-en</position>
  ...
</positions>

Zuletzt muss man die Menüs verschiedenen Positionen zuweisen und schon ist das erledigt.

Tipp 2 - Mootools im Frontend ausschalten

Wie auch im vorherigen Fall, sieht Joomla keine Möglichkeit vor, die standardmäßig eingebundene Mootools-Bibliothek vom Backend aus auszuschalten. Das könnte aber sinnvoll sein, z.b. im Fall wenn eine andere JavaScript Bibliothek wie jQuery benutzt wird - erstens aus Grund von Fehleranfälligkeit, da Mootools auch den $-Selektor benutzt, und zweitens weil Mootools auch weitere 80-140KB zusätzliches Datentransfers je nach Variation verursachen würde.

Abschaltung machen wir wieder direkt im Template in index.php:

 
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$user = JFactory::getUser();
if ($user->get('guest') == 1 or $user->usertype == 'Registered') {
    $headerstuff = $this->getHeadData();    
    $tmp = array();
    foreach ($headerstuff['scripts'] as $path=>$type) {
         if ( !preg_match('#media/system/js#i', $path, $ar) ) $tmp[$path] = $type;
    }
    $headerstuff['scripts'] = $tmp;
    $this->setHeadData($headerstuff);
}

Dieser Code gehört ganz an Anfang direkt nach:

 
PHP
1
defined('_JEXEC') or die('Restricted access');

Wenn Sie alles richtig machen, wird Mootools im Frontend gar nicht eingebunden, im Backend aber wohl.


Wikiseite bearbeiten

Diese Seite kann von jedem registrierten Benutzer bearbeitet werden. Bisher hat 1 Person an der Seite "Tricksen in Joomla" mitgewirkt.

Sie haben einen Fehler entdeckt oder möchten etwas ergänzen? Dann können Sie nach der Anmeldung "Tricksen in Joomla" hier bearbeiten.

Mitarbeiter
  • Student der Fakultät Informatik an der HS Augsburg im 5. Fachsemester