3.1. Шаблоны

Шаблоны

Для шаблонов в Umbraco применяется концепция Razor Views из asp.net MVC - если вы уже знакомы с ней, то вы готовы создать ваше первый шаблон. Если нет, это быстрое и удобное руководство вам поможет.

Создание вашего первого шаблона

По умолчанию у всех типов документов устанавливается шаблон, но в случае, если вам нужно установить другой шаблон или вообще создать новый, вы можете легко сделать это.
Перейдите в секцию Settings и нажмите правой кнопкой мыши на каталоге templates, затем выберите create. Укажите имя шаблона и нажмите кнопку create. После чего откроется редактор шаблонов и отобразится разметка шаблона.
Created template

Установка шаблона для типа документа

Для того, чтобы использовать шаблон в документе, необходимо вначале разрешить его использование для контентного типа. Откройте тип документа, в котором хотите использовать шаблон, и выберите шаблон в "allowed templates"
Allowing template

Наследование мастер-шаблона

Шаблон может наследовать контент из мастер-шаблона, используя Layout возможность представлений asp.net. Допустим, имеется шаблон masterview, содержащий следующий html:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = null;
}
<!DOCTYPE html>
<html lang="en">
    <body>
        <h1>Hello world</h1>
        @RenderBody()
    </body>
</html>
Создаем новый шаблон textpage, и в редакторе шаблонов во вкладке Properties устанавливаем для него мастер-шаблон masterview:
Inherit template
Значение Layoutв шаблоне textpage измениться как показано ниже:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = "MasterView.cshtml";
}
<p>My content</p>
Когда будет генерироваться конечная страница, вместо @renderBody() в мастер-шаблоне будет подставлена дочерняя страница и получится следующий результат:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = null;
}
<!DOCTYPE html>
<html lang="en">
    <body>
        <h1>Hello world</h1>
        <p>My content</p>
    </body>
</html>

Секции шаблона

What's good to know, is that you are not limited to a single section. Секции шаблона позволяют дочерним шаблоном, которые наследуют разметку мастер-шаблона, вставлять HTML код напрямую в разметку мастер-шаблона. Например, дочерний шаблон вставляет код в тег<head> мастер-шаблона.
Это можно сделать используя именованные секции. Добавьте именованную секцию в мастер-шаблон с помощью следующего кода:
@RenderSection("SectionName")
А именно, добавьте следующую именованную секцию в HTML тег  <head> мастер-шаблона:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = null;
}

<html>
    <head>
        <title>Title</title>
        @RenderSection("Head")
    </head>

    <body>
    </body>
</html>
По умолчанию, когда определяется секция, она является обязательной. Чтобы сделать секцию необязательной, просто добавьте required:false.
@RenderSection("Head", required: false)
На дочерние страницы вызовите @section Head {} а затем укажите разметку, которая будет вставлена в мастер-шаблон.

Вставка частичных шаблонов

Другой способ многократно использовать HTML - это частичное шаблоны, которые являются маленькими многократно используемые представлениями, которые в свою очередь можно вставлять в другие представления.
Как и шаблоны, частичные представления создаются нажатием на "partial views" и выбором create, а далее есть возможность использовать готовые шаблоны.
Create partial
Созданное частичное представление далее может быть вставлено в любой шаблон с помощью метода @Html.Partial() , например, следующим образом:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = "MasterView.cshtml";
}

<h1>My new page</h1>
@Html.Partial("a-new-view")