content_actionhandler.php: <?php /* #?ini charset="iso-8859-1"? #Filter Name: [user_is_enabled] #Where it is stored (our current extension) ExtensionName=intranet #The name of the class in which we will store the filter ClassName=UserFilters #The method which will create the custom SQL MethodName=user_is_enabled #The location of the class file (from the root of the extension). FileName=classes/userfilters.php */ ?> userfilters.php <?php class UserFilters { /* Our Constructor */ function UserFilters() { // We don't need anything here } function currentlyLoggedIn( $params )//note the passing in of parameters, we'll look at these later { //our filter functionality to go here! } function user_is_enabled( $params )//note the passing in of parameters, we'll look at these afterwards { eZDebug::writeNotice("Running user_is_enabled Extended Attribute Filter","User Filters");//this makes sure we can easily find the related SQL in our page debug $sql_tables = ', ezuser_setting';//Make sure you start with a comma as our tables list comes after the usual list of tables in the fetch. $sql_joins = 'ezuser_setting.user_id=ezcontentobject.id AND ezuser_setting.is_enabled=1 AND';//ensure you add a trailing "AND" for other conditions used in the fetch statement return array( 'tables' => $sql_tables, 'joins' => $sql_joins );//return the data for eZ in an array } } ?> in template file: 'extended_attribute_filter',hash( 'id', 'user_is_enabled', 'params', hash( ) ),