Page 1 of 1

[IŠSPRĘSTA] Products modulis

Posted: Sat Feb 04, 2012 5:17 pm
by McF
Sveiki,

CMSMS: 1.10.3
Products: 2.15.1


Man netinka standartinis Products modulio puslapiavimas

Code: Select all

<< < Puslapis 5 Of 6 > >>
Man reikia, kad puslapius išvardintų visus:

Code: Select all

1 2 3 4 5 6
Aš įjungiau CMSMS pretty URLs:

Code: Select all

$config['url_rewriting'] = 'internal';
Matau, kad į Produktų detalių puslapius rodomi kaip Pretty URLs, pvz:

Code: Select all

http://psl.lt/index.php/Products/60/60/PWE-340
Tačiau puslapių nuorodos visiškai ne Pretty URLs:

Code: Select all

http://psl.lt/index.php?mact=Products,cntnt01,default,0&cntnt01category=Produktai&cntnt01pagelimit=12&cntnt01page=6&cntnt01returnid=60&cntnt01returnid=60
Klausimas: kaip padaryti nuorodą į konkretų puslapį?
O gal pakeitus į pilną (su Apache mod_rewrite) Pretty URLs Products puslapiavimas automatiškai susitvarkys?

McF

Re: Products modulis

Posted: Sat Feb 04, 2012 6:06 pm
by vilkis
McF wrote: O gal pakeitus į pilną (su Apache mod_rewrite) Pretty URLs Products puslapiavimas automatiškai susitvarkys?
McF
Nesusitvarkys.

gali pasiskaityti :

http://forum.cmsmadesimple.org/viewtopi ... lapiavimas

Naujienoms kazkada dariau toki puslapiavima, kaip tu nori.

vilkis

Re: Products modulis

Posted: Sun Feb 05, 2012 1:22 pm
by McF
ūūūū... kaip sudėtingai...

įdomu, ar man pavyktų toks dirty sprendimas.
kadangi žinau puslapiavimo url, tai aš pats keičiu cntnt01page kintamojo reikšmę...

Code: Select all

http://psl.lt/index.php?mact=Products,cntnt01,default,0&cntnt01category=Produktai&cntnt01pagelimit=12&cntnt01sortby=created&cntnt01page=3&cntnt01returnid=60&cntnt01returnid=60
pavyks?

Re: Products modulis

Posted: Sun Feb 05, 2012 2:42 pm
by vilkis
Radau, kaip buvau padares naujienose. Manau galima pritaikyti ir Products sablonui:

Code: Select all

{*PUSLAPIAVIMAS*}
{if $pagenumber < $pagecount}
{capture assign=pageurl} 
{$nextpage|regex_replace:'/href=\"(.*)\"/':'$1'|replace:'<a ':''|replace:'>></a>':''}
{/capture}
{else}
{capture assign=pageurl} 
{$prevpage|regex_replace:'/href=\"(.*)\"/':'$1'|replace:'<a ':''|replace:'><</a>':''}
{/capture}
{/if}



{if $pagenumber eq 1}
{capture assign=prevpagestr}
pagenumber=1
{/capture}
{else}
{capture assign=prevpagestr}
pagenumber={$pagenumber-1}
{/capture}
{/if}
{if $pagenumber eq $pagecount}
{capture assign=nextpagestr}
pagenumber={$pagecount}
{/capture}
{else}
{capture assign=nextpagestr}
pagenumber={$pagenumber+1}
{/capture}
{/if}
<a class="aimg" href="{$pageurl|regex_replace:'/pagenumber=(\d)/':$prevpagestr}"><img alt="" src="img/arrow-left.gif"></a>

{if $pagecount < 6}
{section name=foo start=0 loop=$pagecount step=1}
{capture assign=pagestr}
pagenumber={$smarty.section.foo.iteration}
{/capture}
  <a {if  $smarty.section.foo.iteration eq $pagenumber}
class="selected" 

{/if} href="{$pageurl|regex_replace:'/pagenumber=(\d)/':$pagestr}">{$smarty.section.foo.iteration}</a>
{/section}
{else}
{if $pagenumber < 3}
{capture assign=startpage}1{/capture}
{elseif ($pagecount-$pagenumber) < 2}
{capture assign=startpage}{$pagecount-4}{/capture}
{else}
{capture assign=startpage}{$pagenumber-2}{/capture}
{/if}
{$pagecount}
{section name=foo start=$startpage loop=20 max=5}
{$smarty.section.foo.index}
{capture assign=pagestr}
pagenumber={$smarty.section.foo.index}
{/capture}
  <a {if  $smarty.section.foo.index eq $pagenumber}
class="selected" 

{/if} href="{$pageurl|regex_replace:'/pagenumber=(\d)/':$pagestr}">{$smarty.section.foo.index}</a>
{/section}
{/if}
<a class="aimg" href="{$pageurl|regex_replace:'/pagenumber=(\d)/':$nextpagestr}"><img alt="" src="img/arrow-right.gif"></a>
<div class="clear"></div>
  </div>
{/if}
vilkis

Re: Products modulis

Posted: Tue Feb 07, 2012 6:53 pm
by McF
kaip tik ko reikėjo... vilkis - didelis ačiū...

iki galo neįsigilinau į tavo kodą - gilinausi tiek kiek reikėjo.
bet jaučiu nesi ištestavęs su daugiau nei 9 puslapių kiekiu.
nes kai prasideda dviženkliai skaičiai, tai RegExp'as /pagenumber=(\d)/ ima tik vieną skaitmenį, todėl (jeigu paspaudžiamas pvz 12 puslapis) sugeneruojami triženkliai puslapių numeriai (12, 22, 32, ... 102, 112), kitu paspaudimu jau keturženkliai.
Reikia pakeisti į /pagenumber=(\d*)/ ir viskas susitvarko.

Dar vienas bajeris: su {capture} atsargiai, jeigu naujoje eilutėje, tai susigeneruoja nauja eilutė, todėl HTMLas jau nebesivaliduoja, nes linkas per kelias eilutes gaunasi - čia irgi teko pavargti, kol klaidas išgaudžiau...

Štai Products puslapiavimo kodas:

Code: Select all

{* PUSLAPIAVIMAS *}
{if isset($pagecount) && $pagecount gt 1}

{if $curpage < $pagecount}
{capture assign=pageurl}{$nextlink|regex_replace:'/href=\"(.*)\"/':'$1'|replace:'<a ':''|replace:'>></a>':''}{/capture}
{else}
{capture assign=pageurl}{$prevlink|regex_replace:'/href=\"(.*)\"/':'$1'|replace:'<a ':''|replace:'><</a>':''}{/capture}
{/if}

{assign var=pagecount1 value=$pagecount+1}
{section name=foo start=1 loop=$pagecount1 step=1}
{capture assign=pagestr}cntnt01page={$smarty.section.foo.index}{/capture}
{capture assign=pageurl1}{$pageurl|regex_replace:'/cntnt01page=(\d*)/':$pagestr}{/capture}
{if  $smarty.section.foo.index eq $curpage}
<a class="selected" href="{$pageurl1}">{$smarty.section.foo.index}</a>
{else}
<a href="{$pageurl1}">{$smarty.section.foo.index}</a>
{/if}
{/section}

{/if}

Re: [IŠSPRĘSTA] Products modulis

Posted: Wed Feb 08, 2012 6:16 am
by vilkis
Šaunu. Geri tavo pataisymai. Tikrai netestavau savo kodo su dviženkliais skaičiais. Aš tai naudočiau

Code: Select all

/pagenumber=(\d+)/ 
, bet jei gerai veikia

Code: Select all

/pagenumber=(\d*)/
tai tik rodo, kad man dar reikia pasimokyti regular expressions.

Tiesa, mano kodas buvo, kad rodytų linkus į pirmą, paskutinį ir keturis artimiausius esamam puslapiui puslapius. Tu padarei, kad rodytų į visus - žiūrėk, kad nebūtų dizaino problemų, jei puslapių bus labai daug ;)

Puiku, kad pasidalinai savo kodu.

vilkis

Re: [IŠSPRĘSTA] Products modulis

Posted: Wed Feb 08, 2012 11:43 am
by McF
vilkis wrote:Aš tai naudočiau

Code: Select all

/pagenumber=(\d+)/ 
Taip būtų teisingiau, nors realiai nebūna, kad linkas būtų be skaičių.
vilkis wrote: Tiesa, mano kodas buvo, kad rodytų linkus į pirmą, paskutinį ir keturis artimiausius esamam puslapiui puslapius.
Aš mačiau, kad kodo daugiau nei man reikėtų, todėl į jį visą ir nesigilinau, dabar aišku ką jis daro.
vilkis wrote:Tu padarei, kad rodytų į visus - žiūrėk, kad nebūtų dizaino problemų, jei puslapių bus labai daug
Dabar eilė užima 2/3 pločio... kol kas yra kur plėstis, nors realiai reiktų pakalbėti su užsakovu ar yra logikos tiek puslapių, gal juos geriau padalinti...
vilkis wrote:Puiku, kad pasidalinai savo kodu.
Kai kada pagalvoji, kad forumuose tik klausinėji ir nieko pats kitiems į jų klausimus neatrašinėji, tai nutariau nors kiek pataisyti situaciją, be to gali būti, kad ir mano kodas kažkur klaidingas, tai forumo dalyviai gali padėti rasti tas klaidas.