Younes
Younes

Reputation: 4823

Unpublished / restricted items in Sitecore showing standard values

Is it in usercontrols / xslt renderings possible to check wheter an item has it's publishing restricted or is not publishable in the Sitecore CMS? We get some situations where we explain users of the CMS how to set publishing restrictions and get back questions about items showing standard values on the website. For example:

EDIT:

Publishing restrictions can be used to make sure information is only shown in some period of time right? Is this something we can fix in our code? Can we check wheter an item is not in the range of the public resctrictions / unpublished?

Upvotes: 3

Views: 3528

Answers (2)

Younes
Younes

Reputation: 4823

So again to give other users the option to check for an answer to this question i'll answer my own question.

If a user in the CMS of Sitecore specifies a range where an item can be published in and you see a standard value appearing on the front:

  • Look up the class / rendering whatever that shows the information
  • Make sure your code is checking for versions available

If there is only one version available like in my case , and there are no other versions while the date of today falls outside the range specified doing a simple Item.Empty check will be enough.

Whenever you have a Sitecore item that you need to handle:

item has versions in context language?? -> item.Versions.Count

item may be published?? -> !item.Publishing.IsValid(DateTime.Today, false)

item has layout?? -> item.Visualization.GetLayout(Sitecore.Context.Device)

I hope this information will once be usefull to somebody!

Upvotes: 2

Yan Sklyarenko
Yan Sklyarenko

Reputation: 32270

Here is the possible explanation of the behavior you described. You have several versions of your item, and when you put publish restrictions to the version you're working with (typically, the latest one), it gets unpublished. If one of the previous versions, which becomes publishable now, doesn't override standard values, you'll see these standard values on the front-end.

The fix for this depends on your needs. For instance, if you wish to manage entire item, set the publish restrictions on an item level.

As for you initial question, any field of an item can be addressed from user control / XSL rendering (for instance, sc:fld function). But keep in mind that you are querying web database from rendering. If the publish restrictions are set, and the item is not publishable, you won't get this item and its fields from the rendering / sublayout.

Hope this helps.

Upvotes: 0

Related Questions