s9y Suche mit Umlauten und Pagination -> Fehler

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
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 »

Wenn Ihr hier fertig seit, schickt mir dann bitte jemand eine E-Mail mit den notwendigen Änderungen für Bulletproof? Das wäre supernett, ich hab zu viele Baustellen offen im Moment. Danke.

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

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Timbalu »

Ja gerne, (aber nur,) wenn ihr dafür auch eine zum Lernen befähigende Demo - bzw eine einfache Vorlage mit Anweisungen - für die neuen Serendipity Templates macht, an denen ihr gerade bastelt... (Stichwort: Child Themes - und Fallbacks). ;-)

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 »

Wenn's da was gibt, wird es veröffentlicht. Das wird vor s9y 1.6 nicht der Fall sein. (Weil es vorher nicht anständig funktioniert.)

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

Re: s9y search with Non-ASCII and Pagination -> Error

Post by Timbalu »

What has happend and solution.

This is what the bulletproof entries.tpl gets from function_entries.inc.php
The search is 'über' or 'über*' and {$footer_pageLink} appears to be a string
like '/test/search/%C3%BCber/P%s.html' or '/test/search/%C3%BCber*/P%s.html'.

Smarty's sprintf modifier (meanwhile 'string_format') tries to replace the page number %s with a value, gets stuck with all the other commandlike '%C3%BC' (ü) looking stuff of the Non-ASCII character and cries for help; this was the error we got.

Now the pagination section in entries.tpl.

The original part is {$smarty.section.i.index|string_format:$footer_pageLink}, which meant to mean something like {$number|string_format:"%d"} (replace number with a formated(sprintf) number), but can not do so, while it tries with {$number|string_format:$string}.

So we now know, we are not allowed to use string_format here. We have to use a simple replace modifier quick and cool, and just do $string|replace:'%s':$index.page.number.

There are 3 places to do so inside entries.tpl (already modified):

Code: Select all

    {if $template_option.show_pagination == 'true' && $footer_totalPages > 1}
        <div class="pagination">{$footer_pageLink}
            {eval var=$footer_currentPage-3 assign="paginationStartPage"}
            {if $footer_currentPage+3 > $footer_totalPages}
                {eval var=$footer_totalPages-6 assign="paginationStartPage"}
            {/if}
            {if $paginationStartPage <= 0}
                {assign var="paginationStartPage" value="1"}
            {/if}
            {if $footer_prev_page}
                <a title="{$CONST.PREVIOUS_PAGE}" href="{$footer_prev_page}"><span class="pagearrow">&#9668;</span></a>
            {/if}
            {if $paginationStartPage > 1}
                <a href="{$footer_pageLink|replace:'%s':'1'}">1</a>
            {/if}
            {if $paginationStartPage > 2}
                &hellip;
            {/if}
            {section name=i start=$paginationStartPage loop=$footer_totalPages+1 max=7}
                {if $smarty.section.i.index != $footer_currentPage}
                    <a href="{$footer_pageLink|replace:'%s':$smarty.section.i.index}">{$smarty.section.i.index}</a>
                {else}
                    <span id="thispage">{$smarty.section.i.index}</span>
                {/if}
            {/section}
            {if $smarty.section.i.index < $footer_totalPages}
                &hellip;
            {/if}
            {if $smarty.section.i.index <= $footer_totalPages}
                <a href="{$footer_pageLink|replace:'%s':$footer_totalPages}">{$footer_totalPages}</a>
            {/if}
            {if $footer_next_page}
                <a title="{$CONST.NEXT_PAGE}" href="{$footer_next_page}"><span class="pagearrow">&#9658;</span></a>
            {/if}
        </div>
    {/if}
This is the smarty way, or you can do the indexing number replace thing in the function_entries.inc.php, like it is done for 'footer_prev_page' and 'footer_next_page' page. But this is a decision of core and Garvin.

hth, Ian

PS. Wenn ich mir es recht überlege, könnte man auch einfach die beiden funktionierenden letztgenannten Variablen benutzen, oder? ;-)

PPS. Nein!, Sobald es mehr als 2 Seiten sind, müssen wir auch wieder irgendwelche Rechenoperationen einfügen und können dann gleich bei der vorhandenen Lösung bleiben.
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Re: s9y search with Non-ASCII and Pagination -> Error

Post by yellowled »

Timbalu wrote:This is the smarty way, or you can do the indexing number replace thing in the function_entries.inc.php, like it is done for 'footer_prev_page' and 'footer_next_page' page. But this is a decision of core and Garvin.
Da Bulletproof nicht zwingend das einzige Template ist, dass diese Funktion benutzt, würde ich es für richtiger halten, das im Kern zu machen.

Garvin?

YL
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: s9y search with Non-ASCII and Pagination -> Error

Post by garvinhicking »

Hi!

Öh, ich sehe hier direkt keine Möglichkeit wie man das im Kern machen könnte?!

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by Timbalu »

Naja es ginge schon und das relativ einfach...., das Problem war ja der ganze String mit den übersetzten Umlauten, so bräuchte man eigentlich nur den string aufsplitten...

Code: Select all

/test/search/%C3%BCber/P%s.html
in

Code: Select all

/test/search/%C3%BCber/
und

Code: Select all

P%s.html
und hätte dann 2 Variablen, die man im Template wieder zusammenbaut. So ließe sich die alte Version weiter verwenden mit einem kleinen zusätzlichen Umbau..., aber ach alles doppelt gemoppelt ;-)
Oder man investiert etwas mehr und müsste die smarty paginator logik mit 1-7 Schritten in php übersetzen und in die serendipity_printEntryFooter function einbauen...

Ich wäre aber auch eher für die einfache replace Lösung in der entries.tpl.

Ian
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: s9y Suche mit Umlauten und Pagination -> Fehler

Post by garvinhicking »

Hi!

Aber das wären ja Änderungen die man auch in jedem Template durchführen muss...

Ich denke dass Timbalus Lösung mit replace statt string_format in entries.tpl der korrekte Weg wäre.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
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 »

garvinhicking wrote:Aber das wären ja Änderungen die man auch in jedem Template durchführen muss...
Das war der Teil, der sich mir nicht erschloss. Wenn es „in Kern und Templates“ vs „nur im Template“ ist, ist die Wahl natürlich klar.

Ich schaue mal, dass ich das die Tage in BP und ggf. weiteren Templates auf Spartacus anpasse, aber im Moment steht mir das Projektwasser bis Oberkante Unterlippe.

YL
Post Reply