Forums / Developer / Sorting objects based on attribute (not in fetch though)

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/

eZ debug

Timing: Jan 29 2025 13:39:26
Script start
Timing: Jan 29 2025 13:39:26
Module start 'content'
Timing: Jan 29 2025 13:39:26
Module end 'content'
Timing: Jan 29 2025 13:39:26
Script end

Main resources:

Total runtime0.1297 sec
Peak memory usage2,048.0000 KB
Database Queries141

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0056 588.1563180.8125
Module start 'content' 0.00560.0056 768.968897.9609
Module end 'content' 0.01120.1184 866.9297526.4219
Script end 0.1296  1,393.3516 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00322.4386200.0002
Check MTime0.00120.9488200.0001
Mysql Total
Database connection0.00060.494310.0006
Mysqli_queries0.088468.12681410.0006
Looping result0.00100.80851390.0000
Template Total0.118191.110.1181
Template load0.00090.661410.0009
Template processing0.117390.417310.1173
Override
Cache load0.00050.417110.0005
Sytem overhead
Fetch class attribute can translate value0.00080.626010.0008
XML
Image XML parsing0.00020.152010.0002
General
dbfile0.00503.8594200.0003
String conversion0.00000.005330.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 1
 Number of unique templates used: 1

Time used to render debug report: 0.0001 secs