Découvrez de façon très simple les actualités et la vie de ce site.

Tutoriel Prestashop – Utiliser la configuration

12

Introduction

La configuration est un élément clé de toutes solutions web.
C’est pour cette raison que je vais tenter de vous présenter ici le système de configuration de Prestashop.

Architecture

L’architecture pour la configuration dans Prestashop est très simple !
Celle-ci repose sur deux tables MySQL (configuration et configuration_lang) dans la base de données et d’un fichier situé dans classes/Configuration.php.
Ce fichier contient une classe Configuration héritant du modèle objet (prochain tutoriel) de Prestashop.

Configuration

Utilisation Simple

Nous allons voir maintenant comment utiliser la configuration.

Écriture d’une clé

Pour ceci, c’est très simple, nous utilisons la méthode statique updateValue qui prend deux paramètre (nom de la clé et valeur).

<?php
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/init.php';
 
// Enregistrement d'une clé
Configuration::updateValue('JBX_MY_FRIST_KEY', 'Hello Word !');

Lecture d’une clé

Pour lire cette clé, nous utilison la méthode statique get acceptant un seul paramètre (nom de la clé).

<?php
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/init.php';
 
// Lecture d'un clé
$valeur = Configuration::get('JBX_MY_FRIST_KEY');
echo $valeur; // Hello Word !

Lecture de plusieurs clés

Pour lire plusieurs clés, vous devez utiliser la méthode statique getMultiple qui accepte un paramètre (tableau de clés).

<?php
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/init.php';
 
// Lecture de plusieurs clés
$cles = array('JBX_MY_FRIST_KEY', 'JBX_MY_SECOND_KEY');
$valeurs = Configuration::getMultiple($cles);
echo implode(',', $valeurs); // Hello Word !, Hello Word 2 !

Suppression d’une clé

Pour supprimer une clé, encore une fois, c’est très simple

<?php
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/init.php';
 
// Suppression d'une clé
Configuration::deleteByName('JBX_MY_FRIST_KEY');

Utilisation avec traduction

L’utilisation avec la traduction est sensiblement la même que précédemment hormis un détail…

Écriture d’une clé avec traduction

<?php
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/init.php';
 
// Enregistrement d'une clé en Anglais (1) et en Français (2)
$valeurs = array(
  1 => 'Hello word !',
  2 => 'Bonjour le monde !',
);
Configuration::updateValue('JBX_MY_FRIST_KEY', $valeurs);

Lecture d’une clé avec traduction

Pour lire une clé dans une langue, utilisez le troisième paramètre (identifiant de la langue).

<?php
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/init.php';
 
// Lecture d'une clé en Anglais (1) et en Français (2)
$valeur_en = Configuration::get('JBX_MY_FRIST_KEY', 1);
echo $valeur_en; // Hello word !
$valeur_fr = Configuration::get('JBX_MY_FRIST_KEY', 2);
echo $valeur_fr; // Bonjour le monde !

Lecture de plusieurs clés avec traduction dans un seule langue

Pour lire plusieurs clés, vous devez utiliser la méthode statique getMultiple qui accepte deux paramètres (tableau de clés, identifiant de la langue).

<?php
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/init.php';
 
// Lecture de plusieurs clés
$id_lang = 2; // Français (2)
$cles = array('JBX_MY_FRIST_KEY', 'JBX_MY_SECOND_KEY');
$valeurs = Configuration::getMultiple($cles, $id_lang);
echo implode(',', $valeurs); // Bonjour le monde !, Bonjour le monde 2 !

Lecture de plusieurs clés avec traduction dans toutes les langues

Pour lire plusieurs clés, vous devez utiliser la méthode statique getMultipleInt qui accepte un paramètre (tableau de clés).

<?php
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/init.php';
 
// Lecture de plusieurs clés
$cles = array('JBX_MY_FRIST_KEY', 'JBX_MY_SECOND_KEY');
$valeurs = Configuration::getMultipleInt($cles);
echo $valeurs[1]['JBX_MY_FRIST_KEY']; // Hello World !
echo $valeurs[2]['JBX_MY_SECOND_KEY']; // Bonjour le monde 2 !

Astuces

La méthode statique updateValue acceptent un troisième paramètre (enregistrer du html ?)

<?php
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/init.php';
 
$valeur = '<b>Je suis en gras !</b>';
Configuration::updateValue('JBX_MY_HTML_KEY', $valeur, true);

La solution utilise une méthode statique nommée loadConfiguration() qui charge l’ensemble de la configuration en cache.

Conclusion

C’est à peu prêt tout ce qu’il faut savoir sur la configuration, normalement, on a fait le tour.
Amusez-vous bien….

Ha… si, juste un truc ! L’abus de configuration n’est pas dangereuse pour la santé… pour votre santé, mangez, bougez, configurez !!

12 Résponses

  1. question a 10 cts:
    a quoi cela sert :-)

  2. Et bien pour les développeurs à agir avec le système de configuration de Prestashop.

  3. Bonjour,
    je sais que ce n’est pas le bon endroit, j’ai bien lu ton tuto (très intéressant pour moi).
    J’ai un soucis, je n’arrive pas a trouver la variable qui m’indique si mon panier est vide ou pas.
    Je voudrai récupérer cette variable et faire le test sur ma page product pour afficher des messages supplémentaire (voir enlever le bouton ajouter si le produit n’est pas du meme fournisseur).
    D’avance merci

  4. un vrai pro ^^ manque plus qu un tuto pour s auto faire un logo

  5. ^^ Merci Allison, une demoiselle sur le blog, il me semble me rappeler que…. c’est rare. :-)

    Les tuto pour les logos, c’est plus du Prestashop

  6. Bonjour,

    Ce n’est pas une variable, mais un objet, dans PHP :
    global $cart;
    if ($cart->nbProducts()) {
    echo ‘Il y a ‘ . $cart->nbProducts() . ‘produit’ . (($cart->nbProducts() > 1) ? ‘s’ :  »);
    }

  7. Merci Julien, c’est très éclairant et formateur!

  8. Merci pour ce tuto.
    A l’utilisation, je me pose des questions… N’y-a-t-il pas une histoire de latence? Dans mon exemple, j’utilise un formulaire pour stocker des infos en base via Configuration mais lorsque dans le script, j’essaye de récupérer la valeur passée, ça ne fonctionne pas. Je suis obligé de rafraichir la page pour que ça marche… En espérant avoir été clair et si tu as envie de répondre.
    Axi

  9. En fait ça marche bien si la variable est déja crée. Si on la crée au moment du post du formulaire, il y a latence et ça ne fonctionne pas.

  10. merci pour le tuto c’est bien rédigé :) j’ai une petite demande Mr Julien, est-il possible nous faire un tuto qui nous permet de comprendre comment fonctionne un thème sous prestashop? et comment chacun pourra créer son propre template? et comment changer le css et les positions des modules? merci pour l’intention que vous portez à ma petite demande :)
    cordialement,
    zhir

  11. Super tuto !

    il faut bien nommer ses variables pour ne pas se retrouver avec des modules utilisant des variables de même noms…

Laisser une réponse

Votre adresse e-mail ne sera pas publiée. Les champs requis sont marqués par *

*
*