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 :

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 :

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() ) )}
 

Bookmark and Share

Commentaires

#1 - Le 01 mai 08 par frefred

MySQL

en fait, on ne créé pas vraiment de requête SQL, on ajoute plutôt des conditions à la requête que le fetch crée ( clause WHERE ).

Selon ta version de MySQL, tu peux toujours faire une requête imbriquée,

#2 - Le 01 mai 08 par soon7

petite précision

Bonjour,
Pour que ton exemple puisse fonctionner correctement, il faut se baser sur le code de l'exemple du site de ez , non ?
http://ez.no/doc/ez_publish/techn...ntent/fetch_functions/list#example19
En gros si je comprends bien on définit une classe qui correspond à un extended_attribute_filter_name, par la création de cette classe on va pouvoir coder une requete mysql à laquelle on pourra passer des variables.
J'ai bon, docteur ?

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2010 eZ Systems AS (except where otherwise noted). All rights reserved.