Všechno v sitecore je item. Nejinak je tomu i u šablon. Šablona v sitecore je item, který definuje strukturu a chování ostatních item. Každý item v sitecore je instancí nějaké šablony. Šablona může definovat i sekce a políčka, do kterých se člení a plní obsah. Každá sekce představuje podřízený item pod šablonou a každé pole je další podřízený item pod itemem příslušné sekce.
Šablony jsou umístěné v /sitecore/templates

Ukázka šablony, sekce s poli a umístění ve stromu

Ukázka šablony, sekce s poli a umístění ve stromu

Základní typy šablon

V Content Editoru/Template Editoru lze definovat tři základní typy šablon.

Datové šablony

Základní druh šablon. Může obsahovat políčka a být instanciována redaktory pomocí insert page. Tento článek pojednává právě o tomto typu šablon.

Branch templates

Stromová struktura šablon. Umožňuje definovat celý strom šablon, tak že vytvořením instance branch template vznikne celá struktura item, aniž by je uživatel musel jednu po druhé vytvářet.

Command templates

Jde v podstatě jen o command, který je vyvolaný při vytváření instance šablony. Používá se pro automatizované vytváření itemů s business logikou.

Standard template

Standard template

Dědičnost

Šablony mohou dědit z jedné nebo více dalších šablon. Díky dědičnosti můžeme definovat abstraktní šablony společné více datovým šablonám. Obsahové itemy mohou díky tomu obsahovat množství políček aniž by je bylo nutné vždy znovu definovat pro každou šablonu zvlášť.

Standard template

Jde o základní šablonu, kterou sitecore poskytuje pro svou funkci. Tato šablona žádná políčka neobsahuje, ale dědí z množství dalších šablon, díky kterým můžeme na itemech definovat display name, layout details, publishing restrictions, workflow atd. Všechna políčka zděděná do standard template začínají __.
Standard template je umístěná v /sitecore/templates/System/Templates/Standard template

 __Standard Values

Kromě políček může šablona obsahovat layout details definující zobrazení, insert options definující hierarchii šablon pro vytváření, výchozí hodnoty včetně použití tokenů jako např. $name nebo např. ikony. Všechna tato nastavení se na item ovšem nepřenesou při vytvoření instance šablony. Je nutné pro tento účel vytvořit pod šablonou zvláštní druh itemu __Standard Values. Jde vlastně o instanci šablony, která definuje hodnoty polí, včetně polí ze Standard template, které nejsou na instanci šablony definované. Jsou společné pro všechny itemy vytvořené ze stejné šablony, takže dokud nemá obsahový item definovanou vlastní hodnotu nějaké pole, pak se používá hodnota ze __Standard Values.

__Standard Values vytvoříte pomocí tlačítka Standard values v Ribbonu na záložce Builder Options. Aby se Vám záložka Builder Options zobrazila, musíte zvolit šablonu ze stromečku v levé části okna a přepnout se na záložku Builder v obsahové části okna.

Identifikace a navigace

Z obsahového itemu se lze snadno prokliknout na šablonu, ze které je item vytvořen. Šablonu lze také zaměnit za jinou tlačítkem Change na záložce Configure. Obdobně na šabloně lze v ribbonu na záložce Navigate tlačítkem Links zjistit, kde všude je šablona použitá. Záložka Inheritance v obsahové části nám potom ukáže stromovou strukturu z čeho všeho se šablona skládá včetně poděděných políček.

Unversioned vs. Shared

Pole v šabloně lze definovat jako Unversioned nebo Shared. Jak již je z názvu patrné Unversioned pole má stejnou hodnotu přes všechny verze v rámci jazykové mutace. Pole označené jako Shared má vždy jen jednu hodnotu platnou pro všechny verze ve všech jazykových mutacích.

Fallback

Pole v šabloně mohou mít definovaný fallback. Fallback je mechanismus, který zajistí vložení hodnoty pole z jiné verze nebo z jiného jazyka v případě, že je prázdné. Hierarchie fallbacků jednotlivých jazyků se definuje v /sitecore/system/Languages.

Tato detailnější nastavení políček je nutné definovat na jednotlivých itemech polí, v záložce Builder na šabloně jsou dostupné jen základní nastavení.

Doporučení při tvorbě šablon

Držte se konvencí. Sitecore připravil dokumentaci doporučených principů při návrhu a implementaci sitecore řešení nazvanou Sitecore Helix. Doporučuji přečíst, pomůže Vám s návrhem snad všech oblastí s jakými se v sitecore setkáte. V sekci týkající se šablon uplaňuje takovéto rozdělení:

  • Interface template – obsahuje políčka, konvence je taková, že začíná na _, v C# je to ekvivalent k rozhraní
  • Page type template – může mít layout, neobsahuje políčka, dědí z jedné nebo více interface template, jsou z ní vytvářeny instance, v C# je to ekvivalent k třídě implementující jedno nebo více rozhraní
  • Datasource template – nemají layout i když jsou také děděná z interface template, používají se jen pro itemy referencované jako datasource k renderingům
  • Settings template – šablony definující nastavení pro implementaci business logiky, nedědí z interface template a jsou rovnou instanciované
  • Folder template – nepoužívejte Common/Folder!, pro každý modul mějte vlastní folder template, díky tomu budete schopni řešení modularizovat a uplatnit na adresáře různé insert option, oprávnění apod.

Nepoužívejte Shared nebo Unversioned pole pokud to není nezbytně nutné. Je potřeba vždy pečlivě zvážit jazykový a kulturní kontext.