Vysledky vyhladavania len pre dany jazyk- multijazycny web

Česká/Slovenská podpora pro CMS Made Simple
Joseph777
Forum Members
Forum Members
Posts: 206
Joined: Wed Mar 16, 2011 9:13 am

Vysledky vyhladavania len pre dany jazyk- multijazycny web

Post 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}
bunak
Forum Members
Forum Members
Posts: 75
Joined: Mon Sep 10, 2007 1:58 pm

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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.
Joseph777
Forum Members
Forum Members
Posts: 206
Joined: Wed Mar 16, 2011 9:13 am

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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?
bunak
Forum Members
Forum Members
Posts: 75
Joined: Mon Sep 10, 2007 1:58 pm

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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}

Joseph777
Forum Members
Forum Members
Posts: 206
Joined: Wed Mar 16, 2011 9:13 am

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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)
bunak
Forum Members
Forum Members
Posts: 75
Joined: Mon Sep 10, 2007 1:58 pm

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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}
Joseph777
Forum Members
Forum Members
Posts: 206
Joined: Wed Mar 16, 2011 9:13 am

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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
kuzmany
Power Poster
Power Poster
Posts: 448
Joined: Tue Oct 10, 2006 5:00 pm

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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.
bunak
Forum Members
Forum Members
Posts: 75
Joined: Mon Sep 10, 2007 1:58 pm

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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.
Joseph777
Forum Members
Forum Members
Posts: 206
Joined: Wed Mar 16, 2011 9:13 am

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post by Joseph777 »

a mohol by si mi prosim ta napisat ako by to malo vyzerat?
bunak
Forum Members
Forum Members
Posts: 75
Joined: Mon Sep 10, 2007 1:58 pm

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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>
Joseph777
Forum Members
Forum Members
Posts: 206
Joined: Wed Mar 16, 2011 9:13 am

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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
bunak
Forum Members
Forum Members
Posts: 75
Joined: Mon Sep 10, 2007 1:58 pm

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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}

Joseph777
Forum Members
Forum Members
Posts: 206
Joined: Wed Mar 16, 2011 9:13 am

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post by Joseph777 »

fuha vdaka

vidim ze si riadny znalec
bunak
Forum Members
Forum Members
Posts: 75
Joined: Mon Sep 10, 2007 1:58 pm

Re: Vysledky vyhladavania len pre dany jazyk- multijazycny w

Post 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
Post Reply

Return to “Czech/Slovak - Česky/Slovensky”