2013-09-24 3 views
4

Я новичок в Sitecore PowerShell (и PowerShell в целом), и я хотел бы сгенерировать скрипт, который добавляет шаблон в качестве базового шаблона в список шаблонов ChildItem под определенным контекстная папка.Добавить базовый шаблон в шаблон с помощью Sitecore Powershell

Поскольку шаблон __Base является стандартным значением, а не регулярным полем, я не уверен, есть ли синтаксис, доступный для добавления GUID в поле мультилиста, которое он использует (ограниченное по трубе).

Вот что я пытался

$master = Get-Database master; 
$translationTemplate = $master.Templates["Path/To/Template/Needed/Translatable"]; 
$calloutTemplate = $master.Templates["Path/To/Example/Callout"]; 

#$translationTemplate; 

$calloutTemplate += $translationTemplate; 

Я в состоянии получить все дети рекурсивно с Get-ChildItem -recursive, но для теста, я просто хочу попробовать его на один элемент шаблона, называемый выносом. Вот вид на $ calloutTemplate, показывая, что он имеет раздел BaseTemplates и раздел Fields (который должен включать в себя шаблон __Base):

enter image description here

Если нет никакого решения в Powershell для Sitecore, будет Sitecore Rocks Query возможно, работают анализаторы CRUD?

ответ

6

В основном скрипт, который вы ищете,:

$templateToExtend = Get-Item 'master:/templates/Path/To/Example/Callout' 
$templateToAdd= Get-Item 'master:/templates/Path/To/Template/Needed/Translatable' 

# Make sure we're not adding it again if it's already there 
if(-not ($templateToExtend."__Base template" -match "$($templateToAdd.Id)")) 
{ 
    "Adding '$($templateToAdd.Name)' to '$($templateToExtend.Name)' Base templates" 
    $templateToExtend."__Base template" = "$($templateToExtend.'__Base template')|$($templateToAdd.Id)" 
} 

# Just to verify it got added: 
$templateToExtend."__Base template" 

Однако именно это не дает действительно PowerShell справедливость. Сила этого заключается в том, что теперь вы можете превратить этот фрагмент в функцию, в которую можно входить. Вы можете сделать это легко после Michael's tutorial on his blog

+0

Привыкание к этому синтаксису, безусловно, стоит погрузиться в PowerShell для Sitecore. Это похоже на использование сценариев Perl для тяжелых задач ИТ-администратора. Спасибо за фрагмент кода. Вам неизвестны какие-либо ссылки на связанные с Sitecore операции обновления с элементами и полями (я начинаю понимать, что поля в Sitecore могут быть доступны гораздо проще, чем я думал)? –

+2

Вы имеете в виду в Powershell? Все поля отображаются в их форме хранения. Вы можете обращаться к любому полю, просто используя $ item.FieldName или если оно имеет пробел $ _. "Имя поля", а затем назначено. Я думаю, что только даты разные, поскольку я показываю их как объект DateTime. Преимущество этого над Perl или Bash заключается в том, что вы фактически работаете с API Sitecore, а не с текстом. –

Смежные вопросы