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.4 Plug-ins für die Suche topZur vorigen Überschrift

Wenn Sie im Suchfeld des Search-Moduls etwas eingeben, wird das Ereignis onSearch ausgelöst. Die Anfrage wird der Reihe nach an die Such-Plug-ins weitergeleitet, die für ihren Bereich jeweils eine SQL-Anfrage an die Datenbank richten und das Ergebnis dann mit standardisierten Spaltenbezeichnern zurückliefern. Der Vorteil dieses Mechanismus liegt auf der Hand. Wenn Sie als Entwickler eigene Daten in Joomla! verwalten, beispielsweise über eine Komponente, dann können Sie diese auch sehr einfach durchsuchbar machen. Wir wollen uns eine Suche schreiben, die nur in den Titeln der Artikel sucht.

Das zugehörige XML-File, wieder auf das Nötigste reduziert, sieht dann so aus:

1   <?xml version="1.0" encoding="utf-8"?> 
2   <install type="plugin" group="search" 
3               version="1.5"> 
4      <name>Title Searchbot</name> 
5      <files> 
6         <filename plugin="titlesrch">titlesrch.php</filename> 
9      </files> 
10     <params /> 
11  </install>

Listing 41.7 titlesrch.xml

Sie sehen, dass als Gruppe search angegeben wurde. Unser Suchroboter hat der Einfachheit halber nur eine Datei und keine Parameter. Die PHP-Datei ist eigentlich ebenfalls sehr leicht zu verstehen, schwierig daran ist nur das SQL-Statement. Für die Weiterverarbeitung des Suchergebnisses müssen die Spalten aus Tabelle 41.2 angegeben werden.


Tabelle 41.2 Mögliche Spalten bei der Rückgabe von Suchergebnissen

Spalte Beschreibung

title

Der Titel des Suchergebnisses

created

Das Erstellungsdatum

text

Ein Text, der den Inhalt beschreibt

section

Ein Bereich, zu dem der Inhalt gehört

href

Eine URL, über die der Inhalt verlinkt werden kann

browsernav

Die Art und Weise, wie der Inhalt geöffnet werden soll. Wird standardmäßig auf 2 gestellt.


Sie müssen nicht alle Spalten ausgeben. Wir werden der Übersichtlichkeit halber die Angabe des Bereiches weglassen. Sehen wir uns die PHP-Datei einmal an:

1   <?php 
2   defined( '_JEXEC' ) or die( 'Restricted access' ); 
3   jimport( 'joomla.plugin.plugin' ); 
4   class plgSearchTitlesrch extends JPlugin { 
5   function plgSearchTitlesrch( &$subject, $config) { 
6      parent::__construct($subject, $config); 
7   } 
8   function onSearchAreas() { 
9      static $areas = array( 
10        'titlesrc' => 'Titel' 
11     ); 
12     return $areas; 
13  } 
14  function onSearch($text, $phr='', $order='', $areas=null)    { 
15     $db =& JFactory::getDBO(); 
16     $text = trim( $text ); 
17     if ($text == '') { return array(); } 
18     $query = "SELECT con.title AS title," 
19              ." con.created AS created," 
20              ." con.introtext AS text," 
21              ." CONCAT( 'index.php?option=com_content" 
22              ."&view=article&id=', con.id ) AS href," 
23              ." '2' AS browsernav" 
24              ." FROM #__content AS con" 
25              ." WHERE con.title LIKE '%$text%'" 
26              ." ORDER BY con.title"; 
27     $db->setQuery( $query ); 
28     return $db->loadObjectList(); 
29  } 
30  ?>

Listing 41.8 titlesrch.php

Die einleitenden Zeilen des Skripts dürften mittlerweile kein Problem mehr sein. In Zeile 8–13 wird eine Funktion definiert, die einen neuen Suchraum aufmacht. Wenn Sie im Frontend suchen, wir Ihnen dieser als Checkbox angeboten. Der Schlüssel des Arrays entspricht dem Such-Plug-in, der Wert wird als Beschriftung ausgegeben.

Ab Zeile 14 wird die eigentliche Suche definiert. Der Event liefert vier Parameter, die wir – bis auf den Suchtext selbst – im folgenden Code nicht weiter berücksichtigen. Im Argument $phr wird festgelegt, ob der Suchtext genau gefunden werden muss (exact), ob alle Suchwörter vorkommen müssen (all) oder ob es reicht, dass nur einer der Suchterme gefunden wird (any). Die Variable $order bestimmt die Sortierung: alphabetisch (alpha), der älteste Eintrag zuerst (oldest), der neueste Eintrag zuerst (newest) oder der beliebteste Eintrag zuerst (popular). In $areas stehen die Suchräume, die ausgewählt wurden. Anhand dessen können Sie überprüfen, ob Ihr Plug-in überhaupt mit der Suche beginnen soll.

Zunächst wird der Suchstring bereinigt, indem führende und folgende Leerzeichen entfernt werden (Zeile 16). Zeile 17 ist eine Sicherheitsabfrage, falls kein Suchwort eingegeben wurde. Als Nächstes wird das SQL-Statement erstellt (Zeilen 18–26); dazu folgt gleich mehr. Die Punkte am Anfang jeder Zeile in diesem Abschnitt sind eine PHP-Notation, die es erlaubt, längere Zeichenketten über mehrere Zeilen zu verteilen. Die Abfrage wird in Zeile 27 ausgeführt, und in der folgenden Zeile wird das Ergebnis als Objekt zurückgeliefert.

Lassen Sie sich von der Datenbankabfrage nicht einschüchtern, sie sieht wilder aus, als sie ist. Beginnen wir in Zeile 24. Hier wird festgelegt, dass die Tabelle, die zu durchsuchen ist, content sein soll. Wir verwenden für die Tabelle in der weiteren Abfrage die Abkürzung con. Diese ist wichtig, um die Spalten zu referenzieren. In Zeile 25 wird das Suchkriterium formuliert. Das Wort der Suchabfrage, das in $text gespeichert ist, soll irgendwo im Titel vorkommen. Zeile 26 legt die Sortierung fest. Sortiert wird alphabetisch aufsteigend nach dem Titel. Die Zeilen 18–23 bestimmen, welche Spalten des Ergebnisses zurückgegeben werden und, nach AS, unter welchem Namen. Also soll der Titel aus content als title zurückgegeben werden (Zeile 18), created einfach als created (Zeile 19) und introtext als text (Zeile 20). Der Link unter dem Namen href wird aus einer Zeichenkette und der id mit dem SQL-Befehl CONCAT zusammengesetzt (Zeilen 21 und 22). Für die Spalte browsernav legen wir einfach den Wert 2 fest (Zeile 23). Wie man beispielsweise an text oder href sieht, erlaubt uns dieser Mechanismus, Daten aus der Datenbank umzubenennen und somit in der Suchausgabe an die richtige Stelle zu bringen.

Um unsere Suche zu testen, müssen Sie das Plug-in jetzt installieren. Damit Sie auch sicher gehen können, dass die Treffer von Ihrem Plug-in kommen, sollten Sie die anderen Suchbots im Plug-in-Manager deaktivieren. Gehen Sie dann ins Frontend, und geben Sie einen Begriff ins Suchfeld ein, von dem Sie wissen, dass er in mindestens einem Titel vorkommt. Dann sollten Sie ein Ergebnis sehen.



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