ako mam zobrazit vysledky vyhladavania len pre daný jazyk?
mam /sk/ a /cz/ verziu stranky tejto struktury
1 Slovensky
1.1 Domov
...
2 Česky
2.2 Domu
...
ked som na slovenskej a dam nieco hladat chcem aby mi dalo vysledky len zo slovenskej verzie a nie z ceskej
treba nejako doplnit zapis v sablone pre vysledky vyhldavania ale nic ma nenapada
Ahoj,
napadlo mě, že pokud máš v $entry->url cestu např tvujweb/sk/domu nebo tak nějak tak si v tom kolečku můžeš udělat filtr na to jestli obsahuje url znaky sk nebo cz a podle toho zobrazit jen relevantní odpovědi.
B.
Keby sa toto dalo nejako pekne usporiadat teda najprv by foreach vypisal ceske vysledky a potom slovenske alebo este lepsie keby vymazal tie slovenske vysledky ked hladam na ceskej verzii webu a opacne
a protože se dá předat modulu třeba parametr jazyk ({search jazyk="sk"} tak můžeš porovnávat přímo podle parametru jazyk $params['jazyk'] a zůstane ti nakonec jen jedno kolečko s výsledkama pro daný jazyk.
problem je ale toto $url_lang[3] == 'sk' pretoze url adresa slovenskych podstranok neobsahuje to sk nakolko slovensky jazyk je defaultny jazyk webu (v url adresach sa nenachadza kod-skratka krajiny teda SK)
{foreach from=$results item=entry}
{assign var='url_lang' value='/'|explode:$entry->url}
{if $params['jazyk']=='sk'}
{* cast pro defaultni jazyk, sem se to dostane jen pro hodnotu parametru sk, ktera tam ale nikdy nebude takze by tam melo byt nejake delsi jmeno stranky nebo nic pro defaultni stranku, jinak tam budou 2 znaky jazyka *}
{if $url_lang[3]|count_characters != 2}<a href="{$entry->url}">{$entry->title}</a>
{else}
{* vsechny ostatni jazyky *}
{if $url_lang[3] == $params['jazyk']}<a href="{$entry->url}">{$entry->title}</a>
{/if}
{/foreach}
iba som miesto $params['jazyk'] pouzil $lang co je vlastne bud SK alebo CZ (je to alias najvyssej stranky v hierarchii stranok - teda 1. resp. 2.)
jedinny detail ktory sa neda asi vyriesit je cislo poctu vysledkov ({$itemcount}): i ked sa mi zobrazia len ceske vysledky vyhladavania cislo poctu vysledkov zaratava aj slovenske vysledky hladania
Najvacsi problem pri Search je, ze vysledky nevracaju id alebo alias stranky, iba url, text a vahu.
MleCMS ma ale podporu pre vyhladavanie stranok, podobny princip ako ste riesili v sablonach, akurat vsetky url musia zacinat na sk/, cz/, en/ atd. Pripadne pri internal mode index.php/sk/, index.php/cz/ atd.
K tomu poctu vysledku: proc si neudelat primo v cyklu pocitadlo? Pred vstupem do cyklu se nastavi na 0 a v podmince se mi prihodi +1. Pak uz staci zobrazit jen promennou pocitadla a mam spravny pocet vysledku.
{counter assign='pocitadlo' print=0}
{* nastavi counter, priradi do promene pocitadlo vysledek z counteru, pri prirazovani ho nebude zobrazovat, ostatni hodnoty default = od 1, krok 1, pricita *}
{foreach from=$results item=entry}
{assign var='url_lang' value='/'|explode:$entry->url}
{if $params['jazyk']=='sk'}
{* cast pro defaultni jazyk, sem se to dostane jen pro hodnotu parametru sk, ktera tam ale nikdy nebude takze by tam melo byt nejake delsi jmeno stranky nebo nic pro defaultni stranku, jinak tam budou 2 znaky jazyka *}
{if $url_lang[3]|count_characters != 2}
{counter}{* inkermentuje pocitadlo *}
<a href="{$entry->url}">{$entry->title}</a>
{else}
{* vsechny ostatni jazyky *}
{if $url_lang[3] == $params['jazyk']}
{counter}{* inkermentuje pocitadlo *}
<a href="{$entry->url}">{$entry->title}</a>
{/if}
{/foreach}
<span>počet výsledků: {$pocitadlo}</span>
<span id="solcount"></span>
{counter assign='pocitadlo' print=0}
{* nastavi counter, priradi do promene pocitadlo vysledek z counteru, pri prirazovani ho nebude zobrazovat, ostatni hodnoty default = od 1, krok 1, pricita *}
{foreach from=$results item=entry}
{assign var='url_lang' value='/'|explode:$entry->url}
{if $params['jazyk']=='sk'}
{* cast pro defaultni jazyk, sem se to dostane jen pro hodnotu parametru sk, ktera tam ale nikdy nebude takze by tam melo byt nejake delsi jmeno stranky nebo nic pro defaultni stranku, jinak tam budou 2 znaky jazyka *}
{if $url_lang[3]|count_characters != 2}
{counter}{* inkermentuje pocitadlo *}
<a href="{$entry->url}">{$entry->title}</a>
{else}
{* vsechny ostatni jazyky *}
{if $url_lang[3] == $params['jazyk']}
{counter}{* inkermentuje pocitadlo *}
<a href="{$entry->url}">{$entry->title}</a>
{/if}
{/foreach}
{literal}
<__script__ language="javascript">
document.getElementById("solcount").innerHTML = "počet výsledků:" + {$pocitadlo}
/* tady nevim jestli smarty naplni promennou pocitadlo v tagu literal, a jak je na tom MSIE nizsich verzi s plnenim innerHTML, pokud by to neslo musel by se vytvorit textovy objekt a ten pomoci append child pripojit do toho spanu, v prohlizecich by to fungovat melo */
</__script>
{/literal}
znalec rozhodně nejsem, viz moje dotazy ohledne CMSMS tady, ale weby už nějaký pátek programuju. Kdyby nechodil ten MSIE tak ti pošlu jak to napsat v JS pomocí DOM modelu,
kdyžtak dej vědět