plxShowConstruct et plugin
Bonjour,
Pour mon plugin StaticGalerie j'essai de faire en sorte que mes pages générées par le plugin soit concidérer comme étant créé par le core. Pour ce faire je m'inspire du plugin de Stéphane plxMyContact mais je bloc sur la fonction plxShowConstruct
L'original
Ma version
La différence ce trouve dans le foreach car je peux avoir plusieurs galeries donc plusieurs pages statiques. Dans le header.php de mon thème j'ai ajouté un print_r($plxMotor->aStats); et voila le résultat :
Il y a bien les deux pages statiques que j'ai généré via pluxml (001 et 002) et une généré via mon plugin (0). Sauf qu'il y a deux problèmes :
- via mon plugin j'ai généré deux pages, mais une seul est dans le tableau;
- les id du array pour la partie créé avec mon plugin, je voudrais que ça reprenne le vrai id de ma galerie, pour mes tests les deux galeries ont les id 0001 et 0003. J'ai essayé de remplacer \$this->plxMotor->cible par ".$galerie_id." mais pas mieux.
J'ai fais le test en enlevant le if dans le plxShowConstruct de plxMyContact et l'histoire des id est identiques. Je suis tombé sur un comportement bizarre au niveau des id de l'array. Si vous cliquez sur la page qui correspond au plugin plxMyContact le tableau devient :
Tout ce mélange dans le dernier élément, il prend un id "spécial" de plxMyContact avec les éléments de mon plugin.
Pour mon plugin StaticGalerie j'essai de faire en sorte que mes pages générées par le plugin soit concidérer comme étant créé par le core. Pour ce faire je m'inspire du plugin de Stéphane plxMyContact mais je bloc sur la fonction plxShowConstruct
L'original
public function plxShowConstruct() {
# infos sur la page statique
$string = "if(\$this->plxMotor->mode=='contact') {";
$string .= " \$array = array();";
$string .= " \$array[\$this->plxMotor->cible] = array(
'name' => '".$this->getParam('mnuName')."',
'menu' => '',
'url' => 'contact',
'readable' => 1,
'active' => 1,
'group' => ''
);";
$string .= " \$this->plxMotor->aStats = array_merge(\$this->plxMotor->aStats, \$array);";
$string .= "}";
echo "<?php ".$string." ?>";
}
Ma version
public function plxShowConstruct() {
foreach($this->aGaleries as $galerie_id => $galerie) {
# infos sur la page statique
$string = " \$array = array();";
$string .= " \$array[\$this->plxMotor->cible] = array(
'name' => '".$galerie['name']."',
'menu' => '',
'url' => '".$galerie['name']."',
'readable' => '',
'active' => '".$galerie['active']."',
'group' => ''
);";
$string .= " \$this->plxMotor->aStats = array_merge(\$this->plxMotor->aStats, \$array);";
}
echo "<?php ".$string." ?>";
}
La différence ce trouve dans le foreach car je peux avoir plusieurs galeries donc plusieurs pages statiques. Dans le header.php de mon thème j'ai ajouté un print_r($plxMotor->aStats); et voila le résultat :
Array
(
[001] => Array
(
[name] => Profil
[title_htmltag] =>
[meta_description] =>
[meta_keywords] =>
[group] =>
[url] => profil
[active] => 1
[menu] => oui
[template] => static.php
[readable] => 1
)
[002] => Array
(
[name] => Boutique
[title_htmltag] =>
[meta_description] =>
[meta_keywords] =>
[group] =>
[url] => boutique
[active] => 1
[menu] => oui
[template] => static.php
[readable] => 0
)
[0] => Array
(
[name] => autre-gal
[menu] =>
[url] => autre-gal
[readable] =>
[active] => 1
[group] =>
)
)
Il y a bien les deux pages statiques que j'ai généré via pluxml (001 et 002) et une généré via mon plugin (0). Sauf qu'il y a deux problèmes :
- via mon plugin j'ai généré deux pages, mais une seul est dans le tableau;
- les id du array pour la partie créé avec mon plugin, je voudrais que ça reprenne le vrai id de ma galerie, pour mes tests les deux galeries ont les id 0001 et 0003. J'ai essayé de remplacer \$this->plxMotor->cible par ".$galerie_id." mais pas mieux.
J'ai fais le test en enlevant le if dans le plxShowConstruct de plxMyContact et l'histoire des id est identiques. Je suis tombé sur un comportement bizarre au niveau des id de l'array. Si vous cliquez sur la page qui correspond au plugin plxMyContact le tableau devient :
Array
(
[001] => Array
(
[name] => Profil
[title_htmltag] =>
[meta_description] =>
[meta_keywords] =>
[group] =>
[url] => profil
[active] => 1
[menu] => oui
[template] => static.php
[readable] => 1
)
[002] => Array
(
[name] => Boutique
[title_htmltag] =>
[meta_description] =>
[meta_keywords] =>
[group] =>
[url] => boutique
[active] => 1
[menu] => oui
[template] => static.php
[readable] => 0
)
[../../plugins/plxMyContact/form] => Array
(
[name] => autre-gal
[menu] =>
[url] => autre-gal
[readable] =>
[active] => 1
[group] =>
)
)
Tout ce mélange dans le dernier élément, il prend un id "spécial" de plxMyContact avec les éléments de mon plugin.
J'ai un string de l'array
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je peux déjà expliquer pourquoi avec ton foreach tu n'as qu'une page créée malgré la boucle.
Le tableau $array est indexé dans la boucle par $this->plxMotor->cible $this->plxMotor->cible ne change pas dans la boucle, donc a chaque itération tu écrases l'occurrence précédente
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
J'ai un string de l'array
Il faudrait aussi que tu définisses aussi un mode "gallerie" pour que le comportement que tu veux obtenir ne se fasse que quand tu es sur la bonne page, comme le fait Stéphane avec le mode contact.
Mon objectif est de faire en sorte que n'importe quelle page généré par mon plugin sois considérer comme une page statique à part entière du core de pluxml afin de pouvoir en définir une comme étant la page d'accueil, ce que j'ai commencé à faire ici : http://forum.pluxml.org/viewtopic.php?id=3646
Ca aurait pu mais non :
J'ai un string de l'array
peux-tu me donner un lien vers le DL de ton plugin que je vois mieux ce que tu cherches ?
Perso j'ai créé un plugin qui crée automatiquement un dossier d'images pour chaque article créé.
Il reste à glisser par le gestionnaire média les images dans le dossier voulu puis dans le template un bout de code qui va chercher la liste des images pour les réinjecter dans un plugin de diapo ou autre.
On a donc un diapo par article.
Cordialement,
Merci pour l'aide
J'ai un string de l'array
J'ai continué à chercher et maintenant mes pages statiques sont visible dans aStats avec le bon index de tableau. Dans la class de mon plugin :
Maintenant faire prendre en compte la paramètre de page d'accueil.
J'ai un string de l'array