1

I have an sxa multisite solution where a template has been used across 2 sites. The template has a droptree field with source in template as /sitecore/content/tenant/site1/data/tag. However, when I used the item based on the same template in site 2, the datasource for the droptree field always points to the site 1 tag folder.

Any way of handling it, so that source dynamically picks up the site name.

2
  • 3
    Something like $site:/data/tag
    – Mark Cassidy
    Jul 20 at 13:39
  • Thanks Mark it's working fine with the query you provided.
    – Roger
    Jul 21 at 4:23
3

As Mark mentioned in his comment you should use the SXA tokens to achieve this. You can find a list here: https://doc.sitecore.com/en/developers/sxa/101/sitecore-experience-accelerator/the-sxa-pipelines.html

Useful ones for sources in templates could be:

  • $tenant - path to the current tenant.
  • $site - path to the current site.
  • $home - path to the current site start item (by default: /sitecore/content/Tenant/Site/Home).
  • $linkableHomes - paths to home items from linkable sites.
  • $templates - path to the current site templates (/sitecore/templates/Project/Tenant).
  • $siteMedia - paths to media folders specified in Additional Children field on virtual media folder item.
  • $sharedSites - for multiroot fields, resolves shared site for the current tenant.

In your case you'll need the $site token.

You'll need to set the source to: query:$site/Data/tag. (You need to start the source with "query" to make the tokens work).

0

If your depth of data source is is same in both sites. Below should work,

query:../data/tag

.. is a parent selector. You can increase based on the depth you have. My depth of data source is 1, as mentioned below screenshot. enter image description here

Site1: contains two elements enter image description here

Site2: contains three elements enter image description here

1
  • 1
    Yea the query: approach is how we used to do it. It would need to include something like ancestor-or-self:*[@templatename='Site Root'] or similar. But with SXA we have tokens that help achieve this, like $site and $sharedSites and so on.
    – Mark Cassidy
    Jul 20 at 14:29

This site is temporarily in read only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .