The recommended way to achieve such dynamic, query-based page assembly in DXA is by creating a custom Controller.
Unfortunately, DXA doesn't support custom Region Controllers yet, but you can create a custom Entity Controller (your own Controller class derived from
So, you would have to model the entire dynamic list of Entities (DCPs) as an Entity itself (note it is quite common to model lists as Entities in DXA). You can then create a CT for the list which specifies your custom Controller.
Your custom Controller should override the
EnrichModel method. This gives the Controller the possibility to dynamically populate the View Model. It can use the CD Taxonomy API (as mentioned by Nickoli) to retrieve the Component IDs and then use
ContentProvider.GetEntityModel to retrieve DXA Entity Models for those IDs.
Finally, you will have to create a View for your list Entity. That can be a very simple View which iterates over the Entity Models populated by your Controller and let them render themselves using
There are several examples of this pattern in DXA: