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

[RESOLU] Module Gallery : compter le nombre d'item par <li>
#1

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.9.3
#~ Nom de l'hébergeur :
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.9.3
#~ Installed Modules:
#~ * CMSMailer: 2.0.1
#~ * FileManager: 1.1.0
#~ * MenuManager: 1.7.5
#~ * ModuleManager: 1.4
#~ * News: 2.11.1
#~ * nuSOAP: 1.0.2
#~ * Printing: 1.1.2
#~ * Search: 1.6.10
#~ * ThemeManager: 1.1.4
#~ * TinyMCE: 2.8.3
#~ * Gallery: 1.4.4
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * output_compression: false
#~ * max_upload_size: 64000000
#~ * default_upload_permission: 664
#~ * 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.2.9
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * E_STRICT: 0
#~ * memory_limit: 32M
#~ * max_execution_time: 60
#~ * output_buffering: On
#~ * safe_mode: Off (Faux)
#~ * file_uploads: On (Vrai)
#~ * post_max_size: 64M
#~ * upload_max_filesize: 64M
#~ * session_save_path: C:\xampp\tmp (0777)
#~ * session_use_cookies: On (Vrai)
#~ * xml_function: On (Vrai)
#~ Server Information:
#~ * Server Api: apache2handler
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.1.33
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~

Comment compter le nombre d'item et faire un foreach selon ce nombre.
Comment m'y prendre pour faire afficher 4 images par <li>, présentement j'ai qu'un seul <li> pour tous mes images. J'ai besoin des séparer par groupe de 4 si je veux que mes flèches de navigation fonctionne correctement.

Je vois dans les Variable Smarty Imagecount et Itemcount. Je ne sais pas trop comment m'y prendre.

Code :
{$imagecount} - affiche par exemple "6 images", selon la langue
{$itemcount} - nombre d'objets, incluant images et dossiers

Code de la galerie.
Code :
<ul>
<li>
{foreach from=$images item=image}
<!-- debut realisation -->
<div class="realisation">    
    {if $image->isdir}
        <a href="{$image->file}" title="{$image->titlename}"><img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$image->titlename}" />
        </a>
<h4>{$image->titlename}</h4>
    {else}
   <a class="group" href="{$image->file|escape:'url'|replace:'%2F':'/'}" title="{$image->titlename}" rel="gallery-{$galleryid}"><img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$image->titlename}" /></a>
    {/if}
    
</div>
<!-- fin realisation -->
{/foreach}
</li>
</ul>

Voici une capture d'écran du résultat voulu.

Merci.
#2

très facile :

Code :
<ul>
{foreach from=$images item=image}
<li>
<!-- debut realisation -->
<div class="realisation">    
    {if $image->isdir}
        <a href="{$image->file}" title="{$image->titlename}"><img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$image->titlename}" />
        </a>
<h4>{$image->titlename}</h4>
    {else}
   <a class="group" href="{$image->file|escape:'url'|replace:'%2F':'/'}" title="{$image->titlename}" rel="gallery-{$galleryid}"><img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$image->titlename}" /></a>
    {/if}
    
</div>
<!-- fin realisation -->
</li>
{/foreach}
</ul>

te permet déjà d'avoir 1 images par <li>. Te reste donc à conditionner l'affichage de <li> tous les 4 tours

http://www.smarty.net/docsv2/fr/language...oreach.tpl

Code :
{foreach from=$items item=i name=foo}
{if $smarty.foreach.foo.index % 4 == 0}
   <li>
{/if}

[....]

{/foreach}

le reste viendra tout seul je penses Smile
#3

Si j'ai bien compris ce code devrait fonctionner? Mais sans succès, j'ai même essayé de déplacé le {/if} avant la fermeture du {/foreach} mais sans succès.

Est-ce que je dois réutiliser ce code item=i ?

Code du gabarit.
Code :
<ul>
{foreach from=$items item=i name=foo}
{if $smarty.foreach.foo.index % 4 == 0}
<li>
{/if}

<div class="realisation">    
    {if $image->isdir}
        <a href="{$image->file}" title="{$image->titlename}"><img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$image->titlename}" />
        </a>
<h4>{$image->titlename}</h4>
    {else}
   <a class="group" href="{$image->file|escape:'url'|replace:'%2F':'/'}" title="{$image->titlename}" rel="gallery-{$galleryid}"><img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$image->titlename}" /></a>
    {/if}
    
</div>
</li>
{/foreach}
</ul>

Code source retourné.
Code :
<ul>
</ul>
#4

non mais non mais non quoi....

-_-'

je t'ai donné un exemple, lis le, comprend le, adapte le... t'as 2/3 changements à faire, je vais pas non plus TOUT faire à ta place hein... (ou alors si mais faut payer)
#5

Bess, j'ai beau lire et relire. Je crois que mes besoins ressemble à ce bout de code, mais je ne comprend pas trop {i.label}

J'ai visité lien qui que tu m'as fournis.
http://www.smarty.net/docsv2/fr/language...oreach.tpl

Code :
{* L'en-tête du block est affiché toutes les 5 lignes *}
<table>
{foreach from=$items key=myId item=i name=foo}
{if $smarty.foreach.foo.index % 5 == 0}
<tr><th>Title</th></tr>
{/if}
<tr><td>{$i.label}</td></tr>
{/foreach}
</table>

Un indice supplémentaire pourrait m'aider Bess :-)

En passant je ne suis pas programmeur.
#6

Citation :En passant je ne suis pas programmeur.

et je ne suis pas philanthrope au point de travailler gratuitement.

Si je te donne la solution telle quelle, tu vas me dire "haaa oui ca marche" mais t'auras rien compris et demain tu reviendras me poser une nouvelle question sur (peut être) un sujet identique ou très proche.

Tu es sur ce forum depuis un bout de temps, tu as 168 messages à ton actif, tous des appels au secours. Il y a un moment j'ai la sale impression de voler le travail d'un professionnel puisque tu fais ton site toi même (et c'est très très bien) mais tu as besoin constamment d'aide pour t'en sortir, tu ne paie personne et tu ne prends même pas le temps de te former pour -à ton tour- diffuser ta connaissance autour de toi, sur le forum, ou ailleurs et c'est peut être ce dernier point qui me gène vraiment d'ailleurs

Il y a un moment dans la vie de tous les jours quand tu demandes à ton pote garagiste de te filer un coup de main pour qu'il t'indique comment faire la vidange, comment changer une roue, comment changer les plaquettes, ... ton pote finira soit par te demander de le payer, soit il va te faire la gueule.

Ben là c'est pareil, on est bénévole, on est là pour aider, on est pas là pour vous former ni pour travailler à votre place.

Travailler je le fais de 9h à 19h tous les jours à 400 bornes de chez moi et je parles pas des heures sup. Seulement là je suis payés.


Donc : un minimum de respect pour ceux qui prennent le temps de t'aider depuis tous ces mois, prend toi une demi journée : regarde le code que je t'ai filé, regarde ton code d'origine, compare les, regarde ce qui a changé, fais des tests. Tu n'as rien à inventer, rien à créer, juste à tester 2/3 trucs différents ou simplement à regarder sur les documentations telles que je t'ai donné pour voir ce que "item=i" signifie vraiment et comment toi tu peux l'utiliser.
#7

Citation :j'ai la sale impression de voler le travail d'un professionnel puisque tu fais ton site toi même (et c'est très très bien)
Ce n'est pas pour son site (qui n'est pas sous cmsms) : Britanicus est une professionnelle qui se fait rétribuer pour des créations de sites sous cmsms en utilisant les compétences des bénévoles de ce forum.
#8

sur cette page : http://www.smarty.net/docs/en/language.f...oreach.tpl en cherchant à peine 5 minutes, j'ai trouvé ton bonheur, sachant que je suis une quille en smarty et cmsms (je débute) et que je ne suis pas pro ... J'ai juste cherché 5 minutes ...
#9

@bess Tu as raisons je ne participe pas aux réponses des autres et pose bcp de questions. Je vais continuer à me documenter pour résoudre mon problème. Je suis ici depuis 2008 au total j'ai environ 55 messages, qui ont surement pu aider d'autres personnes sur le forum mais puisque les sujets sont fermés, il y a personne qui peut venir écrire "ah merci cette discussion m'a aidé".

@bess Combien me chargerais-tu pour arriver à résoudre mon code?

Je suis prête à acheté du code fait sur mesure, sans problème ou bien un livre sur CMSMS.

@Jean le chauve c'est bien pour mon propre site cette fois-ci.

@guismo tant mieux pour toi si tu as vite compris la logique, moi je vais retourner lire pour essayer de comprendre.

Est-ce qu'il y a du mal à avoir choisi CMSMS pour mes clients. Cela fait que montrer mon intérêt pour ce produit. J'ai essayé Drupal, Joomla, WordPress et je suis restée avec CMSMS.

Merci.
#10

Citation :@iteration

iteration contains the current loop iteration and always starts at one, unlike index. It is incremented by one on each iteration.

Example 7.36. iteration example: is div by

The "is div by" operator can be used to detect a specific iteration. Here we bold-face the name every 4th iteration.

{foreach $myNames as $name}
{if $name@iteration is div by 4}
<b>{$name}</b>
{/if}
{$name}
{/foreach}



Example 7.37. iteration example: is even/odd by

The "is even by" and "is odd by" operators can be used to alternate something every so many iterations. Choosing between even or odd rotates which one starts. Here we switch the font color every 3rd iteration.


{foreach $myNames as $name}
{if $name@iteration is even by 3}
<span style="color: #000">{$name}</span>
{else}
<span style="color: #eee">{$name}</span>
{/if}
{/foreach}



This will output something similar to this:

<span style="color: #000">...</span>
<span style="color: #000">...</span>
<span style="color: #000">...</span>
<span style="color: #eee">...</span>
<span style="color: #eee">...</span>
<span style="color: #eee">...</span>
<span style="color: #000">...</span>
<span style="color: #000">...</span>
<span style="color: #000">...</span>
<span style="color: #eee">...</span>
<span style="color: #eee">...</span>
<span style="color: #eee">...</span>
...

je me trompe peu être (c'est possible comme je l'ai dis, je débute), mais visiblement dans cette explication tu as ce qu'il faut, l'iteration permet de grouper tes items par nombre (4) et de donner une directive à la suite du quatrième, te reste juste à trouver la bonne directive à donner suite à chaque groupe de 4 images

ps : en y regardant de + prés la solution de bess doit être plus propre et fonctionnelle Wink
ps 2 : peut être un début de solution ici aussi : http://www.lotsofcode.com/php/smarty-pagination.htm , mais je ne veux pas t'embrouiller, je me met à ta place et j'essaye de trouver une solution Wink
#11

Citation :mais puisque les sujets sont fermés, il y a personne qui peut venir écrire "ah merci cette discussion m'a aidé".

Le nombre de personne remerciant n'est pas pour moi un critère pour savoir si l'on aide ou pas la communauté. Moi je procède autrement

Le taux de participation d'une personne est simple à calculer. Par exemple toi tu as

* 172 messages à ton actif.
* 55 topics ouvert pour demander de l'aide
* 171 messages dans ces même topics

Il reste donc statistiquement 1 message qui ne concerne pas un appel au secours. merci aux requêtes sql

Code :
SELECT * FROM `posts` WHERE `poster` = 'britanicus' AND `topic_id` IN (
  SELECT id FROM `topics` WHERE `poster` LIKE 'britanicus')


Je n'ai même pas pu retrouver ce message car apparemment il a été effacé...

bref 100% des demandes au secours, 0% de rétribution envers la communauté. Voilà pour clôturer le point épineux et je ne reviendrais pas dessus.

Citation :@bess Combien me chargerais-tu pour arriver à résoudre mon code?

Je suis prête à acheté du code fait sur mesure, sans problème ou bien un livre sur CMSMS.

Je demande 75€ de l'heure indivisible pour du développement. Voilà pour info mes tarifs, mais quand je vois ce que tu as seulement besoin... personnellement j'opterais pour une auto-formation... enfin comme tu l'as justement dit, tu n'es pas programmeur autant que je ne suis pas designer, chacun son rôle là dessus je ne critique pas.

Il existe un bouquin pour CmsMadeSimple qui est écrit entièrement en anglais. Pas de traduction connue à ce jour

Encore une fois on ne remet pas en question ton grand intérêt pour CmsMadeSimple mais le fait que depuis tout ce temps il y a eu trop de demande et trop peu de retour de ta part, il est temps qu'à ton tour tu redonnes autour de toi, telle est la philosophie des communautés sur Internet.

http://www.cmsmadesimple.fr/communaute-c...icipez-cms

tu peux donner de l'argent à l'association si tu estimes que c'est ce que tu saurais faire de mieux pour nous aider, tu peux passer du temps pour nous aider à traduire, tu peux passer du temps sur le forum à guetter les appels aux secours très basique que nous avons régulièrement, tu peux rédiger des petits tuto qu'ils soient simpliste ou pas tant qu'une personne sur terre le trouve intéressant c'est que c'est un bon tuto, ... tu peux tout aussi intervenir à ton propre niveau sur des choses qui n'ont rien à voir avec le technique : pour preuve

C'est ce genre de petites choses qui font que n'importe qui peut aider la communauté à son propre niveau. Pas besoin de doctorat en astro-développement pour remercier ceux qui t'aident depuis des mois maintenant Wink
#12

Après 4 jours de de recherche voici le code. Peux-être que cela pourra servir à quelqu'un d'autre.

Code :
<!-- debut ensemble -->
<div id="ensemble">
<!-- debut slider -->
<div class="slider">
<ul>
    <li>
    {foreach from=$images item=image name=img}
            
    {if $smarty.foreach.img.index % 4 == 0}
        {if $smarty.foreach.img.index > 0}
    </li>
        <li>
        {/if}
    {/if}
            
<!-- debut realisation -->
<div class="realisation">    
{if $image->isdir}
<a href="{$image->file}" title="{$image->titlename}"><img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$image->titlename}" /></a>
<h4>{$image->titlename}</h4>
{else}
<a class="group" href="{$image->file|escape:'url'|replace:'%2F':'/'}" title="{$image->titlename}" rel="gallery-{$galleryid}"><img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" alt="{$image->titlename}" /></a>
{/if}    
</div>
<!-- fin realisation -->
                
    {/foreach}    
    </li>
</ul>
</div>
<!-- fin slider -->
</div>
<!-- fin ensemble -->
#13

merci britanicus d'avoir persévéré !

bon du coup je vais compléter ton message et en simplifier le contenu. par ce que a mon avis tu dois avoir une balise </li> de trop si jamais tu n'as aucun élément si {if $smarty.foreach.img.index > 0}

Code :
{foreach from=$images key=image item=i name=img }
{if $smarty.foreach.img.index % 4 == 0}
   <li>
{/if}

[ton code]

{if $smarty.foreach.img.index % 4 == 0}
   </li>
{/if}

{/foreach}


là c'est sécure Smile
Sujet fermé


Atteindre :


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