There is a change about the behaviour of the REL Component Presentation in Web 8, due to the change of the control of the target languages by the Publication Target and the new Topology Manager way of publishing.
To overcome this, there is a new property that can be controlled in the deployer, changing the tcdl-conf.xml as it is explained in the following ...
This is a defect in the DXA 2.0 Model Service, which has already been hotfixed. See https://github.com/sdl/dxa-model-service/commit/77c2043ba690ae15f3efee9c3f598cb7bd79a4e8
Contact SDL Customer Support to receive this hotfix.
I think it's not a matter of DXA 1.x or 2.x, but the use of SDL Web 8.5 with the use of microservices that changes the configuration of the cd_dynamic_conf file.
Now these configuration are managed in the "content microservice" (live environment) or "session" and "preview microservices" (staging with xpm environment)
The ComponentPresentationAssembler needs access to your page context to work, so the constructor overload that accepts just the publication id won't work. You need to instantiate a JSPPage with the pageContext and pass that in.
= new com.tridion.web.jsp.JSPPage(pageContext, "tcm:127-507637-64");
In general, if you need custom logic for how Page Models are constructed, I would recommend using a custom Page Controller (can be a subclass of Sdl.Web.Mvc.Controllers.PageController which overrides the Page method).
Creating a custom Content Provider requires you to use a non-public extension point which may change considerably between releases (as a ...
How about adding a smart target region for header and footer.
Set different ADF Claims for each different condition( it could be URL Pattern or any business criteria) and just add smart target triggers for those header and footer ST regions.
In that way, you can meet your business requirements and also continue using OOTB DXA as is :)
This logic seems to have some flaws, and does a lot of database operations in order to find a component template.
foreach (var compUri in componentUris)
cpList = cpf.FindAllComponentPresentations(compUri);
if (cpList.Count == 1)
ComponentPresentation compPresentation = (ComponentPresentation)cpList;
componentTemplateId = ...
You can use the GetEnityModel using ContentProvider.GetEntityModel (HERE). An sample implementation is available in the test namespace HERE. Per Rick's comments, it has been introduced in 1.2.
You can also use the DD4T API to retrieve the component presentation directly from the Broker. You can try to use the GetComponentPresentation. For your conditions to ...