Darathor
Citation :
But : Ce tutoriel a bour but d'ajouter à un module la possibilité de le désactiver via le panneau d'administration.
Prérequis :
- connaissance correcte du langage php et de la programmation en général.
Remarque :
Ce tutoriel se veut clair mais ne constitue qu'une ligne directrice et en aucun cas une solution toute faite. Si vous avez des questions ou des remarques, n'hésitez pas à me les poser par mail où sur ce forum http://admforum.edforum.net (le forum étant un moyen plus sûr d'avoir une réponse que le mail).
Auteur : Darathor (darathor@free.fr)
Version : 1.0 (15/10/2005)
Compatibilité phpBB : 2.0.17
0) Préalable :
Dans la suite, on appellera cond_mod le nom de la condition d'activation du MOD. Il faudra donc la remplacer dans tout ce qui suit par une chaine de caractères, par exemple, activer_avatars, pour un mod qui désactiverait l'affichage des avatars. Attention à prendre un nom assez représentatif et qui ne se retrouve pas déjà dans la table phpbb_config. On appellera également NOM_DU_MOD le nom du mod auquel on ajoute cette désactivation.
Enfin, avant de commencer sauvegarder la base de données et le script du forum au cas où.
1) Ajouter la ligne correspondante dans la table de configuration.
Pour cela exécuter la requête suivant (en remplaçant cond_mod par sa valeur) :
Citation :
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ('cond_mod', '1');
2) Ajout de l'option dans le panneau d'admin.
-> Ajout de la gestion dans le fichier php.
Dans "admin/admin_board.php" :
Citation :
#
# Trouver
#
"L_RESET" => $lang['Reset'],
#
# Ajouter après
#
// FIN MOD NOM_DU_MOD
"L_cond_mod" => $lang['cond_mod_question'],
"L_cond_mod_EXPLAIN" => $lang['cond_mod_question_explain'],
// FIN MOD NOM_DU_MOD
#
# Trouver
#
"COPPA_MAIL" => $new['coppa_mail'],
#
# Ajouter après
#
// DEBUT MOD NOM_DU_MOD
"cond_mod_YES" => ($new['cond_mod']) ? "checked=\"checked\"" : "",
"cond_mod_NO" => (!$new['cond_mod']) ? "checked=\"checked\"" : "",
// FIN MOD NOM_DU_MOD
-> Compléter le .tpl pour ajouter les cases à chocher.
Dans "templates/subSilver/admin/board_config_body.tpl" :
Citation :
#
# Trouver
#
<tr>
<th class="thHead" colspan="2">{L_COOKIE_SETTINGS}</th>
</tr>
#
# Ajouter avant
#
<!-- DEBUT MOD NOM_DU_MOD -->
<tr>
<td class="row1">{L_cond_mod}<br /><span class="gensmall">{L_cond_mod_EXPLAIN}</span></td>
<td class="row2"><input type="radio" name="cond_mod" value="1" {cond_mod_YES} />{L_YES} <input type="radio" name="cond_mod" value="0" {cond_mod_NO} />{L_NO}</td>
</tr>
<!-- FIN MOD NOM_DU_MOD -->
-> Ajouter les textes explicatifs dnas le fichier de langues. Ces modification sont à effactuer pour chaque langue installée.
Dans "lang_admin.php" :
Citation :
#
# Trouver
#
?>
#
# Ajouter avant
#
// DEBUT MOD NOM_DU_MOD
$lang['cond_mod_question'] = 'Activer NOM_DU_MOD';
$lang['cond_mod_question_explain'] = 'Explication sur ce que fait le mod (optionnel)';
// FIN MOD NOM_DU_MOD
3) Modification du code du MOD.
C'est la partie la plus délicate, puisqu'il s'agit de savoir exactement quoi mettre dans les conditionnelles. Dans les cas les plus simples, il suffit de mettre toutes les portions ajoutées par le MOD mais quand le MOD remplace des portions de code, c'est à voir au cas par cas.
Une fois les portions identifiées, il suffit de les encadrer par, d'une manière générale :
-> Cas où le MOD ajoute du code :
Citation :
// DEBUT MOD NOM_DU_MOD
if($board_config['cond_mod'])
{
[... Code ajouté par le MOD ...]
}
// FIN MOD NOM_DU_MOD
-> Cas où le mod remplace du code :
Citation :
// DEBUT MOD NOM_DU_MOD
if($board_config['cond_mod'])
{
[... Code ajouté par le MOD ...]
}
else
{
[... Code supprimé par le MOD ...]
}
// FIN MOD NOM_DU_MOD
Ceci n'est évidemment qu'un modèle général qui ne marchera pas pour tous les MODs et devra souvent être un peu adapté.