s9y Suche mit Umlauten und Pagination -> Fehler

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Timbalu »

Und ist möglicherweise recht einfach zu lösen, wie ich schon sagte....
Vielleicht geht das auch noch ein wenig hübscher, aber,

ersetzt mal in der function_entries.inc.php ab Z 921

Code: Select all

    $uriArguments = $serendipity['uriArguments'];
    $uriArguments[] = 'P%s';
    $serendipity['smarty']->assign('footer_totalEntries', $totalEntries);
    $serendipity['smarty']->assign('footer_totalPages', $totalPages);
    $serendipity['smarty']->assign('footer_currentPage', $serendipity['GET']['page']);
    $serendipity['smarty']->assign('footer_pageLink', str_replace('%2A', '*', serendipity_rewriteURL(implode('/', $uriArguments) . $suffix)));
    $serendipity['smarty']->assign('footer_info', sprintf(PAGE_BROWSE_ENTRIES, (int)$serendipity['GET']['page'], $totalPages, $totalEntries));
mit

Code: Select all

    $uriArguments = $serendipity['uriArguments'];
    $uriArguments[] = 'P%s';
    $uriArguments[1] = str_replace(array(' ', '%2A'), array('+', '*'), urldecode($uriArguments[1]));
    $serendipity['smarty']->assign('footer_totalEntries', $totalEntries);
    $serendipity['smarty']->assign('footer_totalPages', $totalPages);
    $serendipity['smarty']->assign('footer_currentPage', $serendipity['GET']['page']);
    $serendipity['smarty']->assign('footer_pageLink', serendipity_rewriteURL(implode('/', $uriArguments) . $suffix));
    $serendipity['smarty']->assign('footer_info', sprintf(PAGE_BROWSE_ENTRIES, (int)$serendipity['GET']['page'], $totalPages, $totalEntries));
Bei mir funktioniert es dann. Ich konnte leider in Ermangelung vieler Seiten für das Searchterm nur mit zwei Seiten erfolgreich testen. Allerdings ist dies nur ein Workaround, da die eigentliche Dekodierung woanders stattfinden muss ( und es für {$footer_next_page} auch tut )!

Ian
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by yellowled »

Ich kann hier nur noch bedingt folgen, hab auch ingesamt zuviele Testbaustellen offen -- sehe ich es richtig, dass der Fehler im Kern liegt und nichts am Paginations-Code in den Templates geändert werden müsste? Dann würde ich mich hier ausklinken und darauf verlassen, dass Ihr das schon wuppt. Wäre 'ne echte Erleichterung für mich :)

YL
Freudi
Regular
Posts: 97
Joined: Thu Nov 23, 2006 6:29 am
Contact:

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Freudi »

Timbalu wrote:Bei mir funktioniert es dann.
Kann ich hier bestätigen. Danke schon mal für den Würgaround! :)

Bye,
Freudi
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Timbalu »

yellowled wrote:... sehe ich es richtig, dass der Fehler im Kern liegt und nichts am Paginations-Code in den Templates geändert werden müsste? Dann würde ich mich hier ausklinken und darauf verlassen, dass Ihr das schon wuppt. Wäre 'ne echte Erleichterung für mich :)
Eigentlich ja, aber ...
ich hatte mit meiner kleinen Testung die komische Erfahrung gemacht, dass ich nur vorwärts paginieren konnte. Von der letzten Seite an zeigt er die Pagination zurück zur ersten nicht mehr an. (Und das ist anders als beim Blog vom kleinen Chemiker...) An wem das genau liegt, kann ich auch nicht so schnell sagen.
An dieser Stelle wäre vielleicht Garvin gefordert... ;-)

Ian
kleinerChemiker
Regular
Posts: 765
Joined: Tue Oct 17, 2006 2:36 pm
Location: Vienna/Austria
Contact:

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by kleinerChemiker »

Im Grunde war mein erster Patch schon (fast) richtig. Ich habe lediglich übersehen, daß bei sprintf() nicht ein \ als Escape-Zeichen dient, sondern man ein % verwenden muß. Daher muß man nur function_entries.inc.php Zeile 921 von

Code: Select all

$uriArguments = $serendipity['uriArguments'];
in

Code: Select all

$uriArguments = str_replace('%', '%%', $serendipity['uriArguments']);
ändern.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Timbalu »

das sieht gut aus, klappt bei mir local aber nicht!

Nur so

Code: Select all

    $uriArguments[1] = str_replace(array('%2A', ' ', '%'), array('*', '+', '%%'), $uriArguments[1]);
    $serendipity['smarty']->assign('footer_pageLink', serendipity_rewriteURL(implode('/', $uriArguments) . $suffix));
Dabei bin ich auch drauf gestoßen warum manchmal keine back navigation angezeigt wird...
Dies ist bei mir der Fall, wenn keine statischen Seiten in der Suche gefunden werden. Wenn ihr wißt woran das liegt, bitte posten.

Ian
kleinerChemiker
Regular
Posts: 765
Joined: Tue Oct 17, 2006 2:36 pm
Location: Vienna/Austria
Contact:

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by kleinerChemiker »

Welche Version von php bzw. s9y nutzt du?

Bei mir funktioniert es sowohl lokal als auch im Blog. Lokal werden ganz sicher keine statischen Seiten gefunden, denn ich habe keine, nicht mal das Plugin installiert.

eventuell kannst du ja mal die unterste Zeile ergänzen

Code: Select all

    $uriArguments = $serendipity['uriArguments'];
    $uriArguments[] = 'P%s';
    var_dump($uriArguments);
und im Quelltext die Ausgabe suchen und hier posten.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Timbalu »

soweit war ich ja auch schon ;-)
aber dennoch

Code: Select all

    $uriArguments = str_replace('%', '%%', $serendipity['uriArguments']);
    $uriArguments[] = 'P%s';
    var_dump($uriArguments);
=
array(3) { [0]=>  string(6) "search" [1]=>  string(19) "%%2A%%C3%%BCber+uns" [2]=>  string(3) "P%s" } 
was ja bekanntlich bedeutet, dass man eigentlich nur key [1] behandeln muss. So ergibt es den bekannten Fehler.

Ian
kleinerChemiker
Regular
Posts: 765
Joined: Tue Oct 17, 2006 2:36 pm
Location: Vienna/Austria
Contact:

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by kleinerChemiker »

.) Ob man nur einen key verändert oder alle, ändert am Fehler nichts. Ich bevorzuge aber alle keys, da man ja nicht immer sicher sein kann, daß das Suchwort an dieser Stelle kommt.

Scheinbar machen nicht nur Umlaute Probleme. Du suchst ja schienbar nach "*Über uns"

Daher funzt deine Version auch. " " sollte man eigentlich nicht ersetzen müssen, aber schaden wirds kaum. Eventuell sollte man aber noch weitere Sonderzeichen ausprobieren, oder sich überhaupt was anderes überlegen.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Timbalu »

kleinerChemiker wrote:.) Ob man nur einen key verändert oder alle, ändert am Fehler nichts. Ich bevorzuge aber alle keys, da man ja nicht immer sicher sein kann, daß das Suchwort an dieser Stelle kommt.
an dieser stelle aber ja ... ;-)
Scheinbar machen nicht nur Umlaute Probleme. Du suchst ja schienbar nach "*Über uns"
ja, das ist wegen der Möglichkeit mit Wildcards zu suchen ...
Daher funzt deine Version auch. " " sollte man eigentlich nicht ersetzen müssen, aber schaden wirds kaum. Eventuell sollte man aber noch weitere Sonderzeichen ausprobieren, oder sich überhaupt was anderes überlegen.
Das Leerzeichen wird bei {$footer_next_page} auch durch + ersetzt und das wird irgendwo anders geschehen.
kleinerChemiker
Regular
Posts: 765
Joined: Tue Oct 17, 2006 2:36 pm
Location: Vienna/Austria
Contact:

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by kleinerChemiker »

Ich denke, deine Version paßt schon. Man kann auch urldecode verwenden, was aber dazu führt, daß die Ausgabe nicht urlencoded ist (was aber kein Problem sein sollte). Sucht man nach % würde das aber vermutlich dann erst wieder stören.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Timbalu »

Nee, das stimmt leider nicht!

Meine Einstellung sind:
staticpages & paginator

Mit meiner Lösung lag ich grottenfalsch, da dies die normale Paginator Navigation (ohne Suche) so zerstört, dass die prev und next Pfeile zwar funktionieren, aber nicht mehr die Nummernavigation.

Ich habe das daher jetzt auf dieses hier reduziert.
Ersetze im Original

Code: Select all

$serendipity['smarty']->assign('footer_pageLink', str_replace('%2A', '*', serendipity_rewriteURL(implode('/', $uriArguments) . $suffix)));
mit

Code: Select all

if($serendipity['GET']['action'] == 'search') $uriArguments[1] = urldecode($uriArguments[1]);
$serendipity['smarty']->assign('footer_pageLink', serendipity_rewriteURL(implode('/', $uriArguments) . $suffix));
Dies sollte eigentlich alles wieder erlauben, außer mein bestehendes Problem der fehlenden Such-Rückwärtspagination und (neu) der falschen Suchtreffer Anzeige auf den Folgeseiten, wenn keine statischen Seiten mit Suchtreffer vorliegen, bzw vorzuliegen scheinen.

Ian
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Timbalu »

After some more investigation.... I think I have solved the sprintf error having Non-ASCII characters....

Replace my last replace with:

Code: Select all

    if($serendipity['GET']['action'] == 'search') { 
        $uriArguments[1] = str_replace(array(' ', '%'), array('+', '%25'), urldecode($uriArguments[1]));
    } 
    $serendipity['smarty']->assign('footer_pageLink', str_replace('%2A', '*', serendipity_rewriteURL(implode('/', $uriArguments) . $suffix)));
and edit your bulletproof entries.tpl ~line 448, replace

Code: Select all

<a href="{$smarty.section.i.index|string_format:$footer_pageLink}">{$smarty.section.i.index}</a>
with

Code: Select all

<a href="{$footer_pageLink|replace:"%s":$smarty.section.i.index}">{$smarty.section.i.index}</a>
Do not ask, why?, but this works! ;-)
Still got my issues error...!

Ian
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Timbalu »

Hi

Good news!
Just found out, you do not need to change function_entries.inc.php at all!
Just do the bulletproof entries thing! ;-)

Ian
Post Reply