Page 2 of 3
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 1:18 pm
by kleinerChemiker
Oh, der versteckt sich aber sehr gut

Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 2:54 pm
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
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 6:23 pm
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
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 6:31 pm
by Freudi
Timbalu wrote:Bei mir funktioniert es dann.
Kann ich hier bestätigen. Danke schon mal für den Würgaround!
Bye,
Freudi
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 6:45 pm
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
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 8:31 pm
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.
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 9:29 pm
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
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 9:41 pm
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.
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 9:53 pm
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
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 10:06 pm
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.
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 10:37 pm
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.
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Tue Aug 24, 2010 11:04 pm
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.
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Sat Aug 28, 2010 10:38 am
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
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Sat Aug 28, 2010 12:54 pm
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
Re: s9y Suche mit Umlauten und Pagination -> Fehler
Posted: Sat Aug 28, 2010 1:06 pm
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