Forum CMS Made Simple FR
[résolu] onglets de sous-navigation = pages - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Général (https://forum.cmsmadesimple.fr/forum-10.html)
+--- Sujet : [résolu] onglets de sous-navigation = pages (/thread-993.html)



[résolu] onglets de sous-navigation = pages - Ouik - 17/02/2011

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.9.3
#~ Nom de l'hébergeur : phpnet / local
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
Bonjour/soir,

Je tourne le problème depuis plusieurs heures, j'ai essayé différentes choses qui ne me conviennent qu'à moitié, donc je demande un peu d'aide, une piste.

Le souci : j'ai fait 2 pages avec du contenu dans différentes div par page, ces div étant accessibles via un sous-menu (en html dans le contenu de la page) avec jquery > http://www.restaurantlegourmand.fr/fr/les-menus et http://www.restaurantlegourmand.fr/fr/la-carte
Ça fonctionne impeccable. Sauf qu'il faut que le client puisse intervenir sur le contenu (éditer le texte, ajouter/supprimer un élément) sans tout foutre en l'air.

Donc l'idée serait de séparer le contenu de chaque div en pages différentes afin qu'il puisse éditer, ajouter, supprimer chaque élément sans problème. Je voudrais donc garder le système de sous-menu avec un menu généré par menu manager cette fois, utilisant toujours jquery pour afficher le contenu de chaque page au clic.

Et là, j'ai donc essayé avec CGSimpleSmarty et le tip indiqué ici http://forum.cmsmadesimple.org/viewtopic.php?t=22988&topic=22988.0 et je bloque principalement sur comment je peux faire pour que les différentes entrées du menu soient bien reliées au différentes pages insérées.

Des idées ? Une autre manière de faire peut-être ? Merci d'avance.

En fait l'idéal serait de pouvoir insérer des blocs (comme certains cms le font) de manière autonome sur une page, et qu'on puisse associer des id pour chaque bloc afin d'y mettre des liens sous forme d'ancres.


[résolu] onglets de sous-navigation = pages - bess - 17/02/2011

et le multicontent ?

pleins de blocs dans ton gabarit

{content name='Tpremier' label='titre premier bloc' inline=true}
{content name='premier' label='premier bloc'}
{content name='Tsecond label='titre second bloc' inline=true}
{content name='second' label='second bloc'}

je n'ai pas les bonnes propriétés en tête mais regarde l'aide de la balise content dans ton installation,c'est très bien foutu, ca permet au client d'avoir dans l'édition de sa page plein de petit bloc qu'il renseignera ou pas.

Côté front-office tu affiche le contenu des blocs de content s'ils ne sont pas vide (par exemple) avec des contrôle smarty et tu ajoutes par dessus toute la couche Jquery habituelle.


[résolu] onglets de sous-navigation = pages - Ouik - 17/02/2011

ok je vais regarder ça, j'ai vu un sujet récent sur l'affichage ou non d'un contenu dans une page selon qu'il soit rempli ou non, donc ça devrait le faire.

Merci, je donnerai des nouvelles dès que j'avance.


[résolu] onglets de sous-navigation = pages - square - 17/02/2011

bess a écrit :et le multicontent ?

pleins de blocs dans ton gabarit

+1 c'est exactement ce à quoi je pensais aussi


[résolu] onglets de sous-navigation = pages - guismo20 - 17/02/2011

+ 1 vue que visiblement tes menus sont spécifiques à chaque page, si ca n'avait pas été le cas tu aurais pu faire ca avec des blocs de "global content"

pour les contenus vide ou pas, tu fais mumuse avec la fonction {capture} de smarty

et si tu veux que ton client soit vraiment guidé avec une interface claire, tu utilises le module "advanced content" qui permet pas mal de choses Wink


[résolu] onglets de sous-navigation = pages - Ouik - 18/02/2011

merci pour les conseils. J'avais aussi essayé advanced content en croyant qu'il modifiait les possibilités d'affichage en frontend... mais en fait non. Du coup effectivement, je vais voir s'il peut servir pour rendre la chose le plus clair et simple possible pour le client rédacteur.

Pas encore eu le temps de finir la mise en place. Vous tiens au jus.


[résolu] onglets de sous-navigation = pages - Ouik - 21/02/2011

Bon alors j'ai enfin eu le temps d'avancer, c'est top, sauf pour un point : l'affichage du tabmenu selon que les champs soient remplis ou non. J'ai testé ce qui est indiqué là http://www.cmsmadesimple.fr/forum/viewtopic.php?id=3242 mais ça n'affiche rien, même si j'ai du contenu.

Une idée ?

voici mon code (j'ai testé uniquement sur la 1e entrée) :
Code :
{capture name=titlemenu1}{content block="titre-menu-1"}{/capture}
        {capture name=titlemenu2}{content block="titre-menu-2"}{/capture}
        {capture name=titlemenu3}{content block="titre-menu-3"}{/capture}
        {capture name=titlemenu4}{content block="titre-menu-4"}{/capture}
        <ul id="tabmenu">
            {if $titlemenu1.strlen() > 0}
            <li><a href="#menu1">{$titlemenu1}</a></li>
            {/if}
            <li><a href="#menu2">{$titlemenu2}</a></li>
            <li><a href="#menu3">{$titlemenu3}</a></li>
            <li><a href="#menu4">{$titlemenu4}</a></li>
        </ul>
        <div id="menu1"class="tabContent">
        <h3>{content block='titre-menu-1' label='Titre menu 1' oneline='true'}<br />
        {content block='prix-menu-1' label='Prix menu 1' oneline='true'}</h3>
        {content block='menu-1' label='menu 1'}
        </div>
        <div id="menu2"class="tabContent">
        <h3>{content block='titre-menu-2' label='Titre menu 2' oneline='true'}<br />
        {content block='prix-menu-2' label='Prix menu 2' oneline='true'}</h3>
        {content block='menu-2' label='menu 2'}
        </div>
        <div id="menu3"class="tabContent">
        <h3>{content block='titre-menu-3' label='Titre menu 3' oneline='true'}<br />
        {content block='prix-menu-3' label='Prix menu 3' oneline='true'}</h3>
        {content block='menu-3' label='menu 3'}
        </div>
        <div id="menu4"class="tabContent">
        <h3>{content block='titre-menu-4' label='Titre menu 4' oneline='true'}<br />
        {content block='prix-menu-4' label='Prix menu 4' oneline='true'}</h3>
        {content block='menu-4' label='menu 4'}
        </div>



[résolu] onglets de sous-navigation = pages - guismo20 - 21/02/2011

salut, essais de remplacer if $titlemenu1.strlen par if $smarty.capture.titlemenu1.strlen pour voir, si ca ne marche pas, je te donne ma manière de faire qui ne doit pas être la meilleure mais qui marche Smile


[résolu] onglets de sous-navigation = pages - Ouik - 21/02/2011

non, en fait pas mieux. tu me confirmes que ce que j'ai tenté est ok pour ce que je veux faire ?


[résolu] onglets de sous-navigation = pages - guismo20 - 21/02/2011

je te confirme surtout que je suis un débutant en cmsms, en smarty, en ... Smile

voilà ce que je fais, et ca marche, testes comme ca et dis moi si ca marche Smile :
Code :
{capture name=contributeurautresanimaux}{content block="contribautresanimaux" label="Vos autres oiseaux et animaux" oneline="true"}{/capture}
{if $smarty.capture.contributeurautresanimaux ne ""}
<b>Mes autres animaux :</b> {$smarty.capture.contributeurautresanimaux}<br />
{else}
{/if}

si le contenu n'est pas vide ca sinon ...


[résolu] onglets de sous-navigation = pages - guismo20 - 21/02/2011

en clair avec toi ca donne quelque chose comme ca :
Code :
{capture name=titlemenu1}{content block="titre-menu-1"}{/capture}
{if $smarty.capture.titlemenu1 ne ""}
<li><a href="#menu1">{$smarty.capture.titlemenu1}</a></li>
{else}
<!-- rien -->
{/if}



[résolu] onglets de sous-navigation = pages - Ouik - 21/02/2011

yep, ça marche. Un grand merci à tous !

PS : une idée pourquoi le code 1er ne fonctionne pas ?


[résolu] onglets de sous-navigation = pages - Ouik - 21/02/2011

bon en fait ça fonctionne sauf que comme j'ai plusieurs content blocks avec le même nom (dans le tabmenu et dans le champ + bas), je me tape une erreur dans l'admin et n'ai plus aucun accès aux champs. grompf.


[résolu] onglets de sous-navigation = pages - Ouik - 21/02/2011

ok, je crois que tout va rentrer dans l'ordre, à force de chercher, on trouve. Rolleyes


[résolu] onglets de sous-navigation = pages - Ouik - 21/02/2011

voici donc le code de la solution, si ça peut servir :
Code :
{capture name=titlemenu1}{content block='titre-menu-1' label='Titre menu 1' oneline='true'}{/capture}
{capture name=prixmenu1}{content block='prix-menu-1' label='Prix menu 1' oneline='true'}{/capture}
{capture name=menu1}{content block='menu-1' label='menu 1'}{/capture}
{capture name=titlemenu2}{content block='titre-menu-2' label='Titre menu 2' oneline='true'}{/capture}
{capture name=prixmenu2}{content block='prix-menu-2' label='Prix menu 2' oneline='true'}{/capture}
{capture name=menu2}{content block='menu-2' label='menu 2'}{/capture}
{capture name=titlemenu3}{content block='titre-menu-3' label='Titre menu 3' oneline='true'}{/capture}
{capture name=prixmenu3}{content block='prix-menu-3' label='Prix menu 3' oneline='true'}{/capture}
{capture name=menu3}{content block='menu-3' label='menu 3'}{/capture}
{capture name=titlemenu4}{content block='titre-menu-4' label='Titre menu 4' oneline='true'}{/capture}
{capture name=prixmenu4}{content block='prix-menu-4' label='Prix menu 4' oneline='true'}{/capture}
{capture name=menu4}{content block='menu-4' label='menu 4'}{/capture}
        <ul id="tabmenu">
            {if $smarty.capture.titlemenu1 ne ""}
            <li><a href="#menu1">{$smarty.capture.titlemenu1}</a></li>
            {else}
            {/if}
            {if $smarty.capture.titlemenu2 ne ""}
            <li><a href="#menu2">{$smarty.capture.titlemenu2}</a></li>
            {else}
            {/if}
            {if $smarty.capture.titlemenu3 ne ""}
            <li><a href="#menu3">{$smarty.capture.titlemenu3}</a></li>
            {else}
            {/if}
            {if $smarty.capture.titlemenu4 ne ""}
            <li><a href="#menu4">{$smarty.capture.titlemenu4}</a></li>
            {else}
            {/if}
        </ul>
        {if $smarty.capture.menu1 ne ""}
        <div id="menu1" class="tabContent">
        <h3 class="carte-title">{$smarty.capture.titlemenu1}<br />
        {$smarty.capture.prixmenu1}</h3>
        {$smarty.capture.menu1}
        </div>
        {else}
        {/if}
        {if $smarty.capture.menu2 ne ""}    
        <div id="menu2" class="tabContent">
        <h3 class="carte-title">{$smarty.capture.titlemenu2}<br />
        {$smarty.capture.prixmenu2}</h3>
        {$smarty.capture.menu2}
        </div>
        {else}
        {/if}        
        {if $smarty.capture.menu3 ne ""}
        <div id="menu3" class="tabContent">
        <h3 class="carte-title">{$smarty.capture.titlemenu3}<br />
        {$smarty.capture.prixmenu3}</h3>
        {$smarty.capture.menu3}
        </div>
        {else}
        {/if}
        {if $smarty.capture.menu4 ne ""}
        <div id="menu4" class="tabContent">
        <h3 class="carte-title">{$smarty.capture.titlemenu4}<br />
        {$smarty.capture.prixmenu4}</h3>
        {$smarty.capture.menu4}
        </div>
        {else}
        {/if}



[résolu] onglets de sous-navigation = pages - guismo20 - 21/02/2011

tomek a écrit :bon en fait ça fonctionne sauf que comme j'ai plusieurs content blocks avec le même nom (dans le tabmenu et dans le champ + bas), je me tape une erreur dans l'admin et n'ai plus aucun accès aux champs. grompf.

logique Wink si tu donnes le même nom à tous tes blocks, cmsms ne sait pas quel contenu choisir pour l'affichage du block Smile


[résolu] onglets de sous-navigation = pages - guismo20 - 21/02/2011

je me relie, juste si tes blocks qui ont le même nom à la base ont le même contenu, au lieu de les faire à chaque fois par deux, tu utilise "assign" dans dans ta balise et tu appelles ton "assign" après où tu veux dans la page, une ou quinze fois Wink


[résolu] onglets de sous-navigation = pages - Ouik - 21/02/2011

regarde le code que j'ai mis, c'est ce que j'ai fait sans "assign", juste avec le code que tu avais donné.


[résolu] onglets de sous-navigation = pages - Jean le Chauve - 21/02/2011

Un petit counter et un foreach réduirait pas mal le code Wink voir la doc smarty Big Grin


[résolu] onglets de sous-navigation = pages - Ouik - 22/02/2011

Cher Jean, je ne doute pas qu'il y ait une solution plus light, j'avoue avoir essayé de me plonger dans la doc smarty mais j'ai eu du mal... Rolleyes

Si tu as une idée à me soumettre n'hésites pas Wink