J'ai actuellement peel shopping (CMS) en version 7.2 et je vais passer a la version 9.3 le soucis c'est que j'ai beaucoup de modification a apporter et pour ne pas avoir a mettre cela dans le code de base et garder une certaine flexibilité pour installer des mise a jours, on m'avais dit que cette version (9.3) comporter des hooks qui permet d'apporter des modification sans toucher au code source.
Je me suis donc renseigner et j'ai regarder un peut le fonctionnement des hooks sauf que je pense que sur peel shopping c'est utilisé différemment.
J'ai aussi regarder la partie sur la création d'un module et je suis parti sur quelque chose de simple: faire un module qui va simplement afficher "bonjour" donc créer un module bonjour (installer manuellement) et qui afficherai "bonjour" a l'endroit d'un hook. Je me suis cassé la tête pendant une semaine avant de poser sur leur forum dédié mais j'ai eu aucune réponse depuis une semaine et j'arrive a rien.
J'ai suivi ce sujet: https://forum.peel.fr/topic/8372-foncti ... de-peel-8/ et https://forum.peel.fr/topic/8371-foncti ... version-8/ mais je galère et n'arrive a rien.
j'ai regarder dans fonctions_admin.php qui gére l'affichage de la liste sur admin_commande_liste.tpl et j'ai trouver un endoit avec un hook:
Code : Tout sélectionner
$tpl_results = call_module_hook('affiche_liste_commandes_admin', $tpl_results, 'array', true);
$tpl->assign('results', $tpl_results);Code : Tout sélectionner
call_module_hook('hook_test_affiche_liste_commandes_admin',vn($Links->nbRecord));Pour créer un module, dans le dossier des modules j'ai créer un dossier "bonjour" dans lequel j'ai créer un fichier fonctions.php dans lequel j'ai ceci:
Code : Tout sélectionner
<?php
/**
*
* @brief Exemple de module : dossier monmodule/ contenant un fichier Monmodule.php ayant pour contenu la classe ci-dessous
* @package PEEL
* @author PEEL <[email protected]>
* @copyright Advisto SAS 51 bd Strasbourg 75010 Paris https://www.peel.fr/
* @version $Id: xxx $
* @access public
*/
class bonjour extends Module
{
/**
* Constructor
*
*/
public function __construct()
{
$this->name_by_lang = array('en' => 'Hello', 'fr' => 'Bonjour');
$this->description_by_lang = 'afficher simplement bonjour';
$this->technical_code = 'bonjour';
$this->activation_variable = 'module_bonjour';
$this->version = '8.0';
$this->vendor = 'Ant0ny';
$this->peel_versions_compatibility_infos = array('min' => '8.0', 'max' => null);
$this->dependencies = null;
parent::__construct();
}
/**
* Vérifie l'installation du module
*/
static public function check_install()
{
$listTables = listTables();
return in_array('peel_bonjour', $listTables);
}
/**
* Gère les opérations liées au module
*/
public function execute($mode = null)
{
if($mode == 'install') {
query("
CREATE TABLE IF NOT EXISTS `peel_bonjour` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bonjourchamp` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
");
set_configuration_variable(array('technical_code' => 'modules_lang_folders_array', 'string' => array_merge_recursive($GLOBALS['site_parameters']['modules_lang_folders_array'], array('bonjour' => '/modules/bonjour/lang/')), 'type' => 'array', 'site_id' => 0, 'origin' => $this->technical_code), true);
$GLOBALS['site_parameters']['modules_front_office_functions_files_array']['bonjour'] = '/modules/bonjour/fonction.php';
set_configuration_variable(array('technical_code' => 'modules_front_office_functions_files_array', 'string' => $GLOBALS['site_parameters']['modules_front_office_functions_files_array'], 'type' => 'array', 'origin' => 'sites.php', 'site_id' => 0), true);
} elseif($mode == 'uninstall') {
query("DROP TABLE `peel_bonjour`");
unset($GLOBALS['site_parameters']['modules_lang_folders_array']['bonjour']);
set_configuration_variable(array('technical_code' => 'modules_lang_folders_array', 'string' => $GLOBALS['site_parameters']['modules_lang_folders_array'], 'type' => 'array', 'site_id' => 0, 'origin' => $this->technical_code), true);
unset($GLOBALS['site_parameters']['modules_front_office_functions_files_array']['bonjour']);
set_configuration_variable(array('technical_code' => 'modules_front_office_functions_files_array', 'string' => $GLOBALS['site_parameters']['modules_front_office_functions_files_array'], 'type' => 'array', 'origin' => 'sites.php', 'site_id' => 0), true);
}
}
/**
* Fonction de hook, qui renverra un contenu dépendant du hook concerné
*
* @param array $params
* @return
*/
static public function hook_test_affiche_liste_commandes_admin($params) {
echo 'Bonjour - Hello avec params='.$params;
return "<br>TEST BONJOUR<br>";
}
/**
* quelconque()
*
* @param string $param1
* @param string $param2
* @return
*/
// public function quelconque($param1, $param2)
// {
// }
}
?>j'ai aussi créer une variable sur le site comme suite:
Origine :modules
Code technique :module_bonjour
Type :integer
Votre contenu :1
Je pense que cette création se fait logiquement via un fichier installation mais pour le moment j'essaie que ça fonctionne avant de faire des installations automatiques etc...
Actuellement j'ai rien du tout... alors que si je met simplement au dessus de l'appel un echo j'ai le texte tout en haut de la page affiché quand même (même si après logiquement faudrait l'envoyé au tpl mais du coups faudrai quand meme modifier le tpl?)
J'ai vu que l'exemple crée et supprime une table (pas utile dans mon cas mais j'ai laisse histoire de pas trop modifier l'exemple).
Et quand on trouve ceci dans le code:
Code : Tout sélectionner
call_module_hook('product_details_show',xxx)Code : Tout sélectionner
function last_views_hook_product_details_show($params) {Code : Tout sélectionner
function test_bonjour_hook_product_details_show($params) {Je vois qu'il y a des fonctions pour installer le module sur le script mais comment ça pourrais le faire, on doit lui dire quelque part ou alors faut aussi un autre fichier d'installation...
J'ai regarder sur le fichier installation des module premium, il fait uniquement se que j'ai fait manuellement dans les variables si je dit pas de bêtises. Je comprend pas pourquoi ça fonctionne pas
Je sais que c'est pas simple de m'aider dans quelque chose que l'on ne connais pas mais si on pourrait me donner meme une piste ou quelque chose a essayer car la je tourne en rond sur quelque chose assez bete donc si je doit faire des modules qui font de l'affichage avec smarty, css, qui modifie des données, etc... ça risque d'être plus compliqué.
Merci pour votre aide.