Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Module News: régler le pagelimit dans le gabarit
#1

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.9.4.2
#~ Url du site : http://www.lesbuisses.com/html
#~ Hébergeur / Soft : one.com
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.9.4.2
#~ Installed Modules:
#~ CMSMailer: 2.0.1
#~ FileManager: 1.1.0
#~ MenuManager: 1.7.6
#~ ModuleManager: 1.4.2
#~ News: 2.11.3
#~ nuSOAP: 1.0.2
#~ Printing: 1.1.2
#~ Search: 1.6.10
#~ ThemeManager: 1.1.4
#~ TinyMCE: 2.8.4
#~ GoogleMaps: 0.1.8
#~ CGExtensions: 1.26.4
#~ JQueryTools: 1.0.10
#~ FormBuilder: 0.7
#~ CGSimpleSmarty: 1.4.8
#~ CGGoogleMaps: 2.1.4
#~ Statistics: 1.1.3
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template: false
#~ output_compression: false
#~ max_upload_size: 12000000
#~ default_upload_permission: 664
#~ url_rewriting: mod_rewrite
#~ page_extension: .html
#~ 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.6
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ memory_limit: 64M
#~ max_execution_time: 50
#~ output_buffering: On
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 12M
#~ upload_max_filesize: 12M
#~ session_save_path: Aucune vérification à cause de la restriction spécifiée par PHP open_basedir
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ Server Information:
#~ Server Api: cgi-fcgi
#~ Server Db Type: MySQL (mysql)
#~ Server Db Version: 5.0.51a
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour à tous,


Pour afficher les recettes du mois pour un restaurateur, j'utilise le module news avec une architecture à 2 niveaux:

- Catégorie principale: "Recettes"

- Sous-catégories: "Recettes de 2011", "Recettes de 2010" ....

Je souhaite lorsque que l'on est dans le sommaire des news, afficher un nombre de news différents suivant si on est dans la catégorie principale ou dans une des sous-catégories.
Ca devrait donner un truc du style:

Code :
{if $node.count == 0}

   {foreach from=$items item=entry pagelimit="3"}
      <div class="NewsSummary">

         {if $entry->summary}
        <div class="NewsSummarySummary">
        {eval var=$entry->summary}
        </div>

        <div class="NewsSummaryMorelink">
        [{$entry->morelink}]
        </div>

         {/if}

      </div>
   {/foreach}

{else}

   {foreach from=$items item=entry pagelimit="12"}
      <div class="NewsSummary">

         {if $entry->summary}
        <div class="NewsSummarySummary">
        {eval var=$entry->summary}
        </div>

        <div class="NewsSummaryMorelink">
        [{$entry->morelink}]
        </div>

         {/if}

      </div>
   {/foreach}

{/if}

Le problème est que le pagelimit n'existe pas de cette manière là donc, y'a-t-il une alternative pour réussir à faire ce que je souhaite?

Merci beaucoup




En passant 3 petites questions sur ce même module de news:

- Est-il possible de remplacer le "{$entry->morelink}" en rendant une partie du summary cliquable et en lui affectant l'adresse de la news?

- En choisissant la page de détail dans les options, le lien de retour "{$return_url}" présent dans le gabarit page de détail, ne ramène plus sur le sommaire mais recharche la page de détail vierge... pourquoi?

- Lors de la navigation dans le sommaire on perd le "pretty url" pour se retrouver avec des urls à rallonge... est-ce modifiable afin d'avoir des urls correspondants au titres des catégories?

Merci encore
Répondre
#2

Salut,

Un code de ce type là devrais pouvoir faire l'affaire (sachant que les boucles while, do while, ne fonctionne pas sous CMSMS avec Smarty) :

Code :
{if $ma_condition == true}
{assign var="nbr_loop" value="3"} // Correspond au nombre de page voulue à l'affichage
{else}
{assign var="nbr_loop" value="10"}
{/if}

{assign var="compteur_loop" value="0"} // Initialisation d'un compteur de boucles
{foreach from=$array item="item"}

{if $nbr_loop < $compteur_loop}

// Je fais mon action ici

{assign var="compteur_loop" value=$compteur_loop+1} // J'incrémente ma valeur
{/if}

{/foreach}

Dans notre cas de figure, si ma condition est validée alors il fera trois boucles, au delà le "if" à l'intérieur du "foreach" n'est plus valide et rien ne se passe (la boucle tourne sans rien faire).
Répondre
#3

Salut kraygoon,

J'ai essayé de mettre en place ta solution dans mon gabarit, ce qui donne:

Code :
{if $node.count == 0}
{assign var="nbr_loop" value="4"}
{else}
{assign var="nbr_loop" value="13"}
{/if}

{assign var="compteur_loop" value="0"}
{foreach from=$items item=entry}

{if $nbr_loop < $compteur_loop}

<div class="NewsSummary">

{if $entry->summary}
    <div class="NewsSummarySummary">
        {eval var=$entry->summary}
    </div>

    <div class="NewsSummaryMorelink">
        [{$entry->morelink}]
    </div>

{/if}

</div>

{assign var="compteur_loop" value=$compteur_loop+1}
{/if}
{/foreach}

ca ne fonctionne pas, aucune news ne s'affiche !

J'ai augmenté de 1 le "nbr_loop" puisque dans la condition le "compteur_loop" doit être inférieur au "nbre_loop"
J'ai mis le code d'origine pour le foreach d'affichage des news avec la condition d'affichage en fonction du compteur mais ça ne m'affiche rien.

pt'être ai-je fait une erreur quelquepart...

J'ai essayé avec ton code litéral en mettant le code suivant à l'emplacement de l'action

Code :
{if $nbr_loop < $compteur_loop}

<div class="NewsSummary">
{if $entry->summary}
    <div class="NewsSummarySummary">
        {eval var=$entry->summary}
    </div>

    <div class="NewsSummaryMorelink">
        [{$entry->morelink}]
    </div>

{/if}

</div>

{assign var="compteur_loop" value=$compteur_loop+1}
{/if}

ça marche pas non plus...
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)