Social Media
Foren
Suchfunktion
Suchfunktion
Habe jetzt mal die Grundlagen für die Such-Funktion als Plugin geschaffen, welches meiner Meinung nach sehr erweiterbar ist.
In den Settings kann man auswählen, welche Such-Funktion man von den einzelnen Plugins gerade verwenden möchte.
Dazu führen Plugins in der activate.php folgenden Code aus:
$plugin ist der Plugin-Pfad, wie er in der info.php steht, damit man dann die Such-Funktionen beim Deinstallieren eines Plugins einfach löschen kann.
Deinstallation mit deactivate.php:
Hier wird lediglich wieder $plugin (Plugin-Pfad) benötigt, weßhalb das Ganze ganz einfach sein sollte.
Jedes Such-Plugin muss eine Klasse erstellen, die z.B. wie folgt aussieht:
Übrigens muss der Klassen-Name oben bei $class (activate.php) eingetragen werden.
In den Settings kann man auswählen, welche Such-Funktion man von den einzelnen Plugins gerade verwenden möchte.
Dazu führen Plugins in der activate.php folgenden Code aus:
![]() |
PHP-Quelltext |
1 |
Plugin_Search_Search::addSearchModul ($title, $class, $plugin, $activated = 1);
|
$plugin ist der Plugin-Pfad, wie er in der info.php steht, damit man dann die Such-Funktionen beim Deinstallieren eines Plugins einfach löschen kann.
Deinstallation mit deactivate.php:
![]() |
PHP-Quelltext |
1 |
Plugin_Search_Search()::deleteSearchModulByPlugin ($plugin);
|
Hier wird lediglich wieder $plugin (Plugin-Pfad) benötigt, weßhalb das Ganze ganz einfach sein sollte.

Jedes Such-Plugin muss eine Klasse erstellen, die z.B. wie folgt aussieht:
![]() |
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?php
class Plugin_<Mein Plugin>_<Meine Klasse> extends Plugin_Search_Search {
//Muss bei anderen Such-Funktionen überschrieben werden.
public function getSearchBox () {
$template = new Template();
$template->load("plugin_search_searchbox");
$template->assign_var('ACTION', $this->url);
echo($template->getCode());
}
public function showPage () {
if (isset($_REQUEST['search']) && !empty($_REQUEST['search'])) {
$anfrage = DataBase::Current()->EscapeString($_REQUEST['search']);
} else {
$anfrage = null;
return null;
}
$template = new Template();
$template->load("plugin_<Dein Plugin>_<Template-Datei ohne .html>");
echo $template->getCode();
}
public function getResults ($anfrage) {
return array();
//...
}
}
?>
|
Übrigens muss der Klassen-Name oben bei $class (activate.php) eingetragen werden.
showPage() wird aufgerufen, wenn die Seite index.php?include=search (ohne ModRewrite) aufgerufen wird, getSearchBox() muss die Such-Box (das Such-Formular) zurückgeben oder einfach per echo() ausgeben und dabei mit action="" auf index.php?include=search verweisen.
Download
Sorry, aber da die eig. Suchfunktion noch nicht fertig ist, kann ich derzeit nur eine Developer-Version raushauen, damit andere wenigstens schon mal Such-Algorhytmen / Such-Funktionen schreiben können...
Download: http://contentlion.kingdom-of-lords.de/search_developer.zip
EDIT:
Natürlich muss das Plugin vorher testen, ob das Plugin "search" auch installiert ist.
Download
Sorry, aber da die eig. Suchfunktion noch nicht fertig ist, kann ich derzeit nur eine Developer-Version raushauen, damit andere wenigstens schon mal Such-Algorhytmen / Such-Funktionen schreiben können...

Download: http://contentlion.kingdom-of-lords.de/search_developer.zip
EDIT:
Natürlich muss das Plugin vorher testen, ob das Plugin "search" auch installiert ist.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »JuKu« (9. November 2012, 18:49)
Supi! 
Habe noch eine Methode hinzugefügt:
Setzt das aktuelle Such-Modul, sodass der User nicht erst die Einstellungen umändern muss.
(In den Einstellungen werden alle Such-Module angezeigt und können ausgewählt werden, je nach dem, welches man verwenden möchte; durch diese Methode können die Plugins bei der Installation ihr Modul als das "benutzte" setzen, um den Admins die Arbeit noch mehr zu erleichtern.)
Events
Die Klasse wirft wegen der Erweiterbarkeit auch zusätzlich noch ein paar Events.
Event-Name | Beschreibung | Parameter
set_search_module | Wird beim Aufruf der Methode setSearchModule() geworfen. | array('class' => $class, 'old_class' => $old_class)
add_search_module | Dieser Event wird beim Hinzufügen eines Modules geworfen. | array('title' => $title, 'class' => $class, 'plugin' => $plugin, 'activated' => $activated)
delete_search_module | Dieser Event wird gerufen, wenn ein Such-Modul gelöscht wird. | array('plugin' => $plugin, 'set_new_module' => $set_new_module)
$set_new_module enthält true, wenn das aktuelle Such-Modul dem entsprach, welches gelöscht werden sollte (also das Standart-Such-Modul wieder gesetzt wurde), ansonsten false.
@stevieswebsite:
Wäre es möglich, dass auch alle (neuen) Events, die das Plugin wirft, mit in die Package.xml-Datei aufgenommen werden können?

Habe noch eine Methode hinzugefügt:
![]() |
PHP-Quelltext |
1 |
Plugin_Search_Search::setSearchModule($class);
|
Setzt das aktuelle Such-Modul, sodass der User nicht erst die Einstellungen umändern muss.

(In den Einstellungen werden alle Such-Module angezeigt und können ausgewählt werden, je nach dem, welches man verwenden möchte; durch diese Methode können die Plugins bei der Installation ihr Modul als das "benutzte" setzen, um den Admins die Arbeit noch mehr zu erleichtern.)
Events
Die Klasse wirft wegen der Erweiterbarkeit auch zusätzlich noch ein paar Events.

Event-Name | Beschreibung | Parameter
set_search_module | Wird beim Aufruf der Methode setSearchModule() geworfen. | array('class' => $class, 'old_class' => $old_class)
add_search_module | Dieser Event wird beim Hinzufügen eines Modules geworfen. | array('title' => $title, 'class' => $class, 'plugin' => $plugin, 'activated' => $activated)
delete_search_module | Dieser Event wird gerufen, wenn ein Such-Modul gelöscht wird. | array('plugin' => $plugin, 'set_new_module' => $set_new_module)
$set_new_module enthält true, wenn das aktuelle Such-Modul dem entsprach, welches gelöscht werden sollte (also das Standart-Such-Modul wieder gesetzt wurde), ansonsten false.
@stevieswebsite:
Wäre es möglich, dass auch alle (neuen) Events, die das Plugin wirft, mit in die Package.xml-Datei aufgenommen werden können?

Da fehlt noch die nötige Infrastruktur im Core. 
Füge in den Skin einfach folgendes ein:
Dann siehst du das Such-Feld, aber ganz fertig ist das alles auch noch nicht.

Füge in den Skin einfach folgendes ein:
![]() |
PHP-Quelltext |
1 |
EventManager::RaiseEvent("search_box", array('page' => Page::Current(), 'user' => User::Current()->name, 'userid' => User::Current()->id));
|
Dann siehst du das Such-Feld, aber ganz fertig ist das alles auch noch nicht.


Ähnliche Themen
-
Neue Ideen »
-
Suchfunktion (8. April 2012, 14:08)
-
Erweiterungen »
-
Liste aller offener Erweiterungen (25. Juli 2012, 20:23)