Page 1 of 1
[solved] Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Mon Sep 06, 2010 9:02 pm
by lapak
Zdravím české CMSMSáře

Právě stavím jeden e-shop na callguyových modulech (Products, Orders, Cart, atd.) a mám jeden opravdu lame dotaz.
Tvořím šablonu pro souhrn produktů (action=default) a potřebuji tam počítání stránek ve stylu [1 2 3 4 5 ...], zatímco defaultní počítání je stylem [první předchozí další poslední]. S čím nějvíc bojuju, co by vlastně vyřešilo můj problém, tak nejlépe v nějaké smarty proměnné získat url pro konkrétní číslo stránky. Bohužel proměnné, které jsou v modulu k dispozici, tak právě počítají s tou variantou jak jsem zmiňoval, takže mám k dispozici url pro první, poslední, předchozí a další stránku. A tyto url jsou bohužel docela komplikované a dynamické, že hardcodovat odkaz, kde by se jenom měnilo číslo stránky asi taky není možné (teda alespoň pro mě

). Ještě jsem zkoušel trošku šiléné řešení, že jsem vzal url třeba následující stránky a v ní jsem se pokoušel pomocí smarty modifiers nahrazovat page=? za moje číslo stránky. Problém je v tom, že to číslo na místě otazníku se taky pokaždé mění a se zástupnýma znakama ve smarty si taky moc nerozumím (a ani v dokumentaci jsem toho moc nenašel). Nejde ani použít url pro první stránku, kde by mělo být vždy page=1, protože pokud jsme právě na první stránce, tak v té proměnné ten odkaz není.
Doufám že moje krkolomné vysvětlování pochopíte a díky za odpovědi a nápady.
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Tue Sep 07, 2010 5:19 am
by osxfil
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Tue Sep 07, 2010 6:47 am
by kuzmany
Pekne riesenie, ja by som to riesil zasahom v PHP kode. Toto si retwittnem.
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Tue Sep 07, 2010 9:21 am
by lapak
tak to je paráda, díky

Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Tue Sep 07, 2010 10:35 am
by lapak
Ještě řeším jednu drobnost ohledně výpisu kategorií, tak nebudu zakládat nové vlákno:
v šabloně přehledu používám výpis kategorií pomocí {Products action='categorylist'} a v dané šabloně výpisu kategorií mám odkazy na zobrazení daných kategorií přes {$obj->summary_url}. Co bych ale potřeboval, tak v té url (nebo klidně i jinak) předat parametr pagelimit pro omezení počtu produktů na stránce. Pouhým přidáním &pagelimit= to bohužel nejde, protože ten link vypadá např takhle:
index.php?mact=Products,cntnt01,default,0&cntnt01category=Bokeh&cntnt01pagelimit=1&cntnt01productid=3&cntnt01page=2&cntnt01returnid=16
kde se to cntnt01 před tím pagelimit mění.
asi by stačilo nějak vytáhnout ten cnt... z proměnné mact? Ale mě jde z polí a objektů ve smarty úplně hlava kolem...
přikládám šablony pro lepší představu, nebo kdyby někoho napadlo lepší řešení:
výpis kategorií:
Code: Select all
{* init category name *}
{foreach from=$items item=entry}
{foreach from=$entry->categories item='category'}{/foreach}
{/foreach}
{foreach from=$categorylist item='obj' name='foreach_categories'}
{if $obj->name == $category->name}
<a href="{$obj->summary_url}"><span class="obrazy_categories_active">{$obj->name}</span></a>
{else}
<a href="{$obj->summary_url}">{$obj->name}</a>
{/if}
{if $smarty.foreach.foreach_categories.last != true}
<img src="images/obrazy_caregories_spacer.png" width="28" height="6" />
{/if}
{/foreach}
šablona pro výpis produktů:
Code: Select all
<div id="obrazy_bg">
<div id="obrazy_categories">
{Products action='categorylist'}
</div>
<div id="obrazy_categories_footer"></div>
...
a cílem hry je, že když kliknu na danou kategorii, tak se mi ukážou produkty v ní, ale pouze daný počet...
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Tue Sep 07, 2010 5:16 pm
by kuzmany
Presne som nerozumel co chces dosiahnut, ale nebude fungovat? {Products action='categorylist' pagelimit='10'}
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Tue Sep 07, 2010 7:18 pm
by zmija832
Zdar, pomůže mi prosím někdo, jak mám pomocí smarty ( přiznám se , neumím

) nechat vypsat název kategorie v Product catalogue v šabloně itemlist (v zobrazení produktů dané kategorie se nezobrazuje název kategorie, jen produkty).
Jsem to napsal , uf , snad pochopíte co chci

. Dííííííky.
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Tue Sep 07, 2010 10:01 pm
by kuzmany
cateogory id by si mal poznat, takze potom:
{products_getcategory categoryid=1 assign='tmp'}Category name = {$tmp->name}
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Wed Sep 08, 2010 6:53 am
by zmija832
hází hlášku
string(137) "Smarty error: [in temporary template line 1]: syntax error: unrecognized tag 'products_getcategory' (Smarty_Compiler.class.php, line 590)" Category name =
id kategorie by mělo být vždy aktuální zobrazené kategorie, protože template itemlist je pro všechny kategorie stejná
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Wed Sep 08, 2010 11:00 am
by lapak
kuzmany wrote:
Presne som nerozumel co chces dosiahnut, ale nebude fungovat? {Products action='categorylist' pagelimit='10'}
Tak tohle me nenapadlo, cekal jsem ze tim se nastavi pagelimit pro ten category list a ono se tim fakt nastavi pagelimit az pro odkazy z toho categorylistu

Kdo by to byl rek

Diky!
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Wed Sep 08, 2010 11:05 am
by lapak
zmija832 wrote:
Zdar, pomůže mi prosím někdo, jak mám pomocí smarty ( přiznám se , neumím

) nechat vypsat název kategorie v Product catalogue v šabloně itemlist (v zobrazení produktů dané kategorie se nezobrazuje název kategorie, jen produkty).
Jsem to napsal , uf , snad pochopíte co chci

. Dííííííky.
Jestli sem to dobre pochopil, tak skus ve vypisu produktu mezi:
{foreach from=$items item=entry} a prislusnym {/foreach}
tohle:
Code: Select all
{if isset($entry->categories)}
Categories:
{foreach from=$entry->categories item='category'}
{$category->name},
{/foreach}
<br/>
{/if}
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Wed Sep 08, 2010 4:21 pm
by zmija832
lapak, tady je celá šablona itemlist i s úpravou
Code: Select all
<style>
{literal}
a.listitem {
padding: 5px 15px;
display: block;
height: 90px;
border-bottom: 1px solid Gray;
text-decoration: none;
color: #fff;
}
a.listitem img {
float: right;
border: 0;
}
a.listitem:hover {
background-color: #9B172C;
}
{/literal}
</style>
{foreach from=$itemlist item="item"}
{if isset($entry->categories)}
Categories:
{foreach from=$entry->categories item='category'}
{$category->name},
{/foreach}
<br/>
{/if}
<a class="listitem{if $item->is_selected} active{/if}" href="{$item->detailurl}">
{if $item->image != ""}<img src="uploads/{$item->image_thumbnail}" alt=""/>{/if}
<p><br/><b>{$item->name}</b>{if $item->somecheckbox}<br/>The checkbox is checked!{/if}</p></a>
{/foreach}<p>
<INPUT onclick=history.back(); type=button value=ZPĚT> </p>
takto?
Název kategorie nevypíše

Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Wed Sep 08, 2010 4:32 pm
by lapak
zmija832 wrote:
lapak, tady je celá šablona itemlist i s úpravou
Používáš určitě callguyovy e-commerce moduly (Products, Cart, Orders, etc.) o kteých se tady bavíme? Pokud používáš Shop Made Simple atd. tak tam minimálně názvy těch proměnných budou jiné a já se zatím s S. Made Simple nesetkal, tak to ti moc nepomůžu.
Podle té tvoji šablony by to mělo být spíš takhle:
Code: Select all
{if isset($item->categories)}
Categories:
{foreach from=$item->categories item='category'}
{$category->name},
{/foreach}
<br/>
{/if}
Ale to pouze v případě, že by to používalo stejné názvy a typy proměnných jako Products modul, což nejspíš nepoužívá...
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Wed Sep 08, 2010 6:13 pm
by zmija832
modul : prodcatalogue 2.0
Re: Products - v souhrnu produktů počítání stránek typu 1 2 3 4...
Posted: Thu Sep 09, 2010 2:57 pm
by kuzmany
zmija832 wrote:
modul : prodcatalogue 2.0
To je tento modul
http://dev.cmsmadesimple.org/project/fi ... ackage-683
Toto forum je k uplne inemu modulu, a dalsia vec ze ten modul sluzi len ako demo a nie je urcene na pouzitie. Treba si vytvorit vlastny modul:
http://dev.cmsmadesimple.org/project/fi ... ackage-647