Exécuter urlRewrite() dans function lastArtList
Bonjour à tous,
J'utilise la fonction lastArtList pour afficher des articles d'une catégorie spécifique :
<?php $plxShow->lastArtList('<div class="center padding-1"><a href="index.php?categorie#cps_artToCatId" title="#art_title"><img src="#img_url" title="#img_title" alt="#img_alt" /></a></div>', 10, 5, '', 'sort'); ?>
En plus j'utilise le (magnifique) plugin kzChamPlus pour ajouter des champs à mes articles/catégories. Dans cet exemple j'ajoute le champ #cps_artToCatId qui me permet de construire un lien vers une catégorie. Mon problème est que je ne trouve pas comment utiliser urlRewrite().
Est-ce faisable ?
J'ai un string de l'array
0
Connectez-vous ou Inscrivez-vous pour répondre.

Réponses
@flipflip

Il y a la fin de lastArtList le hook plxShowLastArtListContent qui peu aidé a finalisé le procédé
Et avec un petit greffon fait vite fait sur place, il est possible d'y arrivé
Ds le dossier plugins, créer un dossier nommé artToCatId
Puis créer un nouveau fichier nommé artToCatId.php dedans avec ce code :
<?php if (!defined('PLX_ROOT')) exit; #Code pour : https://forum.pluxml.org/discussion/6795/executer-urlrewrite-dans-function-lastartlist class artToCatId extends plxPlugin { function __construct($default_lang) { parent::__construct($default_lang); if(!defined('PLX_ADMIN')) {#si coté site # pour modifier la sortie de lastArtList $this->addHook('plxShowLastArtListContent','plxShowLastArtListContent'); } } # modifie la sortie de lastArtList pour intégrer le kzChamPlus cps_artToCatId function plxShowLastArtListContent() { echo '<?php '; ?># On est au cœur de la fonction ($this est plxShow) # Récupére la valeur du chamPlus (ici cps_artToCatId) $num = $this->plxMotor->plxPlugins->aPlugins['kzChamPlus']->kzChamPlus(array('cps_artToCatId', true); $num = intval($num); $artCatId = str_pad($artCatId, 3 '0', STR_PAD_LEFT);# met au format ### $row = strtr($row, array( '#cat_url' => $this->plxMotor->urlRewrite('?categorie' . $num . '/' . $this->plxMotor->aCats[$artCatId]['url']), )); ?><?php } }Créer un fichier (tjrs ds le dossier) nommé infos.xml avec ceci dedans (il est obligatoire) :
<?xml version="1.0" encoding="UTF-8"?> <document> <title>artToCatId</title> <author>swd</author> <version>1.0.0</version> <date>31/07/2020</date> <site>http://sudwebdesign.free.fr</site> <description><![CDATA[Ajoute le champ personnalisé cps_artToCatId a la fonction lastArtList]]></description> <requirements>kzChamPlus</requirements> <scope>site<scope> </document>Il manque le icon.png pour bien faire les choses.
Si tout c'est bien déroulé, il devrait être maintenant visible ds les plugins inactifs. Il reste qu'a l'activé et de placer ds ton thème ce bout de code :
<?php $plxShow->lastArtList('<div class="center padding-1"><a href="#cat_url" title="#art_title"><img src="#img_url" title="#img_title" alt="#img_alt" /></a></div>', 10, 5, '', 'sort'); ?>et ça devrai faire ce que tu souhaite.
Ps: ces codes sont non testés.
Notre temps est la seule monnaie vraie ;)
Site, Dépôt, framagit, MyShop, Factux
#mozinor président
Merci je test tout ça à mon retour de vacances.
J'ai un string de l'array
Salut,
Ca marche nikel avec ton idée de plugin. Je l'ai modifié pour l'optimiser et le simplifier.
<?php class artToCatId extends plxPlugin { function __construct($default_lang) { parent::__construct($default_lang); if(!defined('PLX_ADMIN')) { $this->addHook('plxShowLastArtListContent', 'plxShowLastArtListContent'); } } # modifie la sortie de lastArtList pour intégrer le kzChamPlus cps_artToCatId function plxShowLastArtListContent() { $string = <<<END <?php \$row = str_replace('#cat_url',\$this->plxMotor->urlRewrite('?categorie'.\$art['cps_artToCatId']),\$row); ?> END; echo $string; } } ?>Merci de ton aide.
J'ai un string de l'array