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

[résolu] onglets de sous-navigation = pages
#1

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...ic=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.

Ouik - communication . outils numériques . design graphique
#2

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.
#3

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.

Ouik - communication . outils numériques . design graphique
#4

bess a écrit :et le multicontent ?

pleins de blocs dans ton gabarit

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

+ 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
#6

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.

Ouik - communication . outils numériques . design graphique
#7

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>

Ouik - communication . outils numériques . design graphique
#8

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
#9

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

Ouik - communication . outils numériques . design graphique
#10

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 ...
#11

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}
#12

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

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

Ouik - communication . outils numériques . design graphique
#13

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.

Ouik - communication . outils numériques . design graphique
#14

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

Ouik - communication . outils numériques . design graphique
#15

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}

Ouik - communication . outils numériques . design graphique
#16

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
#17

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
#18

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

Ouik - communication . outils numériques . design graphique
#19

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

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

Ouik - communication . outils numériques . design graphique
Sujet fermé


Atteindre :


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