[Résolu]PREG_MATCH dans un {if} - Version imprimable +- Forum CMS Made Simple FR (https://www.cmsmadesimple.fr/forum) +-- Forum : Général (https://www.cmsmadesimple.fr/forum/forum-3.html) +--- Forum : Général (https://www.cmsmadesimple.fr/forum/forum-10.html) +--- Sujet : [Résolu]PREG_MATCH dans un {if} (/thread-3775.html) |
[Résolu]PREG_MATCH dans un {if} - snatch1974 - 22/02/2016 Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~ Bonjour à tous, Pour personnaliser un menu d'un site multilingue, je voulais utiliser la fonction preg_match dans le gabarit du menu afin d'attribuer une classe uniquement au premier node de second niveau (1.1 ou 2.1 ou 3.1 ...) j'ai donc, fait comme ça: Code : [== PHP ==] Le problème est que j'ai une erreur me disant que cette fonction est interdite: [ins]Syntax error in template "cms_template:GLG Main Navigation" on line 27 "{if preg_match("/^\d[\.][1]$/", $hierarchy)}" PHP function 'preg_match' not allowed by security setting[/ins] Pourquoi la fonction est interdite, et y'a-t-il une solution pour contourner cette interdiction? Merci [Résolu]PREG_MATCH dans un {if} - jce76350 - 22/02/2016 >Pourquoi la fonction est interdite parce que c'est un danger Voir Syntax error in template "..." on line 1 "..." PHP function '...' not allowed by security setting. [Résolu]PREG_MATCH dans un {if} - snatch1974 - 22/02/2016 jce76350 a écrit :>Pourquoi la fonction est interdite Ok, je comprends que certaines fonctions puissent être dangereuse et que donc... Code : [== Indéfini ==] ... la modif du fichier config puissent ouvrir des failles de sécurité Est-ce possible alors d'arriver au même résultat dans le template du menu sans passer par un preg_match ? [Résolu]PREG_MATCH dans un {if} - Jean le Chauve - 22/02/2016 Au lieu de mettre une classe, tu utilises le sélecteur :first-child Code : ul > :first-child { [Résolu]PREG_MATCH dans un {if} - snatch1974 - 22/02/2016 Jean le Chauve a écrit :Au lieu de mettre une classe, tu utilises le sélecteur :first-child Ca, je suis d'accord pour pour la feuille de css mais pour remplacer le texte du menu par une icone font, il faut que je passe par une classe et que je supprime le texte directement dans le menu: Code : [== PHP ==] avec mon css qui donne ça: Code : [== CSS ==] Le css, je peux le transposer à ul > :first-child, comme tu le dis, y'a pas de soucis, mais pour supprimer le texte du menu et n'avoir que l'icone... sans passer par des position:absolute et des left: -9999px pour le texte, le plus simple est de conditionner l'affichage directement dans le template du menu. Du moins, je vois ça comme ça pour le moment... [Résolu]PREG_MATCH dans un {if} - Ouik - 22/02/2016 Je ne vois pas l'intérêt de ne pas le gérer par le css : plus simple à mettre en place et surtout plus accessible. [Résolu]PREG_MATCH dans un {if} - Jean le Chauve - 22/02/2016 Et avec un {if depth>1 && $node@first}{else}{$node->menutext}{$parent_indicator}{/if} ? [Résolu]PREG_MATCH dans un {if} - snatch1974 - 22/02/2016 C'est bon !!!! En fait, en faisant un explode de $node->hierarchy pour récupérer le premier chiffre et en le concaténant avec ".1" qui est la position voulue dans le menu on obtient toutes les premières pages du second niveau: Code : [== Indéfini ==] Ouik a écrit :Je ne vois pas l'intérêt de ne pas le gérer par le css : plus simple à mettre en place et surtout plus accessible. Comme je l'ai dit juste avant, je veux une icone et pas une icone + texte. En css, on ne peux pas remplacer du contenu, on peut en rajouter avant ou après mais pas supprimer dfu texte. Sinon, il aurait fallu englober le texte dans une balise <span> par exemple et rendre cette balise non visible et je n'avais pas envie de ça. [Résolu]PREG_MATCH dans un {if} - Jean le Chauve - 22/02/2016 Regarde mon post précédent, si ce n'est pas déjà fait. [Résolu]PREG_MATCH dans un {if} - snatch1974 - 22/02/2016 Jean le Chauve a écrit :Regarde mon post précédent, si ce n'est pas déjà fait. Je l'ai vu juste après avoir posté ma solution fonctionnelle. Je viens d'essayer la tienne et j'ai l'icone+le texte, ce qui est con car c'était encore plus simple et mieux par contre ta solution fonctionne comme ça: Code : {if $depth==0 && $node@first}{else}{$node->menutext}{$parent_indicator}{/if} [Résolu]PREG_MATCH dans un {if} - Jean le Chauve - 22/02/2016 {if $depth>0 && $node@first} ou $node->depth > 0 [Résolu]PREG_MATCH dans un {if} - snatch1974 - 22/02/2016 Jean le Chauve a écrit :{if $depth>1 && $node@first} $depth est 0 pour toutes les pages de mon premier niveau, qui est en fait le second mais pt'etre que le childrenof change la profondeur des pages. Code : [== Indéfini ==] [Résolu]PREG_MATCH dans un {if} - Jean le Chauve - 22/02/2016 On se croise, je viens de modifier le post précédent. [Résolu]PREG_MATCH dans un {if} - snatch1974 - 22/02/2016 C'est bien $depth==0 dans mon cas qu'il faut utiliser car avec $depth>0 toutes les premières pages de chaque niveau sont impactées et moi je ne veux que celle du premier niveau affiché En tout cas merci pour ce bout de code, c'est simple, clair et ça fait le job ! [Résolu]PREG_MATCH dans un {if} - Jean le Chauve - 22/02/2016 Effectivement quand tu nous auras tout dit Tu aimes faire durer le suspens Citation :pour remplacer le texte du menu par une icone font, il faut que je passe par une classe et que je supprime le texte directement dans le menu: Citation :childrenof=$lang_parentLa prochaine fois, essaye de donner tous les renseignements utiles dès le premier message [Résolu]PREG_MATCH dans un {if} - snatch1974 - 22/02/2016 snatch1974 a écrit :Pour personnaliser un menu d'un site multilingue, je voulais utiliser la fonction preg_match dans le gabarit du menu afin d'attribuer une classe uniquement au premier node de second niveau (1.1 ou 2.1 ou 3.1 ...) En disant un menu multilingue, il me semblait qu'il allait de soit qu'il y'avait un childrenof dans la déclaration et j'ai bien précisé "uniquement au premier node de second niveau" :p J'aurais dû être plus clair, c'est de ma faute mais avec un depth à 0 et une hierarchy qui commence à 2.1, on s'embrouille rapidement ! :lol: En tout cas, un grand grand merci Je clôs? [Résolu]PREG_MATCH dans un {if} - Jean le Chauve - 22/02/2016 Clos mon ami, clos :p Et pour finir en beauté, "clore" ne prend un accent circonflexe qu'à la 3e personne du singulier de l'indicatif présent [Résolu]PREG_MATCH dans un {if} - Ouik - 22/02/2016 snatch1974 a écrit :Ouik a écrit :Je ne vois pas l'intérêt de ne pas le gérer par le css : plus simple à mettre en place et surtout plus accessible. TU n'en as peut-être pas envie, certains de tes utilisateurs, très certainement. Bref, dommage pour eux. :/ [Résolu]PREG_MATCH dans un {if} - snatch1974 - 22/02/2016 Ouik a écrit :snatch1974 a écrit :Ouik a écrit :Je ne vois pas l'intérêt de ne pas le gérer par le css : plus simple à mettre en place et surtout plus accessible. C'est juste une page d'accueil sans grand intérêt réel donc, juste une icone en forme de petite maison pour matérialiser cette page dans le menu est amplement suffisant sur ce coup là... en plus le site concerne une gallerie d'art à vendre donc, la petite maison va bien et moins longtemps le site restera en ligne, mieux ce sera car celà voudra dire qu'elle est vendue ! :lol: |