Extended Attribute Filter
Publié le 08 septembre 2007 | 2 commentaire(s) | Tags : documentation , mysql |
eZ publish nous permet de récuperer certains éléments grâce à la fonction fetch. Pour cette fonction, il est possible de ne sélectionner que certains éléments, en utilisant le paramètre attribute_filter . Le paramètre attribute_filter ne permet pas de faire toutes les restrictions que l'on veut, d'où l'apparition de l' extended attribute filter .
Configuration de l'extended attribute filter
Pour créer un extended attribute filter, qui sera réutilisable facilement sur nos sites, nous allons commencé par créer une nouvelle extension. Cette extension doit contenir deux dossiers :
- settings
- classes ( nom par défaut dans eZ publish )
Pour déclarer notre extended attribute filter , nous allons créer un fichier nommé extendedattributefilter.ini.append.php dans le dossier settings.
La déclaration d'un extended attribute filter se fait par le biais de 4 lignes de code :
[extended_attribute_filter_name] ExtensionName=extensionname ClassName=classname MethodName=methodname FileName=filename ( classes/file.php)
Une fois la déclaration de notre extended attribute filter fini, nous allons commencé par créer notre fichier php.
Création de l'extended attribute filter
Pour créer le code pour l'extended attribute filter, on va commencer par créer un fichier php dans le répertoire classes, et nous allons commencer par le remplir selon ce que nous avons déclaré dans le fichier de settings.
<? class classname { function classname() { // empty } function methodname( $params ) { // Your code } } ?>
L'extended attribute filter est tout simplement un ajout dans la requête sql. Notre méthode methodname doit retourner un tableau de type associatif, contenant deux champs :
- la cellule tables : les tables à rajouter dans la requête
- la cellule joins : les lignes sql contenant les jointures ou restrictions.
Utilisation de l'extended attribute filter
Voici un exemple de code pour utiliser notre extended attribute filter :
{fetch( 'content', 'list', hash( 'parent_node_id', 2, 'sort_by', array( 'priority', false() ), 'limit', 15, 'extended_attribute_filter', hash( 'id', 'extended_attribute_filter_name', 'params', hash( 'value1', 15, 'value2', 30 ) ), 'depth', 10, 'main_node_only', true() ) )}
Commentaires
#1 - Le 01 mai 08 par frefred
#2 - Le 01 mai 08 par soon7