Home / Forum / Auslesen von Detail-Inhalten aus Objekt: "ezxmltext" (Version 3.6)

Auslesen von Detail-Inhalten aus Objekt: "ezxmltext" (Version 3.6)

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein

Autor Nachricht

Andi B.

Registriert seit: 02.03.2006

Beiträge: 60

Samstag, 29. Juli 2006 13:30:42

Hallo Leute,

... bräuchte mal wieder Eure Hilfe.

Sachverhalt:
Ich möchte für die Ergebnis-Anzeige im "search_template" (= override-template)
einen Text-Auszug anzeigen lassen, so wie z.B. bei den Suchergebnissen von
großen Suchmaschinen, vgl. z.B. Google.
Dabei wäre es wünschenswert, wenn der Beginn des Textes und
die Text-Passage angezeigt werden, an der Stelle, wo das entsprechende
Suchwort steht. Optimal wäre es, wenn das Suchwort auch noch
hervorgehoben (z.B. durch Fett-Druck) wäre.

Problem:
1. Ich möchte nur Text ausgeben lassen (keine anderen Inhalte,
wie z.B. Bilder, da diese sonst zu lang würden).
2. Wie können Text-Passagen herausgefiltert und angezeigt werden?
3. Wie kann das entsprechende Suchwort fett dargestellt werden?

Ein Problem ist noch, dass das ganze mit verschiedenen Objekten
funktionieren sollte (u.a. Textfelder, XML-Blöcke, usw.).


Für Eure Hilfe oder zumindest ein paar Anregungen
wäre ich Euch dankbar, da ich in der Dokumentation
keine passende Lösung gefunden habe.

Beste Grüße und vorab besten Dank.
Andreas B.

Thomas Nunninger

Thomas  Nunninger

Registriert seit: 10.01.2006

Beiträge: 52

Samstag, 29. Juli 2006 14:18:31

Hi Andreas,

Basis wird wohl ein Template-Operator sein, den du ähnlich dem wash()-Operator einsetzt. Dieser nimmt den auszugebenden Text und hervorzuhebende Terme entgegen und liefert den auszugebenden Text zurück. Im Template kannst du dann - je nach Datentyp - den Inhalt ausgeben oder auch nicht.

Eine andere Möglichkeit wäre evtl., der Funktion direkt das Attribut zu übergeben (wobei ich nicht weiß, ob das funktioniert). Dann kümmert sich der Operator selbständig darum, was zurückzuliefern oder auch nicht.

Einen schönen Gruß

Thomas

Andi B.

Registriert seit: 02.03.2006

Beiträge: 60

Moderiert von: Thomas Nunninger

Samstag, 29. Juli 2006 14:27:57

Hallo Thomas !!!

Sowas habe ich mir eigentlich auch gedacht, aber speziell für das Objekt
"ezxmltext" konnte ich bish. keine annähernd gebrauchbaren Operatoren
finden.

Wenn ich einen "String-Operator" einsetze, zerschießt mir der das gesamte
Design (vgl. verschobene Tabellen, usw.). Mit dem "wash()" - Operator
würde es vom Design zwar annähernd funktionieren, aber dann zeigt er
mir den ganzen "html-Code" an (vgl. <h3>, <table>, usw.), was ja für
den User eigentlich nicht sichtbar sein sollte.

Frage:
"Gibt es speziell für XML-Felder anwendbare Operatoren bzw.
kennst Du solche, die mir weiterhelfen könnten ?"

Danke.
Andreas B.

Thomas Nunninger

Thomas  Nunninger

Registriert seit: 10.01.2006

Beiträge: 52

Samstag, 29. Juli 2006 16:14:35

Hi Andreas,

> Sowas habe ich mir eigentlich auch gedacht, aber speziell für das Objekt
> "ezxmltext" konnte ich bish. keine annähernd gebrauchbaren Operatoren
> finden.

> Wenn ich einen "String-Operator" einsetze, zerschießt mir der das gesamte
> Design (vgl. verschobene Tabellen, usw.). Mit dem "wash()" - Operator
> würde es vom Design zwar annähernd funktionieren, aber dann zeigt er
> mir den ganzen "html-Code" an (vgl. <h3>, <table>, usw.), was ja für
> den User eigentlich nicht sichtbar sein sollte.

> Frage:
> "Gibt es speziell für XML-Felder anwendbare Operatoren bzw.
> kennst Du solche, die mir weiterhelfen könnten ?"

Es ist die Frage, was du willst. Ich dachte, du willst google-like lediglich einige Fragmente darstellen. Bei XML würde ich persönlich mit strip_tags() einfach alle Tags rauswerfen, nach dem gewünschten Text (inkl. X Zeichen davor und danach) suchen und die Zwischenräume durch "..." ersetzen. Das ist dann reiner Text.

Wenn du es anders willst, müsstest du vermutlich einen XML Parser nutzen. PHP bietet da nette und schnelle Möglichkeiten für einen SAX-Parser (http://www.php.net/manual/de/ref.xml.php). Ob aber die Verarbeitungslogik dann so einfach ist, weiß ich nicht. Spontan könnte ich mir vorstellen, dass man im data_handler prüft, ob der gewünschte Text darin vorkommt. Beim element_handler für das schließende Tag kann man alle Inhalte verwerfen, die weder als direkten Inhalt noch in einem Descendent-Element relevante Inhalte haben. Bei Tabellenzeilen wird es aber schon spannend, wenn du die Struktur erhalten willst, und nicht eine Zeile lediglich die erste und vierte Tabellenzelle erhält und eine andere Zeile die zweite... Denkbar wäre, alle Tabellenzellen von der Struktur zu erhalten (Höhe und Breite kann man gegebenenfalls auf 0 setzen) aber nur den Inhalt zu reduzieren (ohne Treffer bis auf einen leeren String).

Egal welchen Weg du gehst: Ich würde mich über eine Contribution auf ez.no freuen (vergleiche mein Profil )

Viel Erfolg

Thomas

Thomas Nunninger

Thomas  Nunninger

Registriert seit: 10.01.2006

Beiträge: 52

Samstag, 29. Juli 2006 16:18:07

Hi Andreas,

sorry, ich habe mit meinen Editorrechten wohl auch die Möglichkeit, andere Beiträge zu ändern. Hatte versehentlich und unbemerkt deinen Beitrag modifiziert. Habe ihn aber wieder in der ursprünglichen Version hergestellt.

Einen schönen Tag

Thomas

Andi B.

Registriert seit: 02.03.2006

Beiträge: 60

Samstag, 29. Juli 2006 17:30:11

Nochmals Hi!

Das mit der Ausblendung über "|striptags" und "|shorten(400)" habe ich zwischenzeitlich
bereits vollzogen. Aber der Rest meiner Vorstellungen, mit Hervorhebung des Suchwortes
und dem Anzeigen des Textausschnittes scheint mir persönlich doch etwas zu kompliziert
zu werden [zumal ich ja erst Einsteiger bin]. Aber wenn ich doch noch eine Lösung finden
sollte (und auch wieder Lust habe weiterzumachen), werde ich es Dir/ Euch noch mitteilen.

Trotzdem - nochmals herzlichne Dank für Deine sofortigen Rückmeldungen.

Beste Grüße und Schönes Wochenende
Andreas B.

Thomas Nunninger

Thomas  Nunninger

Registriert seit: 10.01.2006

Beiträge: 52

Samstag, 29. Juli 2006 20:03:38

Hi Andreas,

> Das mit der Ausblendung über "|striptags" und "|shorten(400)" habe ich zwischenzeitlich
> bereits vollzogen. Aber der Rest meiner Vorstellungen, mit Hervorhebung des Suchwortes
> und dem Anzeigen des Textausschnittes scheint mir persönlich doch etwas zu kompliziert
> zu werden [zumal ich ja erst Einsteiger bin]. Aber wenn ich doch noch eine Lösung finden
> sollte (und auch wieder Lust habe weiterzumachen), werde ich es Dir/ Euch noch mitteilen.

Sorry, ich ging bisher davon aus, dass du mit PHP einen Template-Operator als Extension von eZ publish schreibst. Mit PHP ist das nämlich gar kein Problem, weil du dann - je nach Geschmack - mittels regulären Ausdrücken oder str_pos() arbeiten kannst.

In den vorhanden Template-Operatoren habe ich da jetzt nichts nützliches entdeckt. Du wirst wohl nicht drum herum kommen, dich mit dem Erstellen eines eigenen Template-Opertors zu beschäftigen. Das sollte - Programmierkenntnisse vorausgesetzt - machbar sein. Einfache Beispiele für Template-Operatoren gibt es in den Contributions. Und du musst ja bei dieser Fragestellung nicht die eZ publish API ansprechen.

Einen schönen Tag

Thomas

Andi B.

Registriert seit: 02.03.2006

Beiträge: 60

Montag, 31. Juli 2006 13:42:36

Hi Thomas,

... verfüge leider derzeit (noch) über keinerlei PHP-Kenntnisse,
sondern bish. lediglich über grundsätzl. Wissen im Bereich
"html" und zwischenzeitlich auch ein bißchen eZ publish.

Vielleicht eigne ich mir das aber noch an.
Wie schwierig ist PHP eigenlich zu erlernen
im Vergleich zu einfachen Programmiersprachen,
wie z.B. Visual-Basic ??? und wie kann man
das am schnellsten und einfachsten lernen ???

Gruß
Andreas B.

Thomas Nunninger

Thomas  Nunninger

Registriert seit: 10.01.2006

Beiträge: 52

Montag, 31. Juli 2006 14:40:23

Hi,

ich persönlich habe PHP so gelernt: die Grundlagenkapitel des Handbuchs (aktueller: php.net/manual/en/; teilweise nicht komplett, aber deutsch: php.net/manual/de/ ) durchgelesen und dann losgelegt. Klar: du musst im Handbuch dann immer wieder Funktionen nachschauen. Aber alles in allem war ich nach einem Tag recht weit. (War allerdings bestimmt meine zehnte Programmiersprache, die ich gelernt habe... - daher weiß ich nicht, ob das dein Ansatz ist.)

Allgemein gilt PHP als einfach, was ich bestätigen kann. Es ist allerdings auch so einfach, dass viele PHP nutzen, und daher viel schlechter Code existiert... Visual Basic ist bei mir sehr lange her; schwerer sollte PHP allerdings nicht sein.

Viel Erfolg

Thomas

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein