We have multiple news outlets on campus that ended up being created in different structures. When we wanted to syndicate these news sources onto one page, we needed a way to present them in a co-mingled list listed newest first. But how could we do that with 3 different structures? The key to making this work is having the publication date field in each of the 3 structures named the same. I suppose there's a way around this but fortunately I didn't need to give that much thought. The other key is using the velocity org.apache.velocity.tools.generic.SortTool@328cc934 tool on your foreach statement. This is what does the actual sort once you've got all your data in one list. More info on org.apache.velocity.tools.generic.SortTool@328cc934: https://velocity.apache.org/tools/devel/javadoc/org/apache/velocity/tools/generic/SortTool.html
## First, set your lists #set($newsList = $dotcontent.pull("+structureName:CcNewsStories ...")) #set($sparkList = $dotcontent.pull("+structureName:CcSparkContents ... ")) #set($vergeList = $dotcontent.pull("+structureName:CcVergeFeatureStory ...")) ## Now combine them into one list #set($combined = []) #foreach($n in $newsList) #set($test = $combined.add($n)) #end #foreach($s in $sparkList) #set($test = $combined.add($s)) #end #foreach($v in $vergeList) #set($test = $combined.add($v)) #end #if($combined.size() > 0) <ul> ## Here's the key: use the $sorter tool on your foreach statement #foreach($c in $sorter.sort($combined,"publishDate:desc")) <li> <!--Display your story --> </li> #end </ul> #end