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

Afficher une div si la balise content est présente
#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
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * output_compression: false
#~ * max_upload_size: 2000000
#~ * 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
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~


Bonjour, j'ai vu qu'il etait possible d'avoir plusieurs balise "content" dans un gabarit, cependant est t'il possible d'afficher une div seulement si une de mes balises "content" n'est pas vide.

En gros je voudrais afficher la div avec son contenu seulement si l'utilisateur a insérer du texte dans l'administration.

Merci pour votre aide
Répondre
#2

passe par des tests smarty

Code :
{capture name=myContent}{content}{/capture}

{if $myContent.strlen() > 0}
  <div>{$myContent}</div>
{/if}
Répondre
#3

J'avoue que j'ai un peu de mal avec les tests smarty, il faut que je mette ce code directment dans mon gabarit ??

J'ai appeler mon bloc de la facon suivante comment se presente la syntaxe du cou ??

{content block="bloc_droit" label="bloc_droit"}
Code :
{capture name=myContent}{content block="bloc_droit"}{/capture}

{if $myContent.strlen() > 0}
  <div>{$myContent}</div>
{/if}

Merci
Répondre
#4

tu as tout bon Smile
Répondre
#5

- Ajoutez [Résolu] au début du titre de votre 1er message lorsqu'une solution a été trouvée.

J-C Etiemble v 2.2.xx
Répondre
#6

Bonjour

Je tente de mettre en place le code signalé ci dessus pour n'afficher un "content block" que s'il n'est pas vide (dans la page affichée)

Dans mon template, je mets ceci :
Code :
{* bloc 1 DEBUT *}        
         {capture name=contenuBlocGauche1Titre}{content block="Bloc Gauche 1 (titre)"}{/capture}
         {if $contenuBlocGauche1Titre.strlen() > 0}
            <div class="sbar-top">
              <h2 class="sbar-title">{content block="Bloc Gauche 1 (titre)" oneline="true"}</h2>
            </div>
        {/if}


Mais ce code me génère l'erreur smarty suivante:

Code :
string(178) "Smarty error: [in tpl_body:100 line 80]: syntax error: variable function call '$contenuBlocGauche1Titre.strlen' not allowed in if statement (Smarty_Compiler.class.php, line 1403)" string(173) "Smarty error: [in tpl_body:100 line 86]: syntax error: variable function call '$contenuBlocGauche1.strlen' not allowed in if statement (Smarty_Compiler.class.php, line 1403)"
J'ai beau regarder mon code, je trouve pas l'erreur !

La voyez vous ?

Merci d'avance
Répondre
#7

Il semble que cela s'est résolu

Après pause d'1/2h, j'ai supprimé des fichiers obsolètes dans mon dossier uploads et puis fais un nouveau refresh de page ; et j'ai plus l'erreur smarty

Bizarre... Bizarre

PS : n'étant pas à l'origine de ce fil de discussion, je ne peux et/ou ne sais si je dois mettre "résolu"
Répondre
#8

Bizarre, bizarre, ça marche un coup sur deux !

j'édite mon gabarit (avec le code indiqué ci dessus permettant d'afficher bloc1 titre et bloc 1 s'ils sont pas vides

je ne modifie rien et je clique sur "Envoyer"

Je fais un refresh (Ctrl F5) de la vue de mon site sur une autre fenêtre du navigateur (ouverte en permanence)

J'ai l'erreur !

Je refais refresh ! elle disparait !

J'ai fait des essais en vidant le cache préalablement à la ré-exécution des manips précitées ; pareil !


Bizarre non ? je pense que c'est smarty qui en est la cause (cache interne, ou je ne sais quoi)

Quelqu'un a t il eu ce genre de soucis ?
Répondre
#9

Salut,
Je viens de galérer sur le même problème (presque un an plus tard ^^) et c'est ton utilisation de {capture} qui pêche...
Il faut faire le {if} sur la variable $smarty comme ça
Code :
{if $smarty.capture.contenuBlocGauche1Titre != ""} Ok {else} Pas Ok {/if}

En espérant que cela aide quelqu'un
Répondre


Atteindre :


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