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.

  • 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.

  • 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.

  • Ich habe den TE so verstanden, dass er mit dem Suchbegriff Adria und 123-Adria den gleichen Beitrag finden sollte. Dieser wird auch beide Male gefunden - beim Suchbegriff 123-Adria wird aber der Link nicht korrekt dargestellt.


    Vielleicht kann @pollmanns das noch einmal genauer erklären.

  • 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.

  • 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?


    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?

  • Ich kann das bestätigen.


    Das ist ein Joomla-Bug. So war die Zeile in 3.8.1
    https://github.com/joomla/joom…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.

    Zitat

    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:
    https://github.com/joomla/joom…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

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


    durch

    Code
    if (!isset($needleIsSlashed)){ $needle = str_replace('/', '\/', $needle); $needleIsSlashed = 1;}$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:

    Code
    $needle = str_replace('/', '\/', $needle);


    durch

    Code
    if (!isset($needleIsSlashed))
    {
     $needle = str_replace('/', '\/', $needle);
     $needleIsSlashed = 1;
    }


    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.
    https://issues.joomla.org/
    oder
    https://github.com/joomla/joomla-cms/issues
    oder
    http://www.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 ;)