6 – COMMENT GÉRER L’AFFICHAGE DE VOTRE MODULE EN BACK OFFICE ?

Article publié par :  Patrick Valibus (Google+ Profile) Mis à jour le 8 oct. 2018 (publié depuis le 25 avr. 2013)

Nous allons développer différents points dans cet article autour de la création d’un contenu personalisé dans le backoffice.

  1. Créer un menu dans le backoffice
  2. Créer des droits d’accès pour ce menu
  3. Créer le contenu


CRÉER UN MENU DANS LE BACKOFFICE

Un menu en back office se créer à l’aide du fichier etc/adminhtml.xml . Dans notre exemple nous allons y placer le code suivant:

<?xml version="1.0"?>
<config>
<menu>
<gestion translate="title" module="gestion">
<title>Gestion</title>
<sort_order>35</sort_order>
<children>
<produit translate="title" module="gestion">
<title>Gerer les Produits</title>
<sort_order>10</sort_order>
<action>adminhtml/gestion</action>
</produit>
</children>
</gestion>
</menu>
</config>

Vous pouvez ici voir plusieurs déclarations utilisant le système de traduction vu précédemment.

menu/gestion/title correspond au titre que vous donnez dans la barre de menu en back office

children/produit/title correspond au sous menu de Gestion. On voit que l’action correspond au controllers adminhtml/gestion


CRÉER DES DROITS D’ACCÈS POUR CE MENU

Les droits d’accès dans magento sont paramétrables. Vous pouvez souhaiter ne pas donner l’accès de votre nouveau contenu à tous le monde, si il doit vous servir à lancer des batchs par exemple ou des traitements unitaires. Pour le paramétrage en lui même direction système -> permission -> role ->(selectionner le role) -> role ressource -> ressource access -> custom

Vous retrouverez votre module grace aux intitulés de la déclaration ci-dessous, à placer dans adminhtml.xml après </menu> et avant la fin de </config>

 <acl>
<resources>
<admin translate="title" module="gestion">
<children>
<gestion translate="title" module="gestion">
<title>Gestion</title>
<sort_order>100</sort_order>
<children>
<produit translate="title" module="gestion">
<title>Gerer les Produits</title>
<sort_order>10</sort_order>
</produit>
</children>
</gestion>
</children>
</admin>
</resources>
</acl>

CRÉER LE CONTENU

La partie contenu ressemble en grande partie au front office vu précédemment. Nous allons néanmoins le redétailler. A noter qu’il ne s’agit ici que d’une utilisation simple pour introduire la notion de création dans le back office, magento proposant des options bien plus poussées.

MODIFIER LE CONFIG.XML

Nous allons commencer par déclarer dans notre etc/config.xml la partie routers et layout. Placer donc le code ci dessous dans le fichier après </module> et avant <frontend>

 <admin>
<routers>
<adminhtml>
<args>
<modules>
<gestion before="Mage_Adminhtml">Valibus_Gestion_Adminhtml</gestion>
</modules>
</args>
</adminhtml>
</routers>
</admin>
<adminhtml>
<layout>
<updates>
<valibus_gestion>
<file>gestionad.xml</file>
</valibus_gestion>
</updates>
</layout>
</adminhtml>

METTRE EN PLACE LAYOUT ET TEMPLATE BACKOFFICE

Coté layout le fichier à créer est celui indiqué plus haut, app/design/adminhtml/default/default/layout/gestionad.xml

<?xml version="1.0"?>
<layout version="0.1.0">
<adminhtml_gestion_index>
<reference name="content">
<block type="gestion/adminhtml_gestion" name="afficher_monbloc" template="gestion/voiradmin.phtml" />
</reference>
</adminhtml_gestion_index>
</layout>

Le template se trouve lui dans : app/design/adminhtml/default/default/template/gestion/voiradmin.phtml

<?php
echo $this->voiradminblock();
?>

Jusque là rien de bien nouveau utilisons un code très similaire.

CRÉATION DU BLOCK ADMINHTML

Notre block va reprendre lui aussi une structure quasi identique, Notez que l’extension de la classe mage core block template est ici plus une astuce qu’autre chose, nous verrons plus tard comment étendre la partie Grid, pour gérer les fameux tableau du back office magento. Il faut placer son code dans : Valibus/Gestion/Block/Adminhtml/Gestion.php

<?php
class Valibus_Gestion_Block_Adminhtml_Gestion extends Mage_Core_Block_Template
{
public function voiradminblock()
{
$return='';
$collection=Mage::getModel('gestion/gestion')->getCollection();
foreach($collection as $item){
$return.=Mage::Helper('gestion')->__('sku product')." ".$item->getSkuproduit()."<br />";
}
return $return;
}
}

CRÉATION DU CONTROLLER ADMINHTML

Créer le controller en placant le code dans le fichier: Valibus/Gestion/controllers/Adminhtml/GestionController.php

Notez l’utilisation de activemenu qui permet de garder en orange (par défaut) le lien du menu dans lequel nous nous trouvons.

<?php
class Valibus_Gestion_Adminhtml_GestionController extends Mage_Adminhtml_Controller_Action {
public function indexAction(){
$this->loadLayout();
$this->_setActiveMenu('gestion/produit');
$this->renderLayout();
}
}

CONCLUSION

Ce tutoriel est certe quasi identique, mais il vous permet de lancer différent batch, ou de faire du reporting, ceci en utilisant les différents menu. Nous allons maintenant aborder la partie Grid de magento.

Etape suivante :  7 – Grid Magento, tableau en back office

Votre module nécessite l’intervention d’un expert? nous mettons à votre disposition notre service de  développeur magento !