Accueil
Documentation PHPBoost
Développement
Classe Categories_management
Classe Categories_management - conditions à respecter
Documentation PHPBoost
Développement
Classe Categories_management
Classe Categories_management - conditions à respecter
Classe Categories_management - conditions à respecter
Table des matières
Introduction
Bien que cette classe soit générique, elle nécessite pour son fonctionnement quelques éléments particuliers, notamment dans les fichiers cache et base de données. Nous allons voir tout cela en détails.
Il est ici nécessaire que vous ayez un fichier cache contenant vos catégories, sans lequel le traitement de ces dernières se faisant par parcours récursif) est très lourd à mettre en place.
Contraintes sur la base de données
Les catégories sont enregistrées dans la base de données. Vous devez faire une table contenant les catégories (une catégorie par entrée) que vous appellerez comme vous le souhaitez. Voici les conditions que vous devez respecter sur les champs de cette table. Vous devez avoir les champs suivants :
- id de type integer (int sur MySQL). Ce champ représente l'identifiant numérique de chaque catégorie. Il doit être une clé primaire en auto-incrémentation.
- id_parent de type integer (int sur MySQL). Ce champ contient le numéro de la catégorie parente (la catégorie dans laquelle elle est). Il vaut 0 si la catégorie est à la racine de l'arbre.
- c_order de type integer (int sur MySQL). Ce champ contient l'ordre des catégories au sein de la même catégorie.
- visible de type boolean (tynint 2 sur MySQL). Ce champ est un booléen permettant de déterminer si la catégorie est visible ou non (si elle est invisible elle est considérée comme désactivée).
- name de type varchar. Ce champ contient le nom de chaque catégorie.
Votre table doit contenir ces champs, mais vous êtes libres d'en rajouter d'autres.
Si vous gérez des autorisations spéciales pour chaque catégorie il est fortement conseillé de strocker cette valeur dans un champ que vous appellerez auth, la classe saura interpréter ces permissions, par exemple sur la génération de formulaires de sélection d'une catégorie.
Contraintes sur la forme du cache
Théorie
Pour utiliser cette classe de gestion de catégories il faut absolument avoir un fichier cache stockant les catégories. Nous allons voir ce qu'il doit contenir au minimum.
Les catégories sont stockées dans un tableau (array). Celui-ci doit associer les propriétés de chaque catégorie (valeur) aux numéros des catégories (clés). Autrement dit la clé doit être ce que contient le champ id dans la base de données alors que la valeur est à nouveau un tableau contenant toutes les autres informations concernant la catégorie. Ce tableau doit être classé dans l'ordre des catégories pour chaque catégorie (soit ORDER BY id_parent, c_order à placer dans la requête).
Ce tableau doit contenir des éléments de la forme suivante :
| Clé | Valeur associée |
|---|---|
| numéro de la catégorie (champ id de la table) | id_parent provenant du champ id_parent de la table |
| name provenant du champ name de la table | |
| order provenant du champ c_order de la table | |
| visible provenant du champ visible de la table |
N'oubliez pas d'ordonner ces valeurs, c'est primordial pour un bon fonctionnement de la classe. Ceci se fait simplement en ajoutant ORDER BY id_parent, c_order à placer dans la requête de sélection dans la table. Toutes les catégories de la table doivent être présentes dans ce fichier.
Un exemple pratique : le fichier cache du module FAQ
Vous trouverez plus de renseignements sur le fonctionnement le cache sur PHPBoost dans la documentation de la classe Cache. Voici un extrait du fichier de régénération du cache de la FAQ concernant la création de la variable concernant les catégories infinies.
Code PHP :
//Création du tableau contenant les renseignements sur les catégories $string .= '$FAQ_CATS = array();' . "\n\n"; $string .= '$FAQ_CATS[0] = ' . var_export($root_config, true) . ';' . "\n"; $result = $Sql->Query_while("SELECT id, id_parent, c_order, auth, name, visible, display_mode, image, num_questions, description FROM ".PREFIX."faq_cats ORDER BY id_parent, c_order", __LINE__, __FILE__); // /!\On ordonne correctement/!\ while ($row = $Sql->Sql_fetch_assoc($result)) { $string .= '$FAQ_CATS[' . $row['id'] . '] = ' . var_export(array( 'id_parent' => $row['id_parent'], 'order' => $row['c_order'], 'name' => $row['name'], 'desc' => $row['description'], 'visible' => (bool)$row['visible'], 'display_mode' => $row['display_mode'], //Champ propre à la FAQ 'image' => $row['image'], //Champ propre à la FAQ 'num_questions' => $row['num_questions'], //Champ propre à la FAQ 'description' => $row['description'], //Champ propre à la FAQ 'auth' => unserialize($row['auth']) //Champ propre à la FAQ mais géré partiellement par la classe ), true) . ';' . "\n"; }
Comment donner ces informations à la classe ?
Lorsque vous instanciez cette classe dans un objet, vous appelez son constructeur. Vous devez lui passer en paramètre le nom de la table dans laquelle vous stockez vos catégories ainsi que la variable contenant les catégories, pour cela voir la documentation du constructeur de la classe Categories_management.
Cette page a été vue 86 fois
PHPBoost
Télécharger
Documentation
Dossiers
Communauté


PHPBoost
Support
Ressources
Développement
Communauté
Outils
Contribuer