Reputation: 4823
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
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:
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
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