JoomlaCamp 2018 Essen - 03.02.2017 in Essen

Suchanzeige - bei Zifferneingabe wird der Seiten-Link nicht angezeigt

    Suchanzeige - bei Zifferneingabe wird der Seiten-Link nicht angezeigt

    Hallo zusammen,

    ich setzte Joomla 3.8.1 ein und glaube, dass nach diesem Update die Suchanzeige nicht mehr richtig anzeigt.

    Problem ...
    Wenn ich ein Wort eingebe, z.B. Adria, wird alles bestens angezeigt. Wenn aber die Eingeb, eine Ziffer vorab hat, z.B. 123-Adria, fehlt bei der Suchanzeige der Link zur betreffenden Seite.

    Vielicht kann mir jemand weiterhelfen - besten Dank.

    poltmanns schrieb:

    Wenn ich ein Wort eingebe, z.B. Adria, wird alles bestens angezeigt. Wenn aber die Eingeb, eine Ziffer vorab hat, z.B. 123-Adria, fehlt bei der Suchanzeige der Link zur betreffenden Seite.


    Das kann ich nicht bestätigen. Ich habe gerade auf einer 3.8.1 nach einem Datum - genau nach 01.12.2017 - gesucht und der Beitrag wurde gefunden.
    Dann habe ich auf meinem Testsystem - Joomla! 3.8.2-dev - 123-Adria und Adria in einen Beitrag eingegeben und auch der wurde mit den Suchbegriffen 123-Adria und Adria gefunden. Beim Testsystem habe ich die Inhaltskomponente auch auf modernes Routing umgeschaltet.
    ---
    Don't push the river ... it flows by itself ...
    ---
    JUG Koblenz | Ich bin Joomler | astrid-guenther.de
    Hallo @astrid, ich habe gerade keine Zeit mir einen Test aufzubauen.
    In den Texten wird das problemlos gefunden.
    Das Problem könnnte eventuell darin bestehen dass bei der Generierung des Link das Routing zuschlägt und eine vermeintliche ID abschneidet.
    Hast du den Beitragstitel 123-titel genannt? Und eventuell auch eine Kategorie mit der id 123?

    Ich habe keine issue dazu im issuetracker gefunden.
    Grüße, Christiane
    ----------------
    JUG München | Auch ich bin ein Joomler
    Hallo Firstlady, hallo Astrid ,.. und sorry, dass ich mich erst jetzt melde.
    Ich war krank und konnte das Forum nicht verfolgen.
    Firstlady: Was ist das Routing und wo schalte ich das um?

    Wir schreiben unter unsere Hafenbeschreibungen eine Kennung, die den aktuellen Stand zeigt - z.B. 1/17 für Januar 2017. Das bisher bestens funktioniert.
    Alles wird gefunden, auch der Link wurde angezeigt. Seit einiger Zeit wird alles gefunden aber die Anzeige erfolgt ohne Link.
    Wenn ich jetzt unsere Kennung ändere - z.B. aktualisiert 1/17 - wird alles richtig angezeigt.

    Ist keine Lösung in Sicht, können wir uns auch mit aktualisiert 1/17 behelfen.
    Es wäre aber interessant warum ein Unterschied besteht.
    Wir setzten das Template protostar ein.
    Bilder
    • joomla-beispiel.jpg

      44,85 kB, 1.134×572, 17 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „poltmanns“ () aus folgendem Grund: Grafik vergessen

    poltmanns schrieb:

    Was ist das Routing und wo schalte ich das um?

    Ich gehe einfach einmal davon aus, dass dein Suchtext in einem normalen Beitrag steht. Dieses Routing kannst du bei den Optionen der Komponente Inhalt im Register Integration auf Modern oder Legacy stellen. Wie steht das denn bei dir?

    poltmanns schrieb:

    Wenn ich jetzt unsere Kennung ändere - z.B. aktualisiert 1/17 - wird alles richtig angezeigt.

    Wie sieht der Link, der bei der Suche nach "aktualisiert 1/17" richtig erstellt wird genau aus?
    ---
    Don't push the river ... it flows by itself ...
    ---
    JUG Koblenz | Ich bin Joomler | astrid-guenther.de
    Ich kann das bestätigen.

    Das ist ein Joomla-Bug. So war die Zeile in 3.8.1
    github.com/joomla/joomla-cms/b…search/view.html.php#L268

    Bisschen unübersichtlich. Es geht um die $needle, die einen Slash enthalten kann, bspw.
    1/17
    , aber der Schrägstrich wird interpretiert als "Ende des regulären Ausdrucks". Alles danach wird als sog. Modifier interpretiert und einen Modifier 1 gibt es halt nicht.
    Warning: preg_replace(): Unknown modifier '1' in /components/com_search/views/search/view.html.php on line 268


    Dadurch wird der Titel geleert. Nicht mehr da. Also das oben beschriebene Problem.

    In der aktuellen Staging bzw. 3.8.2-dev wurde der Bug zwar gefixt, allerdings falsch, sobald es mehr als 1 Suchtreffer mit Suche nach z.B. 1/17 gibt:
    github.com/joomla/joomla-cms/b…h/view.html.php#L269-L271
    Die Warning ist dann die selbe, halt jetzt für Zeile 271. Und zwar ggf. mehrere Fehlermeldungen, je nach Anzahl Suchtreffer.

    Siehe Zeile 269: Joomla, etwas schlauer als in 3.8.1, escaped den Schrägstrich mit 1 Backslash. Kommt also raus
    1\/17
    Wunderbar richtig für den ersten Such-Treffer. Titel wird angezeigt

    Beim 2. Suchtreffer kommt aber, weil wir uns in einer foreach-Schleife befinden raus
    1\\/17
    Folgt Fehlermeldung. Kein Titel.

    Beim 3.Suchtreffer keine. Titel wird angezeigt.
    1\\\/17

    Beim 4.
    1\\\\/17
    Fehlermeldung. Kein Titel.

    Also, eeendlich, der temporäre Bugfix, sowohl für 3.8.1 als auch die aktuelle Staging.

    Datei: /components/com_search/views/search/view.html.php

    Joomla 3.8.1:
    Ersetze Zeile 268

    Quellcode

    1. $result->title = preg_replace("/\b($needle)\b/ui", $hl1 . "$1" . $hl2, htmlspecialchars($result->title, ENT_COMPAT, 'UTF-8'));


    durch

    Quellcode

    1. if (!isset($needleIsSlashed))
    2. {
    3. $needle = str_replace('/', '\/', $needle);
    4. $needleIsSlashed = 1;
    5. }
    6. $result->title = preg_replace("/\b($needle)\b/ui", $hl1 . "$1" . $hl2, htmlspecialchars($result->title, ENT_COMPAT, 'UTF-8'));


    In der aktuellen Staging:
    Ersetze Zeile 269:

    Quellcode

    1. $needle = str_replace('/', '\/', $needle);

    durch

    Quellcode

    1. if (!isset($needleIsSlashed))
    2. {
    3. $needle = str_replace('/', '\/', $needle);
    4. $needleIsSlashed = 1;
    5. }


    Das ist nat. nur eine Krücke und jemand sollte mit Bezug auf die aktuelle Staging ein Issue einreichen, dass durch die foreach-Schleife zu viele Backslashes gesetzt werden und die $needle außerhalb einmalig "gebackslashed" werden sollte. Damit's dann in der 3.8.2 korrekt gefixt ist.
    issues.joomla.org/
    oder
    github.com/joomla/joomla-cms/issues
    oder
    joomla-bugs.de

    Ich selbst find mich in dem Code-Verhau (an dem ich nicht ganz unschuldig bin, sehe ich gerade ;) ) im Moment gar nicht zurecht und wohl auch morgen nicht ;)
    Joomla-Fachmann: ghsvs.de

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Re:Later“ ()

forum.joomla.de is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.