Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Einleitung
2 Installation
3 Frontend
4 Backend
5 Inhalte erstellen und verändern
6 Eine erste Webseite
7 Das Website-Design
8 Benutzer und Bereiche
9 Module, Plug-ins, Komponenten
10 Pflege der Webseite
11 Eine Site aufbauen
12 Was macht ein Template aus?
13 Tools zur Template-Erstellung
14 Barrierefreiheit
15 Aus der Trickkiste
16 Joomla! als professionelle Geschäftsplattform
17 Online-Shop: VirtueMart
18 Formulare: BreezingForms und ChronoForms
19 Dokumentenverwaltung: Docman und Attachments
20 Kalender: JEvent und iWebCal
21 Bildergalerien: Zoom Media Gallery und JoomGallery
22 Joomla! als Community-Treff
23 Weblogs: IDoBlog und MMS Blog
24 Wiki: JoomlaWiki
25 Forum: FireBoard
26 Gästebücher
27 Noch mehr Kommunikation
28 Installation beim Webhost
29 Backup und Upgrade
30 Tools
31 Standard-Erweiterungen
32 Mehrsprachigkeit
33 Suchmaschinenoptimierung
34 Statistik
35 Performance
36 Datentransfer und FTP-Modus
37 Sicherheit
38 Troubleshooting
39 Mein erstes Modul
40 Die Joomla!-API
41 Plug-ins erstellen
42 Eine eigene Komponente
A Parameter der unterschiedlichen Menütypen
B Die Joomla!-API
C Glossar
D Inhalt der DVD
Stichwort
Ihre Meinung?

Spacer
<< zurück
Joomla! 1.5 von Anja Ebersbach, Markus Glaser, Radovan Kubani
Das umfassende Handbuch
Buch: Joomla! 1.5

Joomla! 1.5
geb., mit DVD
820 S., 34,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-881-1
Pfeil 41 Plug-ins erstellen
Pfeil 41.1 Funktionsweise
Pfeil 41.2 Plug-ins für den Inhalt
Pfeil 41.3 Ein passender Button
Pfeil 41.4 Plug-ins für die Suche


Rheinwerk Computing - Zum Seitenanfang

41.2 Plug-ins für den Inhalt topZur vorigen Überschrift

Die Aufgabe und Funktion unseres Plug-ins, das wir »HotLink« nennen wollen, ist es zum einen, eine einfache Funktion für interne Links zur Verfügung zu stellen, und zum anderen, alle externen Links im Inhalt mit einem Symbol als solche kenntlich zu machen. Dieses Symbol soll über einen Parameter auswählbar sein.

Sehen wir uns zunächst einmal die XML-Datei an:

1   <?xml version="1.0" encoding="utf-8"?> 
2   <install type="plugin" group="content" version="1.5"> 
3     <name>HotLink</name> 
4     <author>Markus</author> 
5     <creationDate>September 2008</creationDate> 
6     <copyright>(C) 2008 Markus</copyright> 
7     <license>GNU GPL</license> 
8     <version>0.1</version> 
9     <description>Links im Content</description> 
10    <files> 
11      <filename plugin="hotlink">hotlink.php</filename> 
12    </files> 
13    <params> 
16       <param name="image" type="imagelist" 
15              label="Symbol" default="globe3.png" 
16              directory="/includes/js/ThemeOffice" 
17              hide_none="1" hide_default="1" 
19              description="Icon für externe Links" /> 
20       </params> 
21  </install>

Listing 41.2 hotlink.xml

In Zeile 2 ist angegeben, dass es sich um einen Plug-in der Gruppe content handelt. Nach einigen Meta-Informationen (Zeilen 3–9) werden die Dateien angegeben, die zum Plug-in gehören (Zeilen 10 –14). In unserem Fall ist das nur die Datei hotlink.php. Danach wird der einzige Parameter eingeführt, der ein Bildauswahlfeld darstellt, wie wir es schon aus dem Modul kennen.

Im eigentlichen Plug-in werden wir uns zunächst der Erstellung interner Links widmen. Diese sollen im Text nach dem Schema

{hotlink=id text=linktext}

eingefügt werden können und müssen in die URL index.php?option=com_content&view=article&id=ID umgesetzt werden.

Um ein Plug-in einsetzen zu können, muss dieses zunächst registriert werden. Wie oben schon gesagt wurde, reagieren Plug-ins auf verschiedene Ereignisse. Die eigentliche Funktionalität wird in eine Methode verpackt. Die Registrierung dieser Methode für den Event wird von Joomla! selbst vorgenommen.

1   <?php 
2   defined( '_JEXEC' ) or die( 'Restricted Access'); 
3   jimport('joomla.plugin.plugin'); 
4 
5   class plgContentHotlink extends JPlugin { 
6      function plgContentHotlink( &$subject, $config ) { 
7         parent::__construct( $subject, $config ); 
8      } 
9      function onPrepareContent( &$article, &$params, $start) { 
10        $regex = "/{hotlink=([^\s]*)\s*text=([^\s]*)}/s"; 
11        $repl = '<a href="index.php?' 
13               .'option=com_content&view=article&id=$1">' 
14               .'$2</a>'; 
15        $article->text = preg_replace($regex, $repl, 
16                                      $article->text); 
17     } 
18  } 
19  ?>

Listing 41.3 hotlink.php

Die Zeile 2 verhindert wieder, dass das Skript ohne den Kontext von Joomla! aufgerufen wird. Danach wird die Plug-in-Basisklasse importiert (Zeile 3). In Zeile 5 wird das Hotlink-Plug-in von JPlugin abgeleitet, und anschließend wird der Konstruktor an die Basisklasse weitergegeben (Zeile 6 –8). Nun wird die Methode onPrepareContent definiert, die drei Argumente entgegennimmt. Für unsere Zwecke ist $article interessant, hier wird in der Eigenschaft text die Ausgabe des Beitrags hinterlegt, und wir können sie modifizieren.

In Zeile 10 wird ein regulärer Ausdruck definiert, der nach Mustern sucht, die mit {hotlink beginnen. Wichtig ist, dass die runden Klammern so gesetzt sind, dass sie genau die uns interessierende Information, nämlich die ID und die Beschriftung des Links, umschließen. In den Zeilen 11–14 wird der Link definiert, der den Plug-in-Befehl ersetzen soll. Beachten Sie, dass mit $1 (Zeile 13) und $2 (Zeile 14) auf den Inhalt der oben genannten Klammern zugegriffen wird. Nach diesen Vorbereitungen müssen wir nur noch in Zeile 15 und 16 die gerade vorbereitete Ersetzung vornehmen.

Um das Plug-in zu installieren, gehen Sie genauso vor, wie wir es in Abschnitt 9.4, »Neue Erweiterungen installieren«, bereits besprochen hatten. Damit werden die Dateien, die im <files>-Tag der XML-Datei angegeben sind, in das Gruppenverzeichnis unter joomla/plugins kopiert (in unserem Fall joomla/plugins/content), und es wird ein Eintrag in der Datenbank angelegt. Vergessen Sie nicht, unser Programm im Plug-in-Manager zu publizieren. Jetzt können Sie es bereits testen. Die weiteren Veränderungen im Programmcode können Sie zu Testzwecken direkt in der Datei joomla/plugins/content/hotlink.php vornehmen. Wenn Sie die Dateien jedoch neu benennen, müssen sie auch neu installiert werden.

Die zweite Aufgabe, die wir uns gestellt hatten, soll an jeden externen Link ein Symbol anhängen. Das geht im Prinzip wie oben: Wir brauchen ein Erkennungsmuster für externe Links und eine Ersetzung. Der Code wird in der Methode nach den bereits existierenden Befehlen eingefügt.

9      function onPrepareContent( &$article, &$params, $start) { 
... 
17        $image = $this->params->get('image', 'globe3.png'); 
18        $regex="/(<a\shref=(\"|')http:\/\/[^>]*>([^<]*))" 
19              ."</a>/s"; 
20        $repl = '$1<img src="includes/js/ThemeOffice/' 
21                .$image.'" border="0"></a>'; 
22        $article->text = preg_replace( $regex, $repl, 
23                                      $article->text ); 
24     }

Listing 41.4 Ausschnitt aus hotlink.php

Die Parameter für das Plug-in werden von Joomla! beim Instanziieren des Objekts in die Variable $params geschrieben. Diese muss über die Selbstreferenz $this angesprochen werden. Ansonsten funktioniert die Abfrage der Parameter genauso, wie Sie das schon von den Modulen her kennen. Wir holen zunächst den Wert des Parameters image in die Variable $image. Dann definieren wir ein Suchmuster, das alle Zeichenfolgen findet, die mit <a href="http:// beginnen und mit </a> enden. Das Suchmuster hat eine runde Klammer, die genau bis zum </a>-Tag reicht. Das heißt, im Ersetzungsmuster in Zeile 20/21 können wir diesen Bereich mit $1 ansprechen und übernehmen. Dahinter geben wir das Bild aus und danach erst das neue </a>-Tag. Die Ersetzung findet dann in den Zeilen 22 und 23 statt.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Joomla! 1.5 - Das umfassende Handbuch





Joomla! 1.5 -
Das umfassende Handbuch

Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Joomla! 3.5






 Joomla! 3.5


Zum Katalog: Top-Rankings bei Google und Co






 Top-Rankings bei
 Google und Co


Zum Katalog: Erfolgreiche Websites






 Erfolgreiche Websites


Zum Katalog: WordPress 4






 WordPress 4


Zum Katalog: Webseiten erstellen für Einsteiger






 Webseiten erstellen
 für Einsteiger


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de