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

exclure un bloc de certaines pages
#1

Bonjour à tous,
Je découvre CMS Made Simple, et je suis assez bluffé par la souplesse du système.
Je bute sur un petit problème actuellement (parmi d'autres que je crois pouvoir résoudre tout seul) :
Je cherche (bêtement) à exclure un bloc de certaines pages.
J'imagine qu'il doit bien y avoir un moyen de faire ça.
J'aimerai éviter de créer deux gabarits (l'un "normal" et l'autre sans le bloc).

Est-ce que quelqu'un peut m'éclairer là dessus?
Impossible de trouver une piste dans la doc... (je trouve ça bizarre, j'imaginais que c'était quelque chose qui revenais souvent...)

Merci d'avance Smile

Manu.

(et j'espère avoir posté dans la bonne catégorie... toute mes excuses si ce n'est pas le cas)
Répondre
#2

Il faut une condition : j'affiche si... ou je n'affiche pas si...
Donc : {if $variable=="0"}{blocConditionnel}{/if}
Répondre
#3

Ah...
Je pensais à un truc plus simple (genre excludeprefix du menumanager).
Mais si ça n'existe pas, je vais voir de ce côté.

Merci beaucoup. Smile
Répondre
#4

Bonjour

Etrange, je n'arrive pas à faire fonctionner cette condition qui me permet :
- si l'image associée à la page est renseignée, on affiche une <div> avec cette image de fond
- sinon, on n'affiche rien
Code :
{if !empty($page_image)}
<div style="background: transparent url('uploads/images/{page_image}') right top no-repeat;" class="maClasse"></div>
{else}
<div class="rien">Rien...</div>
{/if}
Avec cet exemple, le bloc "maClasse" s'affiche toujours, soit avec la fameuse image de fond, soit vide, mais je voudrais qu'il ne s'affiche pas du tout dans ce 2eme cas...

Merci pour vos lumières Smile
Répondre
#5

Enlève les apostrophes : (uploads/images/{page_image})
Également, tu utilises 1 fois $page_image et la fois suivante sans le $.
Répondre
#6

Merci pour ton aide.
Concernant les apostrophes, j'ai essayé en les supprimant, ou en les remplaçant par des guillemets > même souci ; normal me direz-vous, c'est de la syntaxe css Smile
Concernant ta remarque, le test "if" génère une erreur sans le $ ; inversement j'ai bien ajouté le $ à la 2eme occurence de page_image ce qui donne :

Code :
{if !empty($page_image)}
<div style="background: transparent url(uploads/images/{$page_image}) right top no-repeat;" class="maClasse"></div>
{else}
<div class="rien">Rien...</div>
{/if}
Cependant "Rien" s'affiche toujours comme si mon article ne contenait pas d'image, le test doit-il être effectué autrement ou ma syntaxe est-elle bonne ?
Répondre
#7

Alors là, bizarre... la condition doit se faire avec le $
mais l'affichage de l'image, sans le $, sinon elle ne s'affiche pas (pas trouvée par le serveur, pas affichée dans le code...)

Le test doit donc donner ceci : si je trouve l'image associée à l'article, je l'affiche en fond de bloc, sinon je n'affiche rien (ni bloc ni image) :
Code :
{if !empty($page_image)}
<div style="background: transparent url('uploads/images/{page_image}') right top no-repeat;" class="maClasse"></div>
{else}
<div class="rien">Rien...</div>
{/if}
Je ne suis pas encore habitué à la syntaxe smarty

On en revient au début... :/
Répondre
#8

J'abandonne, ou plutôt je m'adapte : j'utilise un gabarit pour les pages avec image de fond, et un autre gabarit pour les pages "simples"

Pourquoi faire compliqué quand on peut faire simple
Répondre
#9

Tu utilises la balise utilisateur {page_image}. Cette dernière affiche le nom du fichier image uploadé dans les options de la page. Elle est équivalente à cette balise : {$content_obj->GetPropertyValue('image')} (ce sont deux manières différentes d'appeler le nom du fichier).
Logiquement, tu dois faire ceci : {if (!empty({page_image}))}
Mais, tu reçois alors une erreur, tu ne peux pas placer des accolades dans une accolade.
Alors, la bonne syntaxe est celle-ci :
Code :
{capture name='image'}{page_image}{/capture}
{if ($smarty.capture.image ne '')} //ne '' signifie non equal à '' (c'est une autre manière d'écrire !empty)
<div style="background: transparent url(uploads/images/{page_image}) right top no-repeat;" class="maClasse"></div>
{else}
<div class="rien">Rien...</div>
{/if}
Voir : http://www.smarty.net/manual/fr/language...on.capture
Répondre
#10

Par contre, ton idée de départ de placer en background une image qui n'apparait que dans une seule page n'est peut-être pas la plus efficace. Tu utiliseras background dans le cas où cette image est répétée dans plusieurs pages.
Donc, le mieux pour ton cas est celui-ci (enfin, je pense) :
Code :
{capture name='image'}{page_image}{/capture}
{if ($smarty.capture.image ne '')}
<img src="uploads/images/{page_image}" alt="{page_image}" class="taClasse" />
{/if}
Répondre
#11

Merci pour la doc, j'avais également testé le code trouvé sur cette page officielle :
http://www.smarty.net/manual/en/tips.php...r.handling

En fait ma démarche est de créer sur certaines pages, une div contenant une image de fond, différente selon l'article où on se trouve. Article 1 affiche l'image "main', article 3 affiche l'image "tête" et d'autres articles n'affichent rien. D'où l'intérêt d'utiliser page_image. Je ne connaissais pas capture mais vais tester cela lorsque je replongerai dans mon projet Smile
Répondre
#12

Je ne vois pas l'intérêt d'utiliser page_image.
Le module article te permet de spécifier une catégorie (ce qui semble être ton cas).
Tu peux assigner un gabarit spécifique pour chaque catégorie.
C'est donc dans ces gabarits que tu dois simplement ajouter une div (span) avec une classe du nom de la catégorie et qui aura une propriété background-image. Et non pas travailler dans le gabarit de page.
Répondre
#13

Je pense même qu'en utilisant un seul gabarit cela doit être possible ? On récupère la catégorie (identifiant unique ?) associée à l'article, puis on appelle une classe css nommée selon cette catégorie / cet identifiant ?

C'est ce que je tentais de faire au départ, mais je n'ai pas su utiliser la variable content_id ; d'où mon utilisation de page_image dans un style css associé à la div (ce qui ne sépare pas à 100% le style du contenu mais semblait une bonne solution)

Il faut se mettre à la place de la personne qui va ajouter des contenus au site sans être webmaster, page_image permet cette flexibilité.

PS : Aucun souci avec la fermeture de l'autre topic Smile
Répondre


Atteindre :


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