I sublayout is about Events.
If I put it inside a page which contains an Event, it will display informations pertaining to it.
I want to add a Data Template to my Sublayout that will allow editors to specify one particular Event from which to draw these informations.
How do I go about creating a Data Template that allows an editor to choose a specific Event from a list?
How do I add this to a given Sublayout?
When building componentized architectures as you are doing, you will want to implement the datasource property for a sublayout to make your sublayout a datasource-driven sublayout.
This article by John West should help on how to set a datasource:
http://www.sitecore.net/Learn/Blogs/Technical-Blogs/John-West-Sitecore-Blog/Posts/2010/11/How-to-Apply-Data-Sources-to-Sitecore-ASPNET-Presentation-Components.aspx
The basics are:
Create a template for your Event to contain the data
On your sublayout item (/sitecore/Layouts/...) set the datasource template property to match to your new Event template.
Update your code to pull from the datasource item on the sublayout, not the Sitecore.Context.Item
The following post by Mark Ursino is helpful in seeing the code side as well:
http://firebreaksice.com/using-the-datasource-field-with-sitecore-sublayouts/
Related
I added a WebPartZone in the master page at the top pf the master page, this web part zone is a message bar that will display on all the pages but could be different on each page. Is it possible to have a web part zone in the template that is editable on each page? Or is a different way to do it?
Thanks
The short answer no. From the template engine prospective whatever editable in the master - is not editable in its children. All editable web parts/widgets editable on the master, are not editable in its children.
If you really want to have an editable text in the master and all its children, you probably need to clone and customize web part and form control it is based on. Or create you own web part.
P.S. You can have editable text in your page template so all page that use this template will have this editable text working.
If you can give more details on what kind thing you want to edit would be easier to provide an answer
P.P.S. You can have a work around but it will not be with editable text. You will have to edit message text at the form tab. Would that suits you?
You can add the webpart on your master, and use a macro to get the content, like {%CurrentDocument.GetValue("Message")%}, but you have to add a field to each page to store the message in.
Just throwing out one more option, if what you want to display changes from page type to page type, you can put a repeater on the master page, put a path of a period (current document), then use macros to set the page type to the current document class name and the transformation to currentdocument.classname+".mastermessage"
Using a macro, then add a transformation "mastermessage" to each page type it will encounter, then you can change the fields and format for each page type.
I'm trying to implement a menu in sitecore page. Menu that will be available in all the pages.
I can do a rendering that goes to some specific datasource and assign the rendering to a placeholder inside Design Layout of the layout.
However how can they edit the datasource (order, ammount of elements, etc..) item in page A that will be also replicated in page B.
Without going through all the pages to change order, color, text, items etc...
To do that you will want to create a new data template that holds the shareable content on it. So it would have fields for navigation items etc... any setting that you wanted to be shared across pages.
Then in your rendering, you can set the Datasource to this item. Any changes to that item would be reflected across all pages that use it.
You should add the rendering to the standard values of your page templates and set the Datasource to your main default navigation item, then all new pages will get the navigation ready setup.
You need design your view in such a way that it should be editable in experience editor mode.
If you have implemented using Glass Mapper there is good section on how to use Edit Frame.
Also you can check below community blog. for more details.
https://community.sitecore.net/technical_blogs/b/sitecorejohn_blog/posts/render-field-values-for-mvc-solutions-using-the-sitecore-asp-net-web-cms
I have a certain item which uses a sublayout sub1. The item created with this sublayout has a field "Switch Columns" which i want to remove or hide (or hide/remove the section "Columned Grid" if possible) . Note that i do not want every item of that template to hide the field; just the items using sub1 (since the template is being used by different sublayouts).
Is there a way to do this via code in the ascx file of the sublayout ?
You can solve by using an extra layer inherit.
Create 2 set of template fields:
Template field minimal set
Template fields with addition fields.
sub1 Inheritance from the Template field minimal set
other layouts use a template with Inheritance from the minimal set and the addition field.
maybe this is also usable:
For Hide in the Content editor.
You can deny "Field Read" for a role/user on your Template Field or Section item.
See https://community.sitecore.net/developers/f/8/t/2113
You can hide fields in the Content Editor with a custom processor in the getContentEditorFields, see this post:
http://ctor.io/hide-fields-in-the-sitecore-content-editor/
But as other answers suggested, I would overthink your approach. Personally I would either use two separate Sublayouts (with different number of columns where you can easily swap them later without loosing it's datsource) or use this as a rendering parameter.
No, that is not possible. When viewing an item in content editor, your sublayout is not loaded. I would recommend that you rethink your architecture. This sort of field should probably be a rendering parameter. Alternatively, you could create a separate template to act as the data source for those sublayouts.
Maybe a custom pipeline for the content editor? If you tap into the <renderContentEditor> pipeline, you may be able to inspect the item's presentation, sniff out the sublayout, and inject some JavaScript to hide the panel.
Before digging into my explanation i will summarize my question:
How do I provide the user (editor) with a user-friendly possibility to select a datasource item for sublayouts that are preset on the standard values?
My situation is as follows:
I have a page template, with pre-defined layout on the standard values.
Let's say the layout consists of:
one placeholder "wrapper"
one sublayout "content"
This sublayout is pre-defined on my page template, but can also be placed in the placeholder using the Page Editor.
It needs to have a datasource item that defines a Title and Body value.
Now, if a user adds this sublayout to the placeholder using the Page Editor, he will get a nice interface to select or create the datasource item (see screenshot).
However, if the sublayout was pre-defined on the standard values, it will be added without datasource (I can't pre-set the data source in the standard values because it's still unknown by then).
At that point there seems to be no way to get to that nice interface for selecting or creating a datasource item.
Ideally I want to be able to add a field to my template that can hold a datasource item which the user can select/create using the nice interface. I looked at the datasource field type, which could be an alternative, but it's still not exactly what I want.
Bare in mind that the content sublayout is just an example.
I understand that in that specific case I could solve it by always adding a title/body field to the template which hold the values if there is no datasource, but for my real world problem that won't suffice.
I don't have a whole lot of experience with the Page Editor (with the new way of working with it) so I would like to get some advice on this subject.
According to what you said here:
Ideally I want to be able to add a field to my template that can hold a datasource item which the user can select/create using the nice interface. I looked at the datasource field type, which could be an alternative, but it's still not exactly what I want.
It seems you want an intuitive data source selector interface in the CMS shell similar to the Page Editor-based UI.
Quick answer: Simply put, there's nothing that does this for you in Sitecore.
Longer answer: There are still some options for you, e.g.
Define a global "dummy" data source and set that to be the data source set in in Presentation > Layout Details of the template's standard values. So every time you create a new page, it will always point to that dummy value to show something.
From here you can do a few things:
If the user must use the shell UI and not Page Editor, they can simply create another data source item for the specific page and update that page to point to it using the existing native interface in Layout Details.
Another option is to write an event handler, say for item:created or similar that when you create an item, auto-create a corresponding data source item for this specific page (whether this auto-created item be a sub-items or global item...) then programmatically set this to be the data source. A similar concept is shown in this video by Nick Wesselman: http://www.techphoria414.com/Blog/2012/May/Sitecore_Page_Editor_Unleashed
All of my Content Items in one node have a bad reference to a workflow. I am trying to create one to replace the missing Workflow. I did these steps:
Created a new workflow
Located the common inherited template that all content items in this node use.
In the standard values I chose my new workflow for the "Workflow" and "Default Workflow" fields (I think I just need default, but I am not sure.)
Saved and Smart Published.
The content items still show the GUID for the missing Workflow. I click the template name at the top of the content item, double check the standard values on the template and everything looks great.
How do I force Content Items to retrieve the correct workflow from their Templates?
It looks like your content items have broken from their standard values which is why your new standard value WF is not getting set. What version of Sitecore are you using? You can use the reset button on each content item to bring it back to the standard value just for the workflow.
Go to the View ribbon and enable Standard Fields
For each content item that has the wrong workflow, go to the Versions ribbon and click the Reset button on the left
In the pop-up scroll all the way down to the bottom Workflow section and check the boxes to reset specific fields
Repeat this process for all of the content items
Another idea is to write code to programatically reset fields or set them to a new WF