Exécuter urlRewrite() dans function lastArtList

flipflipflipflip Member
juillet 2020 modifié dans Entraide

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

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

Connectez-vous ou Inscrivez-vous pour répondre.