Forum CMS Made Simple FR

Version complète : Problème pagination module News
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.2.1
#~ Url du site :
#~ Hébergeur / Soft : wampserver
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.11.2.1
#~ Installed Modules:
#~ CMSMailer: 5.2.1
#~ CMSPrinting: 1.0.3
#~ FileManager: 1.4.1
#~ MenuManager: 1.8.4
#~ FrontEndUsers: 1.20
#~ ModuleManager: 1.5.5
#~ News: 2.12.9
#~ Search: 1.7.7
#~ ThemeManager: 1.1.7
#~ TinyMCE: 2.9.11
#~ Showtime: 3.2
#~ CGJobMgr: 1.2.10
#~ CGExtensions: 1.31.1
#~ NMS: 2.6.2
#~ CustomContent: 1.8.3
#~ NMSTrack: 1.0
#~ TemplateExternalizer: 2.0.8
#~ Gallery: 1.6
#~ JQueryFU: 1.0.3
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template:
#~ output_compression:
#~ max_upload_size: 10000000
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.3.5
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ memory_limit: 128M
#~ max_execution_time: 60
#~ output_buffering: 1
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 10M
#~ upload_max_filesize: 10M
#~ session_save_path: c:/wamp/tmp (0777)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Server Information:
#~ Server Api: apache2handler
#~ Server Db Type: MySQL (mysqli)
#~ Server Db Version: 5.5.8
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

J'ai un petit soucis avec la pagination du module news.

Graphiquement ma pagination ressemble à ceci lorsque l'on est sur la page 1 : 1 2 >>

l'URL de la page suivante autrement dit "2" n'est pas correctement prise en compte au lieu de m'afficher l’URL cela m'affiche : <em>suivante</em>

Voici mon code
Code :
[== PHP ==]
{if $pagecount>1}
{if $pagenumber < $pagecount}
{capture assign=pageurl}
{$nextpage|regex_replace:'/href=\"(.*)\"/':'$1'|replace:'<a ':''|replace:'>&rarr;</a>':''}
{/capture}
{else}
{capture assign=pageurl}
{$prevpage|regex_replace:'/href=\"(.*)\"/':'$1'|replace:'<a ':''|replace:'>&larr;</a>':''}
{/capture}
{/if}
{capture assign=from_start_to_num}
{$pagenumber-2}
{/capture}
{capture assign=from_num_to_end}
{$pagenumber+2}
{/capture}
<ul style="clear:both;" id="pagenav">
{if $pagenumber > 1}
<li><a href="{$prevurl}">&laquo;</a></li>
{/if}
{if $from_start_to_num>1}
{if $pagenumber eq 1}
<li><span class="selected">1</span></li>
{else}
{capture assign=pagestr}
pagenumber=1
{/capture}
<li><a href="{$pageurl|regex_replace:'/pagenumber=(\d+)/':$pagestr}">1</a></li>
{/if}
{if $pagenumber eq 2}
<li><span class="selected">2</span></li>
{else}
{capture assign=pagestr}
pagenumber=2
{/capture}
<li><a href="{$pageurl|regex_replace:'/pagenumber=(\d+)/':$pagestr}">2</a></li>
{/if}
<li class="continue">...</li>
{capture assign=pagestr}
pagenumber={$pagenumber-1}
{/capture}
<li><a href="{$pageurl|regex_replace:'/pagenumber=(\d+)/':$pagestr}">{$pagenumber-1}</a></li>
<li><span class="selected">{$pagenumber}</span></li>
{else}
{section name=foo start=1 loop=$pagenumber+1 step=1}
{capture assign=pagestr}pagenumber={$smarty.section.foo.index}{/capture}
{capture assign=pageurl1}{$pageurl|regex_replace:'/pagenumber=(\d+)/':$pagestr}{/capture}
{if  $smarty.section.foo.index eq $pagenumber}
<li><span class="selected">{$smarty.section.foo.index}</span></li>
{else}
<li><a class="selected" href="{$pageurl1}">{$smarty.section.foo.index}</a></li>
{/if}
{/section}
{/if}
{if $from_num_to_end<$pagecount}
{capture assign=pagestr}
pagenumber={$pagenumber+1}
{/capture}
<li><a href="{$pageurl|regex_replace:'/pagenumber=(\d+)/':$pagestr}">{$pagenumber+1}</a></li>
<li class="continue">...</li>
{capture assign=pagestr}
pagenumber={$pagecount-1}
{/capture}
<li><a href="{$pageurl|regex_replace:'/pagenumber=(\d+)/':$pagestr}">{$pagecount-1}</a></li>
{capture assign=pagestr}
pagenumber={$pagecount}
{/capture}
<li><a href="{$pageurl|regex_replace:'/pagenumber=(\d+)/':$pagestr}">{$pagecount}</a></li>
{else}
{section name=foo start=$pagenumber+1 loop=$pagecount+1 step=1}
{capture assign=pagestr}pagenumber={$smarty.section.foo.index}{/capture}
{capture assign=pageurl1}{$pageurl|regex_replace:'/pagenumber=(\d+)/':$pagestr}{/capture}
{if  $smarty.section.foo.index eq $pagenumber}
<li><span class="selected">{$smarty.section.foo.index}</span></li>
{else}
<li><a class="selected" href="{$pageurl1}">{$smarty.section.foo.index}</a></li>
{/if}
{/section}
{/if}
{if $pagenumber < $pagecount}
<li><a href="{$nexturl}">&raquo;</a></li>
{/if}
</ul>
{/if}


Je pense que c'est cette ligne qui pose soucis :
Code :
<li><a class="selected" href="{$pageurl1}">{$smarty.section.foo.index}</a></li>


Mais après de multiple recherche et remue-méninge, je ne comprends pas pourquoi cela pose problème.

S'il y a une bonne âme pour m'aider, je suis preneur ! Big Grin
Est-tu sur que c'est bien cette ligne qui est affichée ? Tu peux par exemple ajouter une classe CSS afin de t'en assurer. Si c'est bien cette ligne qui est utilisée, essaie de mettre une autre url à la place de $pageurl1, $nexturl par exemple (je vois que cette variable existe). Et regarde ce que ca donne.
heriquet a écrit :Est-tu sur que c'est bien cette ligne qui est affichée ? Tu peux par exemple ajouter une classe CSS afin de t'en assurer. Si c'est bien cette ligne qui est utilisée, essaie de mettre une autre url à la place de $pageurl1, $nexturl par exemple (je vois que cette variable existe). Et regarde ce que ca donne.


Merci car il y a du mieux !

Mais lorsque que j'ai par exemple 3 pages ou plus et que je suis sur la première et que je souhaite aller directement à la 3 en cliquant sur le chiffre, il m'envoie à la page 2 et vis versa quand je suis sur la page 3 et que je veux revenir sur la 1, il me fait obligatoirement aller à la page 2.

Le soucis est donc qu'il ne prend pas en compte le nombre de page pour pouvoir passer de la page 1 à 3 ou l'inverse.
Je suppose que tu as pris le code ici : http://forum.cmsmadesimple.org/viewtopic...32#p287232
Pourquoi ne pas discuter de ce problème sur le .org et, une fois résolu, faire un petit tuto ici ?
Jean le Chauve a écrit :Je suppose que tu as pris le code ici : http://forum.cmsmadesimple.org/viewtopic...32#p287232
Pourquoi ne pas discuter de ce problème sur le .org et, une fois résolu, faire un petit tuto ici ?


Oui tout à fait, j'aimerai pouvoir en discuter sur le .org

Malheureusement mon anglais n'est pas terrible. Je pense que j'aurai du mal à me faire comprendre correctement.
Je pense également qu'il ne faut pas que ce soit un supplice pour les personnes qui répondent de comprendre ce que j'ai voulu dire.

Pour le tuto pas de soucis, je travail de plus en plus avec CMSMS alors je risque de demander des conseils dans l'avenir. Cela serait un peu ma contribution pour la communauté. Big Grin

Je suis également en cours de traduction de certains modules, je ferai également part des fichiers lang quand il seront prêt.
Excellente idée de bosser avec CMSMS :-). Je fais ca du matin au soir :-).

Faut pas te tracasser pour ton anglais... si vraiment personne ne comprend, tout ce que tu risques c'est de ne pas avoir de réponse. Donc pourquoi ne pas essayer ?
Je ne peux pas accéder au forum .org.

Même en recréant un compte. Quelqu'un d'autre à le même soucis ?
zero soucis pour moi
OK, c'est bon , je viens de réussir à me connecter.

j'ai posté ma demande comme convenu donc je vous ferai pas de l'avancement et je ferai également un p'tit tuto pour que ce soit plus simple pour chacun à mettre en place au lieu de devoir parcourir les pages de ce post de savoir comment le mettre en place et le personnaliser
Ben, malheureusement je n'ai pas eu une grande réponse sur le forum .org

La personne qui à mis en place ce bout de code ma juste proposé un lien pour montrer que cela fonctionne chez elle !

carasmo a écrit :I honestly can't follow what you're trying to accomplish. Here is an example of how the pagination posted here works:

http://dropsoul.com/test-summary.html

I can click on 2 when I'm not on 2
En tout cas, ton code me semble fort long et compliqué (et pas indenté) juste pour afficher la pagination des news. qu'est-ce-que tu cherches à faire de plus que ce qui est proposé dans le template de base ? parce que, l'exemple que tu présentes 1 2 >> me semble identique à celui du template Sommaire / Sample ??? Tu souhaites différencier la présentation du n° de page courante, c'est çà ?
Bonjour bonjour !

Mieux vaut tard que jamais : j'ai de quoi faire ça assez simplement à partir de la discussion du .org cité plus haut Smile
Je me suis bien emm...bété avec cette pagination dont je n'ai trouvé aucune trace de semblant de tuto... J’espère que ça pourra toujours servir.

Rapidement :
Comme je n'ai pas eu connaissance d'une variable magique $urlpagenumX on est obligé de se baser sur les liens tout faits comme $nexturl.
Si le nombre d'article déclenche l'apparition d'une seconde page (ou plus) je regarde si la page actuelle est la dernière ou non.
Si c'est la dernière je me base sur $prevurl ($nexturl n'existe pas) sinon sur $nexturl. Je met tout ca dans $pageurl.
Là je sors une belle div pour ma pagination, une jolie boucle for pour aller de la page 1 à la page $pagecount (comptée dynamiquement du coup) et pour chaque itération un petit lien ou je remplace le paramètre "pagenumber=x" de $pageurl par "pagenumber=i" où i est ma variable incrémentée par la boucle.
J'ai rajouté un petit test avec des > et < autour de la page en cours pour le test : je vous laisse le plaisir de faire un beau css Big Grin

voili voilou,
il doit etre largement optimisable comme code, mais ça marche !
Wink


Code :
[== Indéfini ==]
{if $pagecount > 1}
    {if $pagenumber == $pagecount}
        {$pageurl="$prevurl"}
    {else}
        {$pageurl="$nexturl"}
    {/if}
    <div class="pager">
    {for $numpage=1 to $pagecount}
        {$pagestr="pagenumber=$numpage"}
        <a href="{$pageurl|regex_replace:'/pagenumber=(\d+)/':$pagestr}">
        {if $numpage == $pagenumber}
            >{$numpage}<
        {else}
            {$numpage}
        {/if}
        </a>
    {/for}
    </div>
{/if}