PHP code example of griiv / prestashop-module-installer
1. Go to this page and download the library: Download griiv/prestashop-module-installer library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
griiv / prestashop-module-installer example snippets
use Griiv\Prestashop\Module\Installer\GriivInstaller;
class MyModuleInstaller extends GriivInstaller
{
// Personnalisez si nécessaire
}
if (!defined('_PS_VERSION_')) {
exit;
}
class MyModule extends Module
{
private $installer;
public function __construct()
{
$this->name = 'mymodule';
$this->tab = 'administration';
$this->version = '1.0.0';
$this->author = 'Votre Nom';
$this->need_instance = 0;
parent::__construct();
$this->displayName = $this->l('Mon Module');
$this->description = $this->l('Description de mon module');
// Initialiser l'installeur
$this->installer = new GriivInstaller($this);
}
/**
* Définir les hooks à enregistrer
*/
public function getHooks(): array
{
return [
'displayHeader',
'displayFooter',
'displayProductPriceBlock',
'actionProductUpdate',
];
}
/**
* Définir les onglets admin à créer
*/
public function getTabs(): array
{
return [
[
'class_name' => 'AdminMyModuleSettings',
'name' => 'Paramètres Mon Module',
'parent_class_name' => 'AdminParentModulesSf',
'icon' => 'settings',
'visible' => true,
],
[
'class_name' => 'AdminMyModuleStats',
'route_name' => 'admin_mymodule_stats',
'name' => 'Statistiques',
'parent_class_name' => 'AdminMyModuleSettings',
'icon' => 'assessment',
'wording' => 'Statistics',
'wording_domain' => 'Modules.Mymodule.Admin',
],
];
}
public function install(): bool
{
return parent::install() && $this->installer->install();
}
public function uninstall(): bool
{
return $this->installer->uninstall() && parent::uninstall();
}
}
// Exécuter une seule requête avec transaction
$this->installer->executeQuery("UPDATE `{DB_PREFIX}table` SET col = 'value'");
// Exécuter plusieurs requêtes atomiquement
$this->installer->executeQueries([
"INSERT INTO `{DB_PREFIX}table` (col) VALUES ('val1')",
"INSERT INTO `{DB_PREFIX}table` (col) VALUES ('val2')",
"UPDATE `{DB_PREFIX}config` SET value = 'new' WHERE key = 'setting'",
]);
public function getHooks(): array
{
return [
'displayHeader', // Hook d'affichage dans le header
'displayFooter', // Hook d'affichage dans le footer
'displayProductPriceBlock', // Hook sur la page produit
'actionCartSave', // Hook d'action lors de la sauvegarde du panier
'actionOrderStatusUpdate', // Hook lors du changement de statut commande
];
}
public function getTabs(): array
{
return [
[
// Identifiant unique de la classe du contrôleur
'class_name' => 'AdminMyModuleMain',
// Nom affiché dans le menu (peut être un tableau pour multilingue)
'name' => 'Mon Module',
// Classe parente pour la hiérarchie du menu
'parent_class_name' => 'AdminParentModulesSf',
// Icône Material Icons
'icon' => 'extension',
// Visibilité dans le menu
'visible' => true,
],
[
'class_name' => 'AdminMyModuleConfig',
// Route Symfony pour les contrôleurs modernes
'route_name' => 'admin_mymodule_config',
'name' => 'Configuration',
'parent_class_name' => 'AdminMyModuleMain',
'icon' => 'settings',
// Clés de traduction i18n
'wording' => 'Configuration',
'wording_domain' => 'Modules.Mymodule.Admin',
],
];
}
interface InstallerInterface
{
public function install(): bool;
public function uninstall(): bool;
public function installModuleTab(array $tabInfo): int;
public function uninstallModuleTab(string $tabClass): bool;
}
if (!defined('_PS_VERSION_')) {
exit;
}
er;
class ExampleModule extends Module
{
private GriivInstaller $installer;
public function __construct()
{
$this->name = 'examplemodule';
$this->tab = 'front_office_features';
$this->version = '1.0.0';
$this->author = 'Griiv';
$this->need_instance = 0;
$this->ps_versions_compliancy = [
'min' => '1.7.7.0',
'max' => _PS_VERSION_,
];
parent::__construct();
$this->displayName = $this->l('Example Module');
$this->description = $this->l('Un module exemple utilisant GriivInstaller');
$this->installer = new GriivInstaller($this);
}
public function getHooks(): array
{
return [
'displayHeader',
'displayFooter',
'actionFrontControllerSetMedia',
];
}
public function getTabs(): array
{
return [
[
'class_name' => 'AdminExampleModule',
'name' => 'Example Module',
'parent_class_name' => 'AdminParentModulesSf',
'icon' => 'star',
],
];
}
public function install(): bool
{
return parent::install() && $this->installer->install();
}
public function uninstall(): bool
{
return $this->installer->uninstall() && parent::uninstall();
}
// Implémentation des hooks
public function hookDisplayHeader($params)
{
// Votre code ici
}
public function hookDisplayFooter($params)
{
// Votre code ici
}
}
// Dans votre module ou contrôleur
$installer = new GriivInstaller($this->module);
// Requête unique
$success = $installer->executeQuery(
"INSERT INTO `" . _DB_PREFIX_ . "mymodule_log`
(action, date_add) VALUES ('user_action', NOW())"
);
// Requêtes multiples (atomique)
$success = $installer->executeQueries([
"UPDATE `" . _DB_PREFIX_ . "mymodule_config` SET value = '1' WHERE key = 'enabled'",
"DELETE FROM `" . _DB_PREFIX_ . "mymodule_cache`",
"INSERT INTO `" . _DB_PREFIX_ . "mymodule_log` (action) VALUES ('config_reset')",
]);