Extension interne du système cœur OTOBO
Extension interne du système cœur OTOBO
Section intitulée « Extension interne du système cœur OTOBO »Dans cet article, vous apprendrez à personnaliser OTOBO directement au niveau du cœur – via la configuration XML, les modules Perl et les templates. Nous vous montrons étape par étape comment intégrer votre propre module « HelloWorld » dans le système.
1. Structure des répertoires
Section intitulée « 1. Structure des répertoires »Toutes les personnalisations se trouvent sous votre clone OTOBO dans le répertoire Kernel/ :
Kernel/├─ Config/Files/ # Enregistrements XML│ └─ XML/├─ System/ # Modules de logique métier (Core)├─ Modules/ # Contrôleurs Frontend (Agent/Customer)├─ Output/HTML/Standard/ # Templates Template Toolkit (TT)└─ Language/ # Traductions2. Configuration XML
Section intitulée « 2. Configuration XML »Les nouveaux modules et routes sont enregistrés via XML. Créez un fichier HelloWorld.xml dans Kernel/Config/Files/XML/ :
<?xml version="1.0" encoding="UTF-8"?><otobo_config version="2.0" init="Application">
<!-- 1. Enregistrer le module Frontend --> <Setting Name="Frontend::Module###AgentHelloWorld" Required="1" Valid="1"> <Navigation>Frontend::Agent::ModuleRegistration</Navigation> <Value> <Item ValueType="FrontendRegistration"> <Hash> <Item Key="Group"><Array><Item>users</Item></Array></Item> <Item Key="Description" Translatable="1">Module HelloWorld</Item> <Item Key="Title" Translatable="1">HelloWorld</Item> <Item Key="NavBarName">HelloWorld</Item> </Hash> </Item> </Value> </Setting>
</otobo_config>3. Module Core (Logique métier)
Section intitulée « 3. Module Core (Logique métier) »Créez votre logique dans Kernel/System/HelloWorld.pm :
package Kernel::System::HelloWorld;use strict;use warnings;our @ObjectDependencies = ();
sub new { my ($Type, %Param) = @_; return bless {}, $Type;}
sub GetHelloWorldText { my ($Self, %Param) = @_; return $Self->_FormatText(String => 'Hello World');}
sub _FormatText { my ($Self, %Param) = @_; return uc $Param{String};}
1;4. Module Frontend (Contrôleur)
Section intitulée « 4. Module Frontend (Contrôleur) »Dans Kernel/Modules/AgentHelloWorld.pm, vous intégrez votre logique dans le Frontend Agent :
package Kernel::Modules::AgentHelloWorld;use strict;use warnings;
sub new { bless {}, shift }
sub Run { my ($Self, %Param) = @_;
my $HelloObj = $Kernel::OM->Get('Kernel::System::HelloWorld'); my $LayoutObj = $Kernel::OM->Get('Kernel::Output::HTML::Layout'); my %Data;
$Data{Text} = $HelloObj->GetHelloWorldText();
return $LayoutObj->Header(Title => 'HelloWorld') . $LayoutObj->NavigationBar() . $LayoutObj->Output( TemplateFile => 'AgentHelloWorld', Data => \%Data, ) . $LayoutObj->Footer();}
1;5. Templates (TT)
Section intitulée « 5. Templates (TT) »Créez le template suivant dans Kernel/Output/HTML/Standard/AgentHelloWorld.tt :
[% Data.Text %]
<p>Ceci est votre module HelloWorld créé par vous-même !</p>6. Workflow d’exemple
Section intitulée « 6. Workflow d’exemple »-
Recharger :
Fenêtre de terminal bin/otobo.Console.pl Maint::Config::Rebuild -
Vider le cache :
Fenêtre de terminal bin/otobo.Console.pl Maint::Cache::Delete -
Ouvrir le navigateur : Interface Agent → Menu → « HelloWorld »
7. Conseils & Best Practices
Section intitulée « 7. Conseils & Best Practices »- Déclarer proprement les ObjectDependencies (ex: DB, Layout).
- Ne pas oublier la documentation POD dans les modules Perl.
- Gérer les traductions sous
Kernel/Language/fr_*.pm. - Configurer des tests unitaires avec Mojolicious (optionnel).
- Après chaque modification, effectuer un Config rebuild & vider le cache.
Vous disposez désormais d’un modèle solide pour réaliser d’autres extensions du cœur dans OTOBO. Bon développement !