В файле бритвы
Страницы в рецептах Wyam (я предполагаю, что вы используете рецепт блога или документации) обрабатываются Razor. Использование _Layout.cshtml
является условным в рецепте, но альтернативные макеты могут быть указаны с использованием стандартного синтаксиса Razor. Вы можете сделать это, поместив следующую строку в верхнюю часть файла about page .cshtml
( под your frontате):
@{
Layout = "_About.cshtml";
}
В файле уценки
Файлы Markdown также обрабатываются механизмом Razor, поэтому описанная выше методика будет работать , если бы процессор Markdown не экранировал символ @
. На самом деле нет хорошего способа обойти это, и простой ответ на ваш вопрос заключается в том, что вы не можете указать альтернативный макет для файла Markdown.
Однако, одно из преимуществ использования генератора на основе кода, такого как Wyam, заключается в том, что у вас есть много контроля. В этом случае вы можете заменить конвейер RenderPages тем, который будет делать именно то, что вы хотите. Добавьте следующее в ваш wyam.config
файл:
int index = Pipelines.IndexOf(Blog.RenderPages);
Pipelines.Remove(Blog.RenderPages);
Pipelines.Insert(index, Blog.RenderPages,
(IPipeline)new Wyam.Web.Pipelines.RenderPages(
Blog.RenderPages,
new Wyam.Web.Pipelines.RenderPagesSettings
{
Pipelines = new string[] { "Pages" },
Layout = (doc, ctx) => doc.String("Layout", "/_Layout.cshtml")
}));
Тогда вы сможете добавить значение "Layout" в качестве начального элемента точно так же, как вы написали в своем вопросе.
В целом это была хорошая идея, поэтому я также открыл проблему, чтобы добавить это поведение в рецепт по умолчанию.