Voici la structure d'un module nommé "faqnew" :
└── faqnew
├── admin-fields.php
├── admin.php
├── classes
│ └── modtest.class.php
└── config.php
Le fichier config.php contient les informations à afficher dans l'interface d'adminisation :
$mod['name'] = 'Mon Module de test';
$mod['desc'] = 'Ce module permet de gérer ...';
$mod['fa-icon'] = 'question-circle';
$mod['version'] = '1.0';
Notez que le versionning de module n'est pas géré pour le moment.
Il contient également le menu à afficher dans l'interface d'administration !
$mod['bo-hook'] = ['lib' => 'FAQNEW',
'icon' => 'question-circle',
'links' => [['link' => '/modules/faqnew/admin.php', 'lib' => 'Liste']
,['link' => '/modules/treeview/treeview.php?parent-hook=' . $mod['parent-hook'], 'lib' => 'Catégories']
]
];
Attention !
Que le module soit un module Gabox ou utilisateur (stocké dans le répertoireusr/monsite
), les liens définis dans les entrées de tableaulink
doivent avoir le même format :
/modules/nom_module/...
Gabox réécrit automatiquement les liens des modules utilisateur en
/modules/usr/monsite/nom_module/...
pour qu'ils soient compatibles avec la directive AliasMatch : voir ici pour plus de détails sur cette directive.
config.php contient également les scripts SQL d'installation et de désinstallation du module dans l'interface de gestion des modules.
$mod['sql'][] = "
CREATE TABLE IF NOT EXISTS `gen_faqnew` (
`id_faqnew` int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`id_sites` mediumint(8) UNSIGNED NOT NULL,
`lib` mediumtext NOT NULL,
`content` mediumtext NOT NULL,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT NULL,
`enabled` tinyint(1) DEFAULT '0',
`url` varchar(1024) DEFAULT '',
`hit` int(11) UNSIGNED NOT NULL DEFAULT 0,
FOREIGN KEY (id_sites) REFERENCES gen_sites(id_sites),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
";
$mod['sql'][] = "
CREATE TABLE IF NOT EXISTS `gen_faqnew_url` (
`id_faqnew_url` int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`id_locale` int(11) NOT NULL,
`id_site` mediumint(8) UNSIGNED NOT NULL,
`id_faqnew` int(11) UNSIGNED NOT NULL,
`is_canonical` tinyint(1) DEFAULT '0',
`url` varchar(1024) NOT NULL,
FOREIGN KEY (id_site) REFERENCES gen_sites(id_sites),
FOREIGN KEY (id_faqnew) REFERENCES gen_faqnew(id_faqnew),
KEY `getCanonicalFront` (`id_locale`,`id_site`,`is_canonical`,`id_faqnew`),
KEY `id_locale` (`id_locale`,`url`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
";
$mod['unsql'][] = "DROP TABLE gen_faqnew_url;";
$mod['unsql'][] = "DROP TABLE gen_faqnew;";
Via le fichier admin-fields.php
, vous pouvez créer des champs de modification en base.
Vous pouvez utiliser la fontion libField pour un nommage différent de 'lib' de votre table.