HTML erlauben bei Usereingaben
Joomla hat ab einer der letzten Versionen - ich glaube 1.5.14 - die durchaus vernünftige Eigenschaft, dass HTML in $_GET und $_POST Parametern automatisch gefiltert wird. Das ist zwar grundsätzlich gut, blöd ist es nur wenn man nichts davon weiß und dich die ganze Zeit wundert wieso vor verschiedenen Zeichen auf einmal nur mehr Slashes auftauchen, sprich diese escaped werden. Egal, nach langer Suche weiß ich jetzt wie man damit umgeht:
$parameter = JRequest::getVar( 'parameter', '', 'post', 'string', JREQUEST_ALLOWHTML );
Suchmaschinenfreundliche Urls mit mod_rewrite Problem
Also irgendwie verkommt das hier ja schon fast zu einem reinen Joomla-Blog...
Egal ![]()
Hab gestern ein Joomla auf einen 1und1 Webspace installiert und irgendwie haben die Suchmaschinenfreundlichen URLS mit mod_rewrite nicht funktioniert und der Server hat mir die ganze Zeit den Status "500 -Internal server error" zurückgegeben. Die Lösung des Problems liegt in der .htaccess-Datei. Warum ist mir ein Rätsel (wie so circa alles, was sich in einer htaccess befindet).
Es müssen einfach zwei Zeilen geändert werden:
- Die Zeile "Options +FollowSymLinks" muß auskommentiert werden, sprich einfach in "#Options +FollowSymLinks" ändern.
- Bei der Zeile "#RewriteBase / " soll der Kommentar (das "#") entfernt werden, also in "RewriteBase / " ändern. Falls Joomla in einem Unterverzeichnis relativ zum Document Root installiert wird (beispielsweise "http://domain.com/cms/" muss die Zeile dementsprechend in "RewriteBase /cms/ " geändert werden.
Lösung gefunden auf joomlaportal.de (wie so oft)
Interner Link im Joomla-Template
Manchmal kann es notwendig sein, einen internen Link direkt ins Joomla Template einzufügen. Die naheliegendste Möglichkeit ist wohl, auf die entsprechende Seite im Browser zu gehen, die URL zu kopieren und im Template einzufügen. Allerdings kann sich der Name der Seite (und damit unter Umständen der Alias) ändern und das ergibt dann ungültige Links auf der Seite. Diese gilt es zu vermeiden.
Nun, die Lösung ist eigentlich ganz einfach und heißt JHTML::link(). Das ist die Funktion, die aus einer URL mit GET-Parametern eine schöne Joomla-URL macht.
Also, zuerst müssen wir den Link zusammenbauen:
Einen Artikel verlinken
Im Joomla-Backend auf die Beitragsübersicht gehen um die ID des Artikels herauszufinden (in der ganz rechten Spalte):

Die ID wird dann an den folgenden Link statt xyz angehängt.
index.php?option=com_content&view=article&id=xyz
Oft will man aber nicht auf den Beitrag, sondern auf einen bestimmten
Menüpunkt verlinken
Dazu geht man im Backend auf ein Menü, und wählt den entsprechenden Menüeintrag aus. In der Detailansicht sieht man dann die ID des Menüeintrags (Menü-Item), die man benötigt:

Auch hier wird die ID (in diesem Fall 54) an den Link angehängt:
index.php?Itemid=xyz
Ins Template einfügen
Nun muß der Link nur noch an der gewünschten Stelle ins Template eingefügt werden:
<?
echo JHTML::link('index.php?Itemid=xyz','Linktitel', $attribute);
?>Mögliche HTML Attribute des Link-Tags können über das assoziative Array $attribute übergeben werden, z.B.:
<?
$attribute = array('class'=>'menulink', 'title'=>'Zum Menü');
echo JHTML::link('index.php?Itemid=xyz','Linktitel', $attribute);
?>
Joomla Tipps #3
Größe des Email-Popups ändern für Joomla 1.5
Das Ändern der Größe des mailto-Popups von Joomla ist eigentlich sehr einfach, wenn sich auch die Frage stellt, warum es dazu nicht einfach ein kleines Konfigurations-Tool im Backend gibt...
Die Einzige Voraussetzung ist eigentlich, dass man Zugriff auf das Dateisystem des Servers, auf dem Joomla installiert ist, hat. Man sucht die Datei "<Wurzelverzeichnis>/components/com_content/helpers/icon.php", öffnet diese und sucht die Funktion email() - bei mir in Zeile 64. In dieser Funktion findet man die Zeile
$status = 'width=400,height=300,menubar=yes,resizable=yes';
Einfach nach "width=" die gewünschte Breite und nach "height=" die Höhe in Pixel eintragen, speichern und die Datei wieder hochladen.
So einfach kanns sein...
Joomla-Tipps #2
User-ID herausfinden
Für alle möglichen Zwecke kann es bei der Komponenten- und Modulentwicklung nützlich die User-Id herauszufinden.
Das geht ganz einfach mittels der JFactory-Klasse, die das User-Objekt des aktuellen Users zurückgibt:
$user =& JFactory::getUser();
$userid = $user->get('id');
Auf die Datenbank zugreifen
Auch auf das Datenbank-Objekt kann man über die JFactory zugreifen:
$db =& JFactory::getDBO();
In einigen Klassen kann auch einfach über
$db =& $this->getDBO();
zugegriffen werden. Das sind (zumindest, die, die mir bekannt sind) die Klassen JModel und JTable, bzw. deren Unterklassen.
Joomla-Tipps
Sprache Herausfinden
Oft ist es interessant, die Sprache des aktuellen Users festzustellen, etwa wenn man aus mehreren Sprachen auswählen kann. Das geht ganz einfach mittels:
$language = JFactory::getLanguage();
Nun bekommt man ein JLanguage-Objekt, durch den Aufruf der Methode 'getTag()' erhält man das Sprachkürzel in der Form 'de-DE':
$tag = $language->getTag();
Layout im Menü-Maager verstecken / Layout (um)benennen
Bei der Entwicklung von Komponenten ist es oft wichtig, im Menümanager des Backends ein Layout einer View zu verstecken, oder dem Layout einen ansprechenderen Namen zu geben.
Dazu legt man in dem 'tmpl'-Ordner der View ein neues XML-File an. Den Namen der Datei bestimmt der Name des Layouts. Ist das Layout-File beispielsweise 'show_item.php', muss die XML-Datei 'show_item.xml' heißen. Um das Layout zu verstecken muss die XML-Datei nun folgenden Aufbau haben:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<layout hidden="true" />
</metadata>
Um dem Layout einen ansprechenden Namen zu geben, muss sie folgenden Inhalt haben:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<layout title="Alle Items anzeigen"></layout>
</metadata>
Komponenten für Joomla entwickeln
Es gibt eigentlich 2 gute Quellen bzw. Tutorials für die Entwicklung von Komponenten für Joomla 1.5: Das Online-Buch von Hagen Graf und die Joomla Tutorials (Englisch).
