Looking at a scenario in which a content editor would create a new content item based off of a template. In other words if I create a content item based off of a car template, I would like to add a folder called 'Options' under the new car item.
As a content editor I could then add various options from the insert command on the folder.
Can this be done and if so how?
This is a textbook description of a Sitecore Branch Template which can contain anything from a single item to a complex hierarchy of sub-items with their own set of standard-values and insert options. See chapter 3 of the Data Definition Cookbook for how to set these up.
Related
I have created a content item at /sitecore/Home/FootballFever/Articles and have given insert option so that we can add only items of templates "Article".As of now,these article items are bucketable according to a field created date.
Now, i have insert option "Add Article" and "Insert from Template" buttons in the Home ribbon "Insert" block. When i create an item through "Insert from Template", the item automatically gets added in respective bucket with path as created date. for example if the item has created date is "7/21/2014" then path will be "/Articles/2014/7/21/ ".
But when i click on "Add Article", the item gets added in /Articles and i have to Sync everytime to get it to correct path.
How can I have the same behavior as that of "Insert from Template" but with path having Release date which is a field of template "Article"?
Please make sure that Article template has Bucketable field checked in its Standard values (for Article template).
If not, when you add a new item into buckets folder, newly added item itself is not bucketable, unlike the rest already existing items from the same bucket folder.
I have just made a proof of concept on my sandbox environment and can confirm that in case you add a new item with Bucketable checked by Standard values - it comes into a bucket straight away and you do not need to perform Sync.
Hope this helps.
UPDATE: I have written a blog post specially to cover your question,with comprehensive description.
http://blog.martinmiles.net/post/understanding-buckets-adding-new-items-to-buckets-correctly
By default, items will be structured in bucket folders, five levels deep based on the date and time the item was created. There are a couple of other built in rules you can use like using part of the Guid or part of the name. The thing to note here is that these are all things that are available on item creation. If you want to structure your articles based on a custom 'Release Date' then you will need to write a custom rule and you will also have to implement an OnItemSaved event handler. Here is a article on how to write the custom rule.
Generally you don't have to worry about how the items are structured in your bucket. Editors should be using the search tab to find the items they need.
Having said that, this SO post discusses how to structure your bucket items based on a custom field. Some things to note here is that this is generally a global change. There are ways around it that enables you to have different strategies for different buckets but you'll then have to do additional work to override the LinkProvider and potentially other things.
In my content tree, I have "Folder" items that have no presentation, but have all the insert options on them. How would you be able to use the "Insert Page" button in the ribbon to insert a new content item in the right part of the tree?
For Example:
I have my home page Content(Folder)/Home.item
All of my insert options are on Content(Folder), how do I add a new Home.item type without nesting it under Home.item?
In order to be able to use the Insert Page button, the item you are inserting under must have Presentation defined. It doesn't need to have components added, and I've worked round this before by simply define a "blank" layout and setting it on those items. Maybe create yourself a new template (inheriting from Folder) and then set Layout on that. But, this is a workaround at best. You can only "Insert Page" below the current page you are on, so you would essentially have to navigate to a blank page in order to create the sibling.
From what you have stated, it sounds like you may want to re-think where your Insert Options have been set and your content structure, i.e. why would you want create another Home item? Creating so will require set-up of another <site> and related config. You probably also want to separate those sites out with other settings, there is some good example of multi-site structure in this blog post. If you go down this route look into using Branch Templates. But, difficult to know what you are doing without context...
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/
I'm trying to implement a list where the only item type is a folder. If someone click "New" they are brought to a form that allows them to enter a folder name, description, and select either "Active" or "Inactive" from a drop-down menu. Inside the folder I want a simple list with only 2 columns.
I tried making a custom Folder content type with the columns I needed and making it the default content type. This seems to work to make the list of folders. Once I go inside the folder and try to change the internal view/list setting (I don't want to use the custom folder content type inside the folder...i just need 2 simple columns) it changes the settings for the list of folders as well. Is there any way for the internal list to have different settings than its parent?
I don't know if this issue is still relevant, but maybe someone else will find my answer useful.
I used to implement a list that contains only folders in the root, which in order can contain few item based content types.
There was two event receivers for FeatureActivated and ItemAdded events, which changes UniqueContentTypeOrder property (the list of content types available for user to create) of the lists root folder and a folder being created respectively. Like this:
List<SPContentType> ctl = new List<SPContentType>();
foreach (SPContentType ct in lst.ContentTypes) if (ct.Id.IsChildOf(SPBuiltInContentTypeId.Folder)) ctl.Add(ct);
lst.RootFolder.UniqueContentTypeOrder = ctl;
lst.RootFolder.Update();
Also, I designated different available list views for root folder and the folders it contains, by specifying ContentTypeID attribute for a View definition.
Unfortunately, no. Since SharePoint is Lists are not relational data, the only options to you are allowing several Content Types. If a content type is available to the list, it's available to the entire list (root, and sub-folders).
One possibility to model what you are trying to accomplish relies on SharePoint 2010 Enterprise. Infopath allows you to customize the New Item Form for a List. It might be possible to edit the form such that it only allows Folders on the Top Level, and List Items within a folder, but I don't know for sure - it's been a while since I customized a List Form with Infopath.
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