Endlich ist mein Plugin zur Verbesserung der Keyword-Suche für die CONTENIDO Version 4.9 fertig und läuft im Live-Betrieb.
Auf den Seiten der schweizerischen Verlag Werk AG (wbw.ch), Herausgeber der Zeitschrift „werk, bauen + wohnen“ läuft das Plugin phpBO Search Advanced im Hintergrund und verbessert die Suchfunktion der Seite, so dass entsprechende Artikel-Inhalte auch gefunden werden. In der Version 1.2 des Plugins sind bereits diverse Funktionen integriert (dazu später mehr). Auch sind uns – ich wurde bei Idee und Testing maßgeblich unterstützt durch Matthias Schnüriger (Danke Matthias!) von Tells Söhne GmbH, der Agentur für Grafik, Web und Werbung in der Zentralschweiz – beim Programmieren und Testen des Plugins noch einige Ideen zur Erweiterungen gekommen (dazu auch später mehr 😉 ).
Da die onBoard-Suche, bzw. die Indexierung der Suchworte (keywords), im Core von CONTENIDO 4.9 nicht korrekt funktioniert (siehe diverse Foreneinträge), und auch keine Funktionen wie Bad- oder Stop-Words bietet, suchte ich nach einer entsprechenden Lösung. Ein „Aufbohren“ der Core-Funktionen, das ich zuerst in Betracht zog, ließ ich aber aufgrund des hohen Aufwandes und der Schwierigkeiten beim späteren Update des Systems schnell außen vor und schwenkte in Richtung eines Plugins um.
Der Ansatz
Grundsätzlich sollte das Plugin eine Ersetzung der Core-Klassen und deren Methoden anbieten, was inzwischen unter zu Hilfenahme der neuen Autoload-Funktion von CONTENIDO recht einfach möglich ist. Da für den Einsatz des Plugins auch eine Optimierung der Datenbank-Tabelle con_keywords notwendig ist, und dieses nicht direkt per PIM (Plugin-Manager) bei der Installation des Plugins möglich ist, da dessen install.sql die Nutzung des Standard-SQL-Prefix nicht direkt zulässt, musste ich dem Plugin noch eine First-Install-Seite spendieren. Diese gibt einen Überblick über die zu machenden Änderungen und diese können per Klick auch durchgeführt werden. Da die Änderungen abwärts kompatibel sind, müssen sie beim Deinstallieren des Plugins nicht notwendiger Weise wieder geändert werden.
Für den PIM wäre aber die Möglichkeit zum Zugriff auf Core-Tabellen der DB wünschenswert. Alternativ könnte ich mir aber auch eine Methode in den PIM-Klassen vorstellen, die dem Entwickler die Möglichkeit bietet eigene Funktionen beim Installieren/Deinstallieren von Plugins zu nutzen bzw. einzubinden.
Was bietet das Plugin
In der aktuellen Version 1.2 bietet das phpBO Search Advanced Plugin für CONTENIDO 4.9 dem Anwender folgende Funktionen:
- Löschen der Suchworte/Keywords pro Sprache (ajax-gestützt), dabei werden alle Suchwörter der gewählten Sprache aus der Datenbank entfernt.
- Neu-Indexierung der Suchworte/Keywords pro Sprache (ajax-gestützt).
- Anzeige der aktuell in der DB stehenden Suchworte/Keywords pro Sprache.
- Keyword-Anzeige erfolgt schrittweise per AJAX-Request.
- Bei Klick auf das Keyword öffnet sich ein Fenster und zeigt die aktuelle Verwendung in den Artikeln an, inklusive eines Links zum Artikel und der Anzahl der Vorkommen.
- Es werden sprachabhängige Stopword-Dateien genutzt in denen man für jede eingesetzte Sprache nicht zu indexierende Wörter in einem Array eintragen kann.
- Die Konfiguration erfolgt (noch) Mandanten-übergreifend in einer lokalen Konfigurations-Datei im Plugin-Verzeichnis. Hier können Werte wie die Mindestanzahl der Buchstaben, ob Zahlen auch indexiert werden sollen oder die maximale Länge des Wortes hinterlegt werden.
- Das Plugin kann auch fehlerhafte Umlaute im Content erkennen und berücksichtigt diese, bzw versucht diese beim Indexieren vorher zu „reparieren“. Diese Funktion ist standardmäßig abgeschaltet und ich empfehle besser den vorhandenen Inhalt (Content) entsprechend auszubessern.
- Integration in der Benutzerverwaltung, eingeschränkten Nutzern muss explizit das Recht zum Löschen bzw. Neuindexieren der Suchworte gegeben werden.
Wie funktioniert es?
Nach der Installation prüft das Plugin die Datenbanktabelle auf zu machende Änderungen. Außerdem muss die Tabelle geleert werden falls noch vom Standard-Such-Index eingetragene Suchwörter vorhanden sind, da diese Einträge aus verschiedenen Gründen nicht kompatibel zu den von meinem Plugin gemachten Einträgen sind.
Im neuen Backend-Bereich Content->SuchIndex kann man nun für jede Sprache auf die man Zugriff hat, und entsprechende der Rechtevorgaben, die Suchworte löschen oder neu indexieren. Außerdem erhält man zu jedem Suchwort Informationen zum Vorkommen.
Wie soll es weiter gehen?
Für zukünftige Versionen gibt es auch schon die ein oder andere Idee.
- Eine ajax-gestützte Badword-Liste im Backend in die man indexierte Suchwörter per Drag & Drop verschieben kann
- Anlegen und Zuordnen individueller Suchworte.
- Aufbereitung der automatischen Suchworte für den META-Bereich der Seite.
- Überarbeitung der für die Such-Module zuständigen Backend-Klassen in gleicher Weise wie bereits bei der Indexierung geschehen.
- Frontend-Module mit Autovervollständigung und flexiblerer Nutzung durch den Seitenbesucher. Die Konfiguration sollte dabei variabel über den Backend-Bereich erfolgen.
- Konfigurationsbereich für das Plugin in dem man Mandanten-abhängig die Grundeinstellung überschreiben kann.
- Dein Vorschlag, Verbesserung, Idee dann hier! 🙂
Weitere Infos, Lizenz und Preise!
Das Resultat des eingesetzten Plugins kann man auf wbw.ch bewundern. Für einen Demo-Zugang ins Backend erstelle ich auf Anfrage gerne einen Zugang in meiner Demoinstallation. Ein automatisierten Zugang macht in meinen Augen keinen Sinn, da nicht mehrere Leute gleichzeitig im Backend-Bereich des Plugins arbeiten können.
Weitere Screenshots sind in Arbeit und werden noch nachgeliefert.
Für das Plugin gilt eine Domain-bezogene Lizenz. Bei der Bestellung muss man daher den Namen der Domain, auf der das Plugin eingesetzt werden soll, mit angeben.
Das Plugin kostet in der vorliegenden Version 1.2 49,90 Euro inkl. Umsatzsteuer pro Domain. Darin enthalten sind alle Updates im Rahmen der Version für 1 Jahr und ein vergünstigtes Upgrade auf neue Versionen.
Möchten man das Plugin auf mehreren Domains einsetzen, zum Beispiel als Agentur, biete ich auf Anfrage passende Rabatt-Profile an.
Eigene Kunden und gemeinnützige Organisationen bekommen das Plugin von mir ohne Mehrkosten zur Verfügung gestellt.
Die Installation und Grundeinrichtung übernehme ich gerne für eine Pauschale von 35,- Euro inkl. Umsatzsteuer. Weiterführende Arbeiten rechne ich zum jeweils gültigen Stundensatz ab.
Für weitere Fragen rund ums Plugin stehe ich natürlich sowohl hier in den Kommentaren als auch im Contenido Forum gerne zur Verfügung und freue mich schon auf entsprechendes Feedback. 🙂