Forums / Developer / Attribute Filter in Fetch Function

"Please Note:
  • At the specific request of Ibexa we are changing this projects name to "Exponential" or "Exponential (CMS)" effective as of August, 11th 2025.
  • This project is not associated with the original eZ Publish software or its original developer, eZ Systems or Ibexa".

Attribute Filter in Fetch Function

Author Message

Bayron Guevara

Friday 07 December 2007 7:49:33 am

Hello!
I have a problem when I want to fetch nodes , filtering by a related object attribute, I don´t know what to write in the comparison. The code is following:

    {def $secc_rel = $node.data_map.seccion_relacionada}

     {***Extrae una lista de las noticias de esta seccion para el dia especificado***}
     {def $noticias = fetch('content', 'list', hash('parent_node_id', $nodo_edicion.node_id,
								 'attribute_filter', array( array('noticia_principal/seccion_relacionada', '=', $secc_rel) ) ) )}

Web Developer & Modern Philosopher
Visit http://www.laprensa.hn, http://www.diez.hn, http://www.estilo.hn

Paul Leclercq

Friday 07 December 2007 10:30:49 am

Hello Bayron,

It isn't possible to use attribute_filters for fetch 'lists' of ObjectRelationLists:
http://ez.no/developer/forum/setup_design/objectrelationlist_and_attribute_filter

So if you have more than one object related to your object then you will need to find another solution:

That way you can maybe try using an operator and use this function:
http://pubsvn.ez.no/doxygen/trunk/html/classeZContentObjectTreeNode.html

 $node_array =& eZContentObjectTreeNode::subTree(
        array( 'Depth' => 1,
               'Limit'            => 50,
               'Offset'           => 0,
               'SortBy'           => array( 'published', 1 ),
               'DepthOperator'    => 'eq',
               'ClassFilterType'  => 'include',
               'ClassFilterArray' =>  array('comment')
               ), $nodeID );

Function which works in a similar way as fetch('content', 'list' ....
You can then try and filter your results related attributes or order them using classic php functions.

Nicolas Lescure

Friday 07 December 2007 12:08:08 pm

I use this on eZ 3.9.2 :
http://ez.no/developer/contribs/datatypes/enhanced_objectrelation (<b>download the svn version :</b>
http://pubsvn.ez.no/community/trunk/extension/enhancedobjectrelation)

Then you'll need an extended attribute filter to use it.

Which version of eZ do you use ?
If your eZ is not a 3.9.10 you'll have to make a little hack for the kernel to add a "distinct" in the query generated.

Bayron Guevara

Monday 10 December 2007 7:26:42 am

Hello, Paul Leclercq.
Thank you for your collaboration, but I want to filter a <i>unique</i> related object, which is permitted.
See bellow:

Filtering on the attribute level is supported for the following datatypes:
• Checkbox
• Date
• Date and time
• E-mail
• Integer
• <b>Object relation</b>
• Selection (will not work when used as multiple selector)
• Text line
• Time

Again, How can I do a single related object filter?

Something more, I was reading the class code than you suggest me, I think than its parameters are similiar to fetch function, except than it uses php code, I am in the right thing?

Web Developer & Modern Philosopher
Visit http://www.laprensa.hn, http://www.diez.hn, http://www.estilo.hn

Paul Leclercq

Tuesday 11 December 2007 1:13:10 am

You need to make sure you have the correct datatype, an object relation List returns an array of objects while an Object Relation Returns a single Object, not only make sure you have one object. You can make sure you have the correct datatype while editing your class in the administration interface->administration->class.

You should then be able to use the attribute_filters in the same way as for other types of attributes, other examples are shown on this page:
http://ez.no/doc/ez_publish/technical_manual/3_9/reference/modules/content/fetch_functions/list

'attribute_filter', array( 'or',
                                        array( 152, '=', 'abc' ),
                                        array( 153, '=', '42' ) 

The php code I gave out, is indeed, to create a custom fetch function by using an operator with php code. Although I read yesterday that it was no longer possible to use the static version of subtree() in ez4:
http://serwatka.net/index.php/en/blog/ez_publish_4_0_post_release_notes

Bayron Guevara

Tuesday 11 December 2007 2:49:51 pm

Paul, the datatype than I'm utilizing is <i>Object Relation</i>, no a Object Relation list. The examples than you give me a link, don't include this datatype. Thank you for your help, but I still don't found a simple solution.

Web Developer & Modern Philosopher
Visit http://www.laprensa.hn, http://www.diez.hn, http://www.estilo.hn