WBCE Home | WBCE Hilfe | WBCE Addon Repository | Impressum | Datenschutz

WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 04.05.2019 21:40:10

florian
Administrator

Liste von Seiten anhand Schlagworten/Kategorien

Ich brauche ein Modul oder ein Modulpaar, das es ermöglicht, einerseits für eine Seite Schlagworte zu vergeben, wobei es möglich sein muss, die Schlagworte bestimmten Gruppen/Kategorien zuzuordnen. Die zugeordneten Schlagworte sollen auf der Seite angezeigt werden.
Ein Seite kann und wird mehreren Schlagworten in verschiedenen Kategorien zugeordnet sein.

Darüber hinaus brauche ich die Funktion, auf anderen Seiten jeweils die Schlagworte ausgewählter Kategorien anzuzeigen den Schlagworten zugeordnet Links und Titel der Seiten, die diese Schlagworte verwenden.

Das Modul Page Tags kommt dem schon vergleichweise nahe, aber die Gruppen/Kategoriezuordnung funktioniert dort leider nicht, und es ist dort auch nicht möglich, nur bestimmte Gruppen für die Ausgabe auszuwählen. Ein weiterer Nachteil von Page Tags ist, dass die Schlagworte und Gruppen jeweils als anzuklickende Checkboxen im Backend angezeigt werden, es beim konkreten Anwendungsfall aber rund 30 Kategorien und 300 Schlagworte gibt.

Module wie OneForAll, wbProfiles u.ä. kommen sowohl wegen der großen Anzahl an Kategorien und Gruppen als auch der Erfordernis, "richtige" Seiten, die untergeordnete Seiten haben können, nicht in Frage.

Hat zufällig jemand schon mal etwas ähnliches umgesetzt oder eine Idee, wie das mit überschaubarem Aufwand machbar wäre? Ich bin durchaus bereit, dafür zu bezahlen. Nur bräuchte ich das Modul verhältnismäßig kurzfristig.

Offline

#2 06.05.2019 11:44:28

mrbaseman
Developer

Re: Liste von Seiten anhand Schlagworten/Kategorien

wenn die Schlagworte im Text vorkommen, könnte der Outputfilter link words den Link dazu einfügen. Man muss dafür für die Kategorie händisch jeweils eine Seite anlegen und den Link dazu im Filter dem jeweiligen Schlagwort zuordnen.

Für die umgekehrte Richtung, dass auf der Kategorieseite automatisch ein Link eingefügt wird, auf welcher Seite das Schlagwort verwendet wird, könnte man vielleicht die Suchfunktion missbrauchen und ein Snippet dazu stricken, das ein Schlagwort als Argument nimmt und als Ausgabe das Schlagwort zusammen mit einem hinterlegten Link liefert, der die Suche nach eben diesem Schlagwort aufruft.

Komfortabel ist das allerdings nicht, da man die Schlagwortliste an zwei Stellen (im Filter und in der Liste der Kategorie) pflegen muss.

Wenn Page Tags schon fast passt, dann frag doch mal Ruud ob er es entsprechend erweitern kann. Ruud macht ja auch Auftragsentwicklung. Kommt halt drauf an, ob das dann das Budget sprengt...

Offline

#3 07.05.2019 12:11:21

webbird
Administrator

Re: Liste von Seiten anhand Schlagworten/Kategorien

Klingt eigentlich nicht schwierig, wobei ich noch keine Vorstellung habe, wie das dargestellt werden soll. Ob es sinnvoll ist, auf Page Tags aufzusetzen, müßte ich mir angucken, wenn ich mehr weiß.

Wie kurzfristig ist denn kurzfristig?


Some people just need a high-five. In the face. With a chair.

Offline

#4 07.05.2019 12:23:12

webbird
Administrator

Re: Liste von Seiten anhand Schlagworten/Kategorien

Hm, also auf den ersten Blick finde ich Page Tags auch etwas hakelig, für Kleinkram sicherlich okay, für Deine Wünsche aber doch eher ungeeignet. Typisch für Ruud (wertfrei): Notice: Undefined variable: value in P:\_zips\01_WBCE\PortablePHP7\root\modules\tags\modify_tags.php on line 91

Ralf Hertsch hatte mal sowas im kitFramework (womit ich nicht sagen will, dass Du das benutzen sollst), da konnte man beliebige Hashtags verwenden und diese mit Infos hinterlegen. Das spräche für ein Admintool in Kombination mit einem Output Filter. Ist aber nach meinem Verständnis auch nicht genau das, was Du suchst.

Prinzipiell erscheint mir eine Core-Erweiterung am sinnvollsten, so könnte man einfach innerhalb der Seitenadministration die Stichwörter und Gruppen zuordnen. Was hältst Du davon?


Some people just need a high-five. In the face. With a chair.

Offline

#5 07.05.2019 13:09:06

mrbaseman
Developer

Re: Liste von Seiten anhand Schlagworten/Kategorien

Nicht besonders performant aber eine Idee:

Für die Kategorie-Seite ein page-Tool, in dem man schlicht und einfach die Schlagwörter hinterlegt. In seiner view.php fragt das allerdings noch alle wysiwyg-Tabelleneinträge ab, filtert mit preg_match die seciton_id's raus, in denen das Schlagwort auftaucht und ermittelt dazu den entsprechenden page_link. Daraus wird dann die Liste der Seiten generiert, die das Tag verwenden.

Ergänzend dazu den output-FIlter, der wiederum die Sections aus der DB abruft, die das besagte Schlagwort-Page-Modul verwenden, sich von dort die Schlagwortliste holt, die jeweilige page_id und page_link ermittelt und dann allen Vorkommen der Schlagworte einen Link hinterlegt. Damit der FIlter nicht versehentlich irgendwelche Schlagworte mit verlinkt, kann man sich überlegen, dass man als Konvention wie bei Twitter immer einen Hash voranstellt.

Vom Programmieraufwand wäre das ziemlich überschaubar und hat den Charme dass zu großen Teilen bestehende Funktionalitäten mit genutzt werden, der Ansatz ist aber lastintensiv, da der Outputfilter bei jedem Seitenaufruf die Liste möglicher Schlagworte aufbereiten muss. Noch aufwändiger sind die Kategorieseiten, da die für jedes Schlagwort den gesamten Seitenbaum durchlaufen müssen. Ob das ein Problem darstellt, kommt darauf an, wie die Zugriffsrate auf die Seite aussieht (für eine Intranetseite, auf der 10 Mal am Tag jemand mal was nachschaut ist es vermutlich kein Problem, bei einem exponierten Webserver mit vielen Besuchern hingegen schon)

Möchte man es performanter, dann muss man wohl irgendwo zentral eine Liste hinterlegen, die von verschiedenen Stellen beim Speichern aktualisiert wird (welche Seite verwendet welches Schlagwort und zu welcher Kategorie gehört es? Und wenn eine Kategorie geändert wird oder eine Seite, die potentiell Schlagwörter verwendet, muss die Liste aktualisiert werden - und dazu muss man wohl in den Core oder ins wysiwyg Modul eingreifen oder ein spezielles Modul zusätzlich erstellen, mit dem man die Schlagwörter für eine Seite zuordnet und anzeigt).

Offline

#6 07.05.2019 13:24:26

florian
Administrator

Re: Liste von Seiten anhand Schlagworten/Kategorien

Danke für Eure Rückmeldungen, ich muss mir das in Ruhe durchlesen.

Ich habe da für den konkreten Anwendungsfall auf der Basis von Ruuds Page Tags eine Lösung zusammengebastelt. Schön ist die nicht und auch nicht so ohne weiteres auf andere Seiten übertragbar, weil da einiges im Code fest verdrahtet ist (Page-IDs u.ä.), aber ich warte jetzt erstmal ab, ob er Kunde fürs Erste damit zurecht kommt. Danach richtet sich dann, ob und wenn ja, wie eilig eine "vernünftige" Umsetzung zu realisieren wäre.

Ich glaube, für den Core ist das nichts, ich war zwar zunächst etwas frustriert, weil solche Schlagwort/Kategorie-Sachen z.B. bei Wordpress von Haus aus dabei sind, aber andererseits kommt es bei den üblichen WBCE-Seiten ja doch nicht so häufig vor, solche Darstellungen zu benötigen. Insofern eher als Modul.

Ich hatte mir da schon etwas konzeptionelle Gedanken gemacht.
Man bräuchte, denke ich, zwei Module, eines für die Detailseiten und eines für die Übersichtsseiten.

Das Detailseitenmodul hätte drei Eingabefelder: vorhandene Kategorie (select), neue Kategorie (text) und Schlagworte (textarea).
Pro Kategorie müsste man einen Abschnitt anlegen, entweder eine neue Kategorie oder eine vorhandene (Kategorie = global, auf allen Seiten/Abschnitten verfügbar) auswählen und im zugehörigen textarea-Feld dann die anzuzeigenden Schlagworte eingeben. Dabei könnten/müssten per Javascript/Ajax bereits auf anderen Seiten/Abschnitten hinterlegte Begriffe als Vorschlag angeboten werden.
Gespeichert würde dann die Kategoriezuordnung, der Schlagwort-Blob, die Seiten- und Abschnitts-ID.
Eine Möglichkeit, den Frontend-Output zu formatieren, bräuchte es allerdings evtl. auch.

Beim Übersichtsseitenmodul würde im Backend die Auswahl der im Frontend anzuzeigenden Schlagworte erfolgen (als Multiselect oder auch Textarea). Im Frontend dann eine Liste mit den Schlagworten, und dazu den Links/Titeln zu den jeweiligen Seiten, auf denen diese verwendet wird, generiert werden. Da müsste dann für jedes Schlagwort eine Datenbankabfrage auf die Schlagwort-Blobs erfolgen, wenn das jeweilige Schlagwort gefunden wird, aus der Seiten-ID der Link destilliert und zum zugehörigen Schlagwort zugeordnet werden. Zu prüfen ist auch noch, ob die zugehörige Seite überhaupt sichtbar und nicht auf gelöscht, keine o.ä. gesetzt ist.
Ist allerdings alles andere als performant, fürchte ich.

Offline

Liked by:

meetje

#7 07.05.2019 14:52:07

webbird
Administrator

Re: Liste von Seiten anhand Schlagworten/Kategorien

Alle Schlagworte einer Seite als Blob? Na ich weiß nicht. Kein Index, keine Verwendbarkeit auf anderen Seiten...

Ich würde das neutraler aufziehen.

Tabelle A: tags
Spalten: tag_id, tag

Tabelle B: tag_categories
Spalten: cat_id, cat_name

Tabelle C: tag_to_category (n:m)
Spalten: cat_id, tag_id

Tabelle D: tag_to_page (n:m)
Spalten: page_id, tag_id

Tabelle E: tag_category_to_page (n:m)
Spalten: page_id, cat_id

Damit bin ich maximal flexibel.

* Tags und Kategorien können erst mal komplett seitenneutral "global" konfiguriert werden. (Admin-Tool)
* Tags können n:m Kategorien zugeordnet werden.
* Tags und/oder Kategorien können Seiten zugeordnet werden.

Voraussetzung: Ordne ich einer Seite eine Kategorie zu, betrifft das automatisch alle Tags in der Kategorie. Ansonsten müßte man noch zusätzlich die Ausschlüsse ("alle der Kategorie X außer Y und Z") einstellen können, das dürfte reichlich unübersichtlich werden.

Zusatzvorteile:
* Läßt sich später auch noch auf Modulebene runterbrechen. (Zusätzliche Tabelle)
* Entsprechende (zukünftige) Erweiterungsmöglichkeiten im Core vorausgesetzt, lassen sich Tags auch über die Seiteneinstellungen sozusagen seitenspezifisch erzeugen, danach aber auch weiteren Seiten zuordnen.

Für die Darstellung auf den Seiten würde ich Droplets nehmen.


Some people just need a high-five. In the face. With a chair.

Offline

Liked by:

mrbaseman

Board footer

Powered by FluxBB

up