[resolu]plugins avec page en front ne fonctionnent plus - affichent une 404 .[FIXED]

Bonjour,
tous les plugins insérant une page statique en front-end sont devenus inutilisables.
PluXml les ignores totalement et renvoi une page 404 avec le message "Page non trouvée".
voir https://github.com/pluxml/PluXml/pull/794

▼ Details obsolétes
Pour que les plugins affichent une page en front, ceux-ci créent un nouveau mode et une url du même nom .
Tous basé sur un mode de fonctionnement mis en place à l'occasion de la sortie du plugin PlxMySearch (sauf erreur , il me semble que c'etait le tout premier plugin de Pluxml avec PlxMyContact) . L'url et le mode est extrait du paramètre 'url' de ces plugins.

[FIX] pour la rc6 en dev actuelle (04-Mars-2024 -> ?)
Tous se passe dans la class plxMotor . Fichier : core/lib/class.plx.motor.php

  1. ajouter une variable dans la class plxMotor prêtes à recevoir dans un tableau les valeurs des plugins ayant un parametre url.
    public $modes = array(); # pages statiques des plugins

  2. Dans la fonction protected function __construct($filename) , aprés la ligne : $this->plxPlugins->loadPlugins(); Ajouter le code suivant:

        # Recuperation des pages static des plugins
        foreach($this->plxPlugins->aPlugins as $class => $val) {
            $myclass=$class;
            $myPlug = new $myclass($this->aConf['default_lang']);
            $plugStatic = $myPlug->getParam('url');         
            $this->modes[]=$plugStatic;
        }

Ce code va stocké dans un tableau toutes les éventuelles occurrences de pages générées par un plugin (elles s'ajoutent à liste des pages statiques).
3. dans la fonction public function demarrage() { , en fin de fonction et juste devant la partie de code :

            default :
                $this->error404(L_ERR_PAGE_NOT_FOUND);

Ajouter le code suivant pour que les pages statiques des plugins s'affichent normalement si l'url demandée correspond à celle d'une des pages d'un plugin:

            case (count($this->modes)>0):
                if(in_array($this->mode,$this->modes)) 
                break;  

C'est tout, vos plugins sont à nouveaux utilisables en front.


Cordialement,
gcyrillus

Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

Réponses

  • erxyzerxyz Member

    Est-ce que PluXml ne serait pas en train de devenir une usine à gaz ? Un jouet pour développeurs ?
    Où est passée la simplicité d'utilisation pour les internautes lambdas comme moi qui ne pigent rien au code et qui veulent juste un site qui fonctionne ?
    Depuis quand PluXml doit-il concurrencer WordPress, Joomla!, Drupal et autres CMS surpuissants alors qu'il n'en a pas les moyens humains et logistiques (en terme de quantité pas de qualité) ?
    Où sont les énormes sites PluXml professionnels qui nécessitent autant d'attention sur le SEO ou l'URL rewriting alors qu'il n'y a toujours pas de formulaire de contact et de recherche dignes de ce nom , que les bases de l'accessibilité ne sont pas prises en compte, que le manque de design (notamment la partie admin) est un frein majeur à son adoption ?

    À trop vouloir transformer la Twingo en Ferrari, on va tous finir piétons ! :)

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Bonjour,
    PluXml traite la demande d'un visiteur d'un site en 2 étapes :

    • Valider ou pas cette demande et positionner certains paramètres, template à utiliser, données à rechercher, etc.... C'est le rôle de la fonction plxMotor::prechauffage()
    • rassembler les données à afficher, par exemple les articles pour une catégorie et selon le numéro de la page demandée, etc ... C'est le rôle de la fonction plxMotor::demarrage()
    • Ensuite les données préparées sont affichées selon le thème choisi.

    Les plugins qui génèrent une page statique à la volée sont obligés de passer par la première étape via le hook plxMotorPreChauffageBegin pour comprendre la demande du visiteur et dire à PluXml : 'Ok, j'ai compris ce qu'on demande'
    Hélas, ces plugins, même officiels, ignorent la 2ème étape profitant des lacunes de PluXml qui retournait un code 200 même s'il n'avait préparé aucune donnée.
    PluXml utilise un nombre réduit de modes home, categorie, tag, static, ... pour savoir comment travailler.
    Ces plugins utilisent un mode personnalisé comme search, contact, .. que PluXml ne comprend pas.
    Il suffit donc que ces plugins disent à PluXml : 'T'inquiètes. Je prépare les données' pour éviter une 'erreur 404 document non trouvé'. Cela se fait simplement dans le plugin avec le hook plxMotorDemarrageBegin comme ci-dessous où le plugin stocke son mode personnel dans sa propriété url :

    public function plxMotorDemarrageBegin() {
         echo '<?php'. PHP_EOL;
    ?>
    return ($this->mode == '<?= $this->url ?>');
    <?php
            echo PHP_EOL . '?>';
        }
    

    Il n'y a donc pas lieu de bidouiller PluXml pour son cas personnel.
    Il y a juste une petite mise à jour à faire pour ces plugins.

    Hélas, en 7 ans comme pour le plugin plxMyContact par exemple, on ne compte pas trop les contributeurs pour améliorer ou mettre à jour le code de PluXml ou des plugins. Même une personne avec une seule main aurait trop de doigts pour les compter.

    Nous n'obligeons personne à jouer avec nous. Si votre vieille version de PluXml vous suffit, gardez là ! Peut-être même que personne ne vient voir votre site avec son smartphone. Ne dit-on : 'Pour vivre heureux, vivons cachés'. Jusqu'au jour où les hackers / pirates viendront jouer avec votre site et vos données personnelles, à vos dépens.

    Je publierai dans la semaine une version actualisée du plugin officiel plxMyContact qui fonctionne avec la prochaine version de PluXml. Elle prendra également en compte le format défini par le thème pour afficher le menu. Et d'autres petits plus. Mais remettre au goût du jour un code vieux de 7 ans pour le rendre lisible facilement prend du temps.

  • 14 mars modifié

    < message lu, depollution du topic>

    Enfin , je suis très conscient que la responsabilité du code de PluXml demande beaucoup d’énergie, oblige à des choix et que des yaka ou fodrékeu peuvent être facilement formulés :)

    Merci pour PluXml en tous cas.


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

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