Comment créer un setup sur Magento ?

setupmagento

Les setup sur Magento vous serviront à exécuter des requêtes SQL sur votre base de données : par exemple lorsque vous voulez ajouter un nouvel attribut produit, ou créer une page CMS.

On distingue deux types de setup à partir de Magento 1.6 :
– Les SETUP SQL : ils doivent être utilisés pour créer des attributs, des tables, ajouter des colonnes… bref, tout ce qu’il peut altérer la structure d’une table.
– Les SETUP DATA : ils doivent être utilisés pour l’insertion de données/contenus, comme des pages ou block CMS, des produits, etc.

Pour nous rapprocher d’un cas concret nous allons créer ensemble dans ce tutoriel une table « blog » et une page CMS.

Création d’un Setup SQL

Nous partirons du principe que vous ayez déjà créer votre module. Pour ceux qui ne savent pas comment faire je vous invite à lire mon tutoriel à ce sujet : Créez votre premier module sur Magento.
Notre module s’appellera Sample_Blog.

1. Déclaration du setup dans le fichier config.xml

Rendez-vous dans le fichier config.xml afin d’y déclarer votre setup :

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Sample_Blog>
<version>0.1.0</version>
</Sample_Blog>
</modules>
<global>
<resources>
<sample_blog_setup>
<setup>
<module>Sample_Blog</module>
</setup>
</sample_blog_setup>
</resources>
</global>
</config>

Vous devez préciser deux choses ici :
– Le numéro de version de votre module, on le réutilisera tout à l’heure.
– La déclaration du setup. Notez que le nom de nœud ‘sample_blog_setup’ est important, nous l’utiliserons comme nom de dossier un peu plus tard.

2. Création du répertoire et du fichier de setup

Il nous faut maintenant créer le répertoire suivant dans notre module (sample_blog_setup, comme précisé dans le config.xml plus haut) :

app/code/local/Sample/Blog/sql/sample_blog_setup/

A l’intérieur de celui-ci nous allons ajouter un nouveau fichier que nous appellerons install-0.1.0.php (notez que nous avons placé le numéro de version du module dans le nom de fichier) :

<?php 
$installer = $this;
$installer->startSetup();
$installer->run("
CREATE TABLE `blog` (
`id` int(11) NOT NULL auto_increment,
`title` text,
`post` text,
`date` datetime default NULL,
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY  (`blogpost_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
");
$installer->endSetup();

Ce fichier créera une nouvelle table ‘blog’ pour l’exemple.

Pour exécuter ce setup il suffit de vous rendre sur n’importe quelle page de votre site, ce code sera exécuté en « arrière plan », ça sera entièrement transparent pour vos clients (veillez tout de même à vider votre cache si votre setup ne s’exécute pas !).

Si jamais vous vouliez ajouter un deuxième setup sql à votre module il vous faire deux choses :
– Changer le numéro de version de module dans le config.xml (pour 0.1.1 par exemple)
– Créer le fichier upgrade-0.1.0-0.1.1.php dans le répertoire sql/sample_blog_setup. Le nom du fichier se compose de l’ancien numéro de version (0.1.0), tiret le nouveau numéro de version (0.1.1).

Passons maintenant à la création du deuxième type de setup.

Création d’un Setup DATA

Dans cet exemple nous allons ajouter une page CMS à notre projet.
Attention votre version de Magento doit être au minimum 1.6 pour que cela fonctionne.

1. Déclaration du setup dans le fichier config.xml

La première étape est identique à celle d’un setup sql (voir point numéro 1 au dessus). Inutile de refaire ce point si vous aviez déjà créer un setup sql.

2. Création du répertoire et du fichier de setup

Il nous faut maintenant créer le répertoire suivant dans notre module (sample_blog_setup, comme précisé dans le config.xml plus haut) :

app/code/local/Sample/Blog/data/sample_blog_setup/

Notez que cette fois-ci nous somme dans le répertoire « data » et non plus « sql« .

A l’intérieur de celui-ci nous allons ajouter un nouveau fichier que nous appellerons data-install-0.1.0.php (notez que nous avons placé le numéro de version du module dans le nom de fichier) :

<?php 
$installer = $this;
$installer->startSetup();
$newBlock = Mage::getModel('cms/page')
->setTitle('Test CMS Page Title')
->setContent('Hello Im a new cms page.')
->setIdentifier('this-is-the-page-url')
->setIsActive(true)
->save();
$installer->endSetup();

Ce fichier créera une nouvelle page CMS pour l’exemple.

Comme pour le premier type de setup (sql), il suffit de vous rendre sur n’importe quelle page de votre site, ce code sera exécuté en « arrière plan ».

Si jamais vous vouliez ajouter un deuxième setup data à votre module il vous faire deux choses :
– Changer le numéro de version de module dans le config.xml (pour 0.1.1 par exemple)
– Créer le fichier data-upgrade-0.1.0-0.1.1.php dans le répertoire data/sample_blog_setup. Le nom du fichier se compose de l’ancien numéro de version (0.1.0), tiret le nouveau numéro de version (0.1.1).

Nicolas Verhoye

Développeur Magento, Freelance

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *