Sorting objects based on attribute (not in fetch though)

Author Message

Kedar Deshpande

Saturday 23 January 2010 10:41:19 am

Hi, this question has been asked in the past but is usually solved by a sort_by in the fetch command. Another well known problem is the fact that you cant do an attribute sort when using the reverse_related_objects function other than the publish_date, modified_date etc.

In this post:

http://share.ez.no/forums/setup-design/fetch-reverse-related-objects-and-sort_by-attribute

someone mentions creating a custom template function like:

$sorted = {$unsorted|sort('your_attribute',true())}

Has anyone created such a function that they could share? Any function that sorts a collection of objects would help.

thanks.

Carlos Revillo

Saturday 23 January 2010 12:09:14 pm

you can try with an extended attribute filter then. use your sql debug output to see how normal reverse_related_objects works and do something similar with your extended attribute filter.

for extended_attribute_filter you can have a look at ezstarrating extension.

about template function, i wouldn't go like that. i mean, it seems you're doing the database query and then ordering the results, but with an extended_attribute_filter you can just the results sortered. better for perfomance i think.

Kedar Deshpande

Saturday 23 January 2010 2:09:16 pm

Thanks Carlos, I'll check out the extended attribute filter and see if I can make it do sorting on this specific attribute I have. I also appreciate the feedback on the template function idea, it does make more sense to do the sort on the fetch.

Carlos Revillo

Sunday 24 January 2010 2:07:24 am

Sure. suppose you have a 10.000 objects, but you only need to show 10 of them ordered by one of the attrs. usign that template custom operator, you will have to get all of 10.000 and then php will sort them. then you will have to use some kinda array_slice operator to get only 10.

you can certainly do all those steps in just one query.

Alex Kozeka

Tuesday 05 July 2011 3:08:42 am

Hi Carlos,

Maybe you find this extension useful:

http://projects.ez.no/sortobjectsoperators

--
Argentea S.p.A., http://www.argentea.it/

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

eZ debug

Timing: Jan 18 2025 02:52:47
Script start
Timing: Jan 18 2025 02:52:47
Module start 'layout'
Timing: Jan 18 2025 02:52:47
Module start 'content'
Timing: Jan 18 2025 02:52:48
Module end 'content'
Timing: Jan 18 2025 02:52:48
Script end

Main resources:

Total runtime1.2200 sec
Peak memory usage4,096.0000 KB
Database Queries66

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0037 588.1563152.6563
Module start 'layout' 0.00370.0023 740.812539.4922
Module start 'content' 0.00611.2125 780.3047587.0156
Module end 'content' 1.21860.0014 1,367.320312.1094
Script end 1.2199  1,379.4297 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00290.2382160.0002
Check MTime0.00120.1008160.0001
Mysql Total
Database connection0.00040.032310.0004
Mysqli_queries1.173396.1761660.0178
Looping result0.00060.0486640.0000
Template Total1.197098.120.5985
Template load0.00180.148620.0009
Template processing1.195297.969320.5976
Template load and register function0.00010.011610.0001
states
state_id_array0.00070.053710.0007
state_identifier_array0.00080.068520.0004
Override
Cache load0.00150.1260250.0001
Sytem overhead
Fetch class attribute can translate value0.00070.060230.0002
Fetch class attribute name0.00120.100560.0002
XML
Image XML parsing0.00080.067730.0003
class_abstraction
Instantiating content class attribute0.00000.000860.0000
General
dbfile0.00090.0735160.0001
String conversion0.00000.000540.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
5content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
6content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
1content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
1content/datatype/view/ezxmltags/link.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/link.tplEdit templateOverride template
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 15
 Number of unique templates used: 6

Time used to render debug report: 0.0001 secs