3

I'm recently trying to use Dynamic Content API to retrieve components based on a certain schema from database and then show them on a page. I got the problem that I got all components but the component link didn't work. The basic information are below:

  1. Dynamic Component Template

    I used DCP to show these components on the page, so I created a Component Template whose "Output Format" is REL and "Component Presentation based on this Component Template will be" is Published as a Dynamic Assembly, with "Allow on Page Using Dynamic Assembly" checked.
    TBB used in this Component Template is like below:

    component link Finally, it transformed to : enter image description here

The page URI came out to be tcm:0-0-0, and the area which should show component link was empty.

  1. storage_conf.xml of deployer
    Pages are stored in filesystem and others are in database.

  2. Version of SDL
    SDL Web8

I'm not clear about the reason now. I tried some ideas found on stackexchange but didn't work.

  • Using ComponentPresentationAssembler Class instead of ComponentPresentationFactory:

    enter image description here

  • Change the Output Format to ASCX Web Control and set ASCX ComponentPresentation stored in filesystem in cd_storage_cong.xml.

I'm confused about why the page URI came to be 0-0-0 and wondering that this may be the reason of component link problem.

  • Should the dynamic component presentation be stored in the same location as page?
  • If needed, which output format should be selected?
  • I saw an answer on this site that ComponentPresentationAssembler class inside Tridion.ContentDelivery.WAI namesapce should be used. Do I need change to that? (I used the same class in Tridion.ContentDelivery.DynamicContent namespace)

Could someone help me solve this problem?
Thanks.

1 Answer 1

3

Are you sure that the target language is set to REL? Because the tridion:componentLink is supposed to be tcdl:Link when using target language REL.

Can you check that in your deployer configuration you do not override the 'target.language' property to .NET but make sure its set to <Property Name="tcdl.target.language" Value="rel"/>

2
  • Thank you Renze! I did override the "target.language" to .NET. Actually, I'm not very clear about this setting. I comment out that override code now and the link works. Is there any influence to other contents? And when should we add codes for a specific language? Commented Aug 23, 2016 at 7:22
  • In a webservice world most likely all your content will only need target language TCDL/REL. In the Web 8 (CU1) version there is a target language setting to ensure that the pages get deployed in the right target language. However this setting applies to both pages and DCP's, which is not always what you need. There is a hotfix out there to allow you to set different target language for only your pages and then the target language of your template output is used instead for DCP's. Commented Aug 23, 2016 at 8:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.