Skip to content

Instantly share code, notes, and snippets.

@stevewithington
Last active September 11, 2020 11:20
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stevewithington/4446892 to your computer and use it in GitHub Desktop.
Save stevewithington/4446892 to your computer and use it in GitHub Desktop.
Mura CMS: a "Related Content" iterator and query/recordset sorted randomly
<cfscript>
listSortBy = 'menutitle,title,lastupdate,releasedate,orderno,displaystart,displaystop,created,credits,type,subtype';
listSortDir = 'asc,desc';
sortby = ListGetAt(listSortBy, RandRange(1, ListLen(listSortBy), 'SHA1PRNG'));
sortdir = ListGetAt(listSortDir, RandRange(1, ListLen(listSortDir), 'SHA1PRNG'));
rsRelated = $.content().getRelatedContentQuery(sortby=sortby, sortDirection=sortdir);
itRelated = $.getBean('contentIterator').setQuery(rsRelated);
</cfscript>
<!---
OR, this does pretty much the same thing.
However, in my testing, this method is consistently 1 to 2 milliseconds slower.
--->
<cfset rsRelated = $.content().getRelatedContentQuery()>
<cfset QueryAddColumn(rsRelated, 'sorter', 'VARCHAR', ArrayNew(1))>
<cfloop query="rsRelated">
<cfset QuerySetCell(rsRelated, 'sorter', rand(), currentRow)>
</cfloop>
<cfquery name="rsRelated" dbtype="query">
SELECT *
FROM rsRelated
ORDER BY sorter
</cfquery>
<cfset itRelated = $.getBean('contentIterator').setQuery(rsRelated)>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment