At the moment all our templates are visible across all of our communities. I’m starting to look into whether we can start stripping this back a bit.
But what does it mean to have templates visible only to some communities?
If community A doesn’t have access to a template on a certain content-type, whereas community B has, can community B use a content item from community A using this template? In a slot, for example?
Or, looking at it another way, is the item assembly from B’s point of view or does A somehow partially assemble and pass the result up to A to complete the job?
And if I completely removed a template from all communities, can it still be accessed from Velocity where the template is specified in the slot using $params.template?
Community visibility for templates affects what previews are available to a user in that community in the Preview contextual menu for a content item. However, you can always manually specify a template in a preview URL, regardless of visibility rules.
Site visibility for a template affects which templates are allowed to publish to a site.
These 2 are independent attributes and do not affect each other.
Community Visibility for Content Types is also another separate and unrelated attribute. This is what affects whether a content item from Community A can be accessed by Community B.
In order to make it so that Community A can create items, and Community B can only see them, you have to use separate Workflows and/or Roles for the 2 Communities… It can get complicated and confusing pretty fast, so read up on the documentation and do some experimentation.
Visibility rules are not involved at all during assembly.