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

 << zurück
Joomla! von Anja Ebersbach, Markus Glaser, Radovan Kubani
Das Handbuch für Einsteiger
Buch: Joomla!

Joomla!
496 S., mit CD, 29,90 Euro
Galileo Computing
ISBN 3-89842-632-7
gp Kapitel 21 Mambots erstellen
  gp 21.1 Mambots für den Inhalt
  gp 21.2 Ein passender Button
  gp 21.3 Mambots für die Suche


Galileo Computing

21.3 Mambots für die Suche  toptop

Wenn Sie im Suchfeld des Search-Moduls etwas eingeben, wird das Ereignis onSearch ausgelöst. Die Anfrage wird der Reihe nach an die Such-Mambots 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="iso-8859–1"?>
2   <mosinstall type="mambot" group="search"
3               version="1.1">
4      <name>Title Searchbot</name>
5      <files>
6         <filename mambot="title.searchbot">ð
7             title.searchbot.phpð
8         </filename>
9      </files>
10     <params />
11  </mosinstall>
Listing 21.6   title.searchbot.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 21.2 angegeben werden.


Tabelle 21.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( '_VALID_MOS' ) or die( 'Direct Access to this
3      script is not allowed');
4   $_MAMBOTS->registerFunction( 'onSearch',
5                                'botSearchTitles' );
6   function botSearchTitles( $text )
7   {
8      global $database;
9      $text = trim( $text );
10     if ($text == '') { return array(); }
11     $query = "SELECT con.title AS title,"
12              ." con.created AS created,"
13              ." con.introtext AS text,"
14              ." CONCAT( 'index.php?option=com_content"
15                 ."&task=view&id=', con.id ) AS href,"
16              ." '2' AS browsernav"
17              ." FROM #__content AS con"
18              ." WHERE con.title LIKE '%$text%'"
19              ." ORDER BY con.title";
20     $database->setQuery( $query );
21     return $database->loadObjectList();
22  }
23  ?>
Listing 21.7   title.searchbot.php

Die einleitenden Zeilen des Skripts dürften mittlerweile kein Problem mehr sein. In Zeile 9 wird der Suchstring bereinigt, indem führende und folgende Leerzeichen entfernt werden. Zeile 10 ist eine Sicherheitsabfrage, falls kein Suchwort eingegeben wurde. Als Nächstes wird das SQL-Statement erstellt (Zeilen 11–19); dazu 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 20 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 17. 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 18 wird das Suchkriterium formuliert. Das Wort der Suchabfrage, das in $text gespeichert ist, soll irgendwo im Titel vorkommen. Zeile 19 legt die Sortierung fest. Sortiert wird alphabetisch aufsteigend nach dem Titel. Die Zeilen 11–16 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 11), created einfach als created (Zeile 12) und introtext als text (Zeile 13). Der Link unter dem Namen href wird aus einer Zeichenkette und der id mit dem SQL-Befehl CONCAT zusammengesetzt (Zeilen 14 und 15). Für die Spalte browsernav legen wir einfach den Wert 2 fest (Zeile 16). Wie man beispielsweise an text oder href sieht, erlaubt es 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 den Mambot jetzt installieren. Damit Sie auch sicher gehen können, dass die Treffer von Ihrem Mambot kommen, sollten Sie die anderen Suchbots im Mambot 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.

 << zurück
  
  Zum Katalog
Zum Katalog: Joomla!
Joomla!
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Einstieg in Joomla! - Das Video-Training






 Einstieg in Joomla! -
 Das Video-Training


Zum Katalog: PHP 5 und MySQL 5






 PHP 5 und MySQL 5


Zum Katalog: CSS-Praxis






 CSS-Praxis


Zum Katalog: Suchmaschinen-Optimierung für Webentwickler






 Suchmaschinen-Optimierung
 für Webentwickler


Zum Katalog: Professionelles Webdesign mit (X)HTML und CSS






 Professionelles Webdesign
 mit (X)HTML und CSS


Zum Katalog: Einstieg in osCommerce/xt:Commerce






 Einstieg in
 osCommerce/xt:Commerce


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de