Erreur dans Guide du Dév PluXml 5.1.x

Hello,

alors je viens de finir mon plugin d'import des images des produits d'une boutique Prestashop,
et ça marche nickel :P ... sauf que je bug grave sur les Hook.
Et la doc. du développeur m'embrouille un peu, car il y a justement des erreurs :(

page 6: "A partir des fichiers thèmes"
<?php $plxShow->callHook('PluginTest')) ?>
> la parenthèse de fin est en double

page 11:
<?php
class test extends plxPlugin {
public function __construct($default_lang) {
# Appel du constructeur de la classe plxPlugin (obligatoire)
parent::__construct($default_lang);
# Déclaration des hooks
$this->addHook('AdminTopEndHead', 'AdminTopEndHead');
}
public function AdminTopHead() {
echo '<script type="text/javascript" src="'.PLX_PLUGINS.'test/test.js"></script>';
}
}
?>
> le nom du hook ne correspond pas à sa fonction ou vice versa

Et même en retournant les valeurs dans tous les sens pour cet exemple, ça ne marche pô :O

Je n'arrive donc pas à rajouter simplement la feuille de style du plugin dans le header admin
Voici le code
<?php
class i2p2 extends plxPlugin {

	public function __construct($default_lang) {
			# Appel du constructeur de la classe plxPlugin (obligatoire)
			parent::__construct($default_lang);

			# limite l'accè a l'écran d'administration du plugin
			$this->setConfigProfil(PROFIL_ADMIN);
			
			# Déclaration des hooks
			$this->addHook('AdminTopEndHead', 'AdminTopEndHead');
	}

	public function AdminTopEndHead(){
		echo "\n".'<link rel="stylesheet" type="text/css" href="'.PLX_PLUGINS.'i2p2/style.css" media="screen" />';
	}

}
?>
Le bug viendrait-il du nom du plugin ?
Le pire c'est que j'ai réussi avant-hier (très) tard dans la nuit mais qu'une maudite maladresse m'a tout fait perdre ! Je m'étais rendu compte qu'il y avait une erreur quelque part, mais là, mon cerveau ne marche plus.
Si on peut m'aider, help !

Merci.

_____
D.San

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    Je ne doute pas qu'il y ait des erreurs de typo ou de rédaction dans la doc. Elle demande également a être mise à jour: faute de temps je n'ai pas pu encore le faire.

    concernant l'instruction
    $this->addHook('AdminTopEndHead', 'AdminTopEndHead');
    
    Il n'est pas obligatoire que la fonction appelée (2ieme paramètre) porte le même nom que le hook (1er paramètre). Cela permet par exemple d'appeler la même fonction par plusieurs hooks.

    si le nom de ta classe est i2p2, le fichier du plugin doit s'appeler i2p2.php et être stocké dans le dossier /plugins/i2p2/

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • j'ai bien un dossier i2p2 dans plugins contenant les fichiers:

    i2p2.php
    > déclare bien les droits d'accès
    > devrait insérer /plugins/i2p2/style.css dans le header de l'admin mais ne marche pas
    > devra créer un hook et sa fonction d'affichage de la liste des images des produits créée par config.php

    son code actuel:
    <?php
    class i2p2 extends plxPlugin {
    
    	public function __construct($default_lang) {
    			# Appel du constructeur de la classe plxPlugin (obligatoire)
    			parent::__construct($default_lang);
    
    			# limite l'accè a l'écran d'administration du plugin
    			$this->setConfigProfil(PROFIL_ADMIN);
    			
    			# Déclaration des hooks
    			$this->addHook('AdminTopEndHead', 'AdminTopEndHead');
    	}
    
    	public function AdminTopEndHead(){
    		echo '<link rel="stylesheet" type="text/css" href="'.PLX_PLUGINS.'i2p2/style.css" media="screen" />';
    	}
    
    }
    ?>
    
    icon.png > l'icône s'affiche bien dans la liste des plugins

    infos.xml > les données sont bien reprises dans la liste des plugins

    parameters.xml > bien récupérés et traités dans config.php ( et même réécrits par la suite )

    config.php > affiche très bien ce qu'on lui demande dans la page config du plugin
    > récupération de parameters.xml
    > connexion à la base SQL de Prestashop
    > récupération des ID_image, ID_produit, etc...
    > écriture de cette base dans i2p2_bdd.txt
    > sélection des images à afficher dans PluXml
    > rajout de ces données dans i2p2_bdd.txt

    i2p2_bdd.txt > bdd des ID_img, nom des produits, etc... ( valeurs séparées par des tab, 1 ligne/image :P )
    > bien géré par config.php
    > sera traité par i2p2.php pour le hook
    ( de cette manière, on n'envoie qu'une seule requête, lorsqu'on configure le Plugin :cool:
    on ne va pas quand même pas envoyer des requêtes à chaque fois qu'on charge une page pluXml quand-même ?! :lol:)

    style.css
    > gère le style de config.php mais je n'arrive pas à l'inclure via i2p2.php
    > fonctionne bien quand il est appelé dans le dure de top.php de l'admin

    dossier /lang avec:
    en.php, en-help.php, fr.php, fr-help.php qui sont bien appelés dans config.php

    :D Me manque le fichier admin.php et je les aurais tous fait :D
    Mais y'en a pas l'utilité là

    Donc voilà, le pb doit certainement provenir de ce fichier i2p2.php ci-dessus, mais où ?
    grrrr

    Je m'y replonge dès demain,
    si entre-temps quelqu'un voit un truc louche dans ce code,
    marki beaucoup !

    ____
    D.San
  • StéphaneStéphane Member, Former PluXml Project Manager
    le plugin est bien activé ?
    quand tu visualises le code source de l'admin, est-ce que la ligne censée charger le css est présente ?

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • danielsandanielsan Member
    juillet 2011 modifié
    aahhhhhh la honnnte !!!!! :lol::lol::lol:
    Je m'étais dit que comme je ne crée pas de function OnActivate(),
    ça ne servait à rien d'activer le plugin ...

    Par contre,
    la CSS n'est appelée que lorsque le plugin est activé ...
    Et si je veux configurer le plugin avant de l'activer,
    ben elle n'est donc pas appelée et c'est pas bô. ;)

    comment faire pour l'avoir sans activation ?
    Dois-je ancrer l'appel dans un autre hook ?
    Ou d'une autre manière ?

    Une ptite dernière pour la route:
    lorsque je crée un fichier admin.php,
    où est-il utilisé et affiché dans le BO du site ?

    Merci

    _____
    D.San

    ps:
    bon, j'crois que le titre de ce topic ne convient plus ...
    c'est possible de le changer et de le glisser vers la section "Plugins" ?

    On pourrait créer un topic "Doc. du Dév." histoire de recenser les coquilles et autres trucs ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    As-tu besoin que le fichier css soit chargé pour configurer le plugin, quand tu va sur l'écran "Configuration" du plugin ?

    Si le plugin n'est pas activé, les hooks ne sont pas interprétés. (c'est un choix fonctionnel)

    lorsque un fichier admin.php est présent dans le dossier du plugin, tu auras un menu supplémentaire dans la sidebar de l'administration (en bas). tu peux régler les droits utilisateurs pour restreindre l'accès à l'écran d'admin du plugin. Dans le constructeur de la classe du plugin tu peux mettre (ou pas), les lignes suivantes
    # droits pour accèder à la page config.php et admin.php du plugin
    		$this->setConfigProfil(PROFIL_ADMIN);
    		$this->setAdminProfil(PROFIL_ADMIN);
    
    En précisant les droits PROFIL_ADMIN, PROFIL_MANAGER, PROFIL_MODERATOR, PROFIL_EDITOR, PROFIL_WRITER

    Plusieurs profils peuvent être spécifiés en les séparant par des virgules
    $this->setAdminProfil(PROFIL_ADMIN, PROFIL_WRITER);
    
    voir dans la doc le chapitre "Créer un écran d’administration"

    ps: ce fil ne sera pas déplacé dans la partie "Plugins" du forum qui est réservé aux publications de plugins et pas aux discussions sur les plugins.

    N'hésite pas, si tu as d'autres questions.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Oui j'ai besoin que la CSS soit chargée pour la config du plugin ...

    Je t'envoie en MP l'adresse du blog en prod' avec un id et mdp pour que tu vois par toi-même.
Connectez-vous ou Inscrivez-vous pour répondre.