Page 1 of 2
Vysledky vyhladavania len pre dany jazyk- multijazycny web
Posted: Thu Aug 23, 2012 2:33 pm
by Joseph777
Zdravim
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
Code: Select all
{foreach from=$results item=entry}
<li><a href="{$entry->url}">{$entry->title}</a> ({$entry->weight}%)</li>
{/foreach}
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Mon Sep 10, 2012 8:15 pm
by bunak
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.
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Mon Sep 10, 2012 9:04 pm
by Joseph777
ahoj
no nieco take som aj urobil
Code: Select all
{foreach from=$results item=entry}
{assign var='url_lang' value='/'|explode:$entry->url}
{if $url_lang[3] == 'cz'}CZ{else}SK{/if}: <a href="{$entry->url}">{$entry->title}</a>
{/foreach}
teda vysledky hladania vyzeraju nejako takto
- CZ: podstranka 3
- SK: podstranka 5
_ SK: podstranka 2
- CZ: podstranka 1
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
neviete ako na to?
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Mon Sep 10, 2012 9:26 pm
by bunak
A proč nenapíšeš?
Code: Select all
{foreach from=$results item=entry}
{assign var='url_lang' value='/'|explode:$entry->url}
{if $url_lang[3] == 'cz'}<a href="{$entry->url}">{$entry->title}</a>{/if}
{/foreach}
{foreach from=$results item=entry}
{assign var='url_lang' value='/'|explode:$entry->url}
{if $url_lang[3] == 'sk'}<a href="{$entry->url}">{$entry->title}</a>{/if}
{/foreach}
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.
Code: Select all
{foreach from=$results item=entry}
{assign var='url_lang' value='/'|explode:$entry->url}
{if $url_lang[3] == $params['jazyk']}<a href="{$entry->url}">{$entry->title}</a>{/if}
{/foreach}
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Mon Sep 10, 2012 9:31 pm
by Joseph777
diki toto su pre mna zase nove veci
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)
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Tue Sep 11, 2012 5:53 am
by bunak
tak co takhle?
Code: Select all
{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}
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Tue Sep 11, 2012 7:29 am
by Joseph777
funguje to velka vdaka
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
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Tue Sep 11, 2012 7:50 am
by kuzmany
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.
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Tue Sep 11, 2012 8:37 am
by bunak
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.
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Tue Sep 11, 2012 8:40 am
by Joseph777
a mohol by si mi prosim ta napisat ako by to malo vyzerat?
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Tue Sep 11, 2012 9:26 am
by bunak
udělal bych to nějak takhle (využil jsem smarty {counter})
Code: Select all
{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>
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Tue Sep 11, 2012 1:06 pm
by Joseph777
diky funguje to
skoda ale ze nemozno <span>počet výsledků: {$pocitadlo}</span> umiestnit pred foreach teda nad vysledky vyhladavania pretoze vtedy vypise 0
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Tue Sep 11, 2012 1:46 pm
by bunak
tam už by pomohl jedině javascript:
Code: Select all
<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}
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Tue Sep 11, 2012 2:00 pm
by Joseph777
fuha vdaka
vidim ze si riadny znalec
Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w
Posted: Tue Sep 11, 2012 2:04 pm
by bunak
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