From pierremariecarette at gmail.com Sun Dec 13 10:57:26 2020 From: pierremariecarette at gmail.com (Pierre-Marie Carette) Date: Sun, 13 Dec 2020 19:57:26 +0100 Subject: [pmwiki-users-fr] page text variable Message-ID: <636EC552-5373-4FE2-9BA3-296376CDB5AE@gmail.com> Merci de ne pas rire d'une question de béotien (sauf si vous n?avez pas ri depuis ce matin !) : Chaque page a deux variables VarA:valeura VarB:valeurb Comment créer dans config.php une variable VarC concaténant VarA et VarB ? tel que {$:VarC} donnera "valeura valeurb » Grand merci Pierre-Marie FidelioEspoir http://www.toposcopie.fr/Methode/Methode -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From 5ko at 5ko.fr Mon Dec 14 01:06:17 2020 From: 5ko at 5ko.fr (Petko Yotov) Date: Mon, 14 Dec 2020 10:06:17 +0100 Subject: [pmwiki-users-fr] page text variable In-Reply-To: <636EC552-5373-4FE2-9BA3-296376CDB5AE@gmail.com> References: <636EC552-5373-4FE2-9BA3-296376CDB5AE@gmail.com> Message-ID: On 13/12/2020 19:57, Pierre-Marie Carette wrote: > Chaque page a deux variables > VarA:valeura > VarB:valeurb > > Comment créer dans config.php une variable VarC concaténant VarA et > VarB ? tel que > > {$:VarC} donnera > "valeura > valeurb » C'est pour utiliser {$:VarC} dans la page, ou pour utiliser la valeur dans config.php? Le premier cas est facile, pour PmWiki 2.2.122 ou ultérieur, on peut ajouter dans config.php: $DefaultUnsetPageTextVars['VarC'] = "{\$:VarA}\n{\$:VarB}"; C'est documenté en anglais ici: https://www.pmwiki.org/wiki/PmWiki/PageTextVariables#default Ceci marchera quand il n'y a pas de "VarC:" définie dans la page. Et malheureusement seulement pour la page en cours, c'est à dire {AutrePage$:VarC} ne marchera pas. Le second, pour utiliser la valeur dans du code PHP, c'est plus compliqué. Je conseille d'étudier la section "Order of the commands in config.php": https://www.pmwiki.org/wiki/PmWiki/LocalCustomizations#configphp-order ...et utiliser la fonction PageTextVar($pagename, 'VarA') dans une fonction $PostConfig ou après l'inclusion de pgcust.php. Petko From 5ko at 5ko.fr Mon Dec 14 02:14:30 2020 From: 5ko at 5ko.fr (Petko Yotov) Date: Mon, 14 Dec 2020 11:14:30 +0100 Subject: [pmwiki-users-fr] page text variable In-Reply-To: <15B9FEE3-5013-4B04-A5EA-EEA7ED0999CD@gmail.com> References: <636EC552-5373-4FE2-9BA3-296376CDB5AE@gmail.com> <15B9FEE3-5013-4B04-A5EA-EEA7ED0999CD@gmail.com> Message-ID: <1c2e959d8cb64d30b5c37bce77626b93@5ko.fr> Alors celui-ci serait plus simple avec une règle de conversion (Markup) qui intercepterait la variable spécifique et réécrirait le texte désiré à sa place. Markup('ReelMaterialite', '<{$var}', '/\\{(\\S*)\\$:ReelMaterialite\\}/', 'ReelMaterialite'); function ReelMaterialite($m) { # nom des variables, dans le bon ordre $ptv = explode(" ", "Matiere Presentation Valeur Repartition Utilisation Materialite"); $out = "|| "; $pn = $m[1]; foreach($ptv as $v) { $out .= " {" . $pn. "\$:" . $v . "} ||"; } return $out; } La fonction trouve {Groupe.Nom$:ReelMaterialite} et construit le texte "|| {Groupe.Nom$:Matiere} || {Groupe.Nom$:Presentation} || {Groupe.Nom$:Valeur} || {Groupe.Nom$:Repartition} || {Groupe.Nom$:Utilisation} || {Groupe.Nom$:Materialite} ||" qui est ensuite traité/transformé par PmWiki normalement. Avec ça, la variable (:ReelMaterialite:...:) définie dans une page serait ignorée. Je ne suis pas certain que ça marcherait dans une "PageList template" avec le raccourci {=$:ReelMaterialite} -- sinon on peut utiliser {{=$FullName}$:ReelMaterialite} à sa place. Petko On 14/12/2020 10:36, Pierre-Marie Carette wrote: > Grand merci ! > >> Le 14 déc. 2020 à 10:06, Petko Yotov <5ko at 5ko.fr> a écrit : >> $DefaultUnsetPageTextVars['VarC'] = "{\$:VarA}\n{\$:VarB} »; > ça me crevait les yeux ! > > Mais > >>> Et malheureusement seulement pour la page en cours, c'est à dire >>> {AutrePage$:VarC} ne marchera pas. >> >> Le problème : > > Dans chaque page je crée les variables modifiables > > (:Matiere: Matière :) > (:Presentation: Présentation :) > (:Valeur: Valeur:) > (:Repartition: Répartition:) > (:Utilisation: Utilisation:) > Je peux partout y faire mention par {Groupe.Nom$:Matiere}... > > Je construit dans chaque page la variable-synthèse > > (:ReelMaterialite: || {$:Matiere} || {$:Presentation} || {$:Valeur} > || {$:Repartition} || {$:Utilisation} || {$:Materialite} ||:) > > Je peux partout y faire mention par {Groupe.Nom$:ReelMaterialite} > > Cela m?oblige à répéter cette définition dans chaque page (et > j?ai 27 définition de variables-synthése) > Problème : répétition= lourdeur=illisibilité > > But de. la question : Mettre la définition de ReelMaterialité dans > config > > Ca ressemble à la deuxième proposition > >>> utiliser la fonction PageTextVar($pagename, 'VarA') dans une >>> fonction $PostConfig ou après l'inclusion de pgcust.php. > > J?en étais là (PageTextVariables) mais ça dépasse mes > compétences ! > Merci > > Pierre-Marie CARETTE (FidelioEspoir)