Необходимо представить несколько фрагментов HTML в разных местах внутри шаблона деревни
Вопрос
в моем default-layout.hamlet
:
!!!
<html lang="en">
<head>
<meta charset="utf-8">
<title>#{pageTitle pc}
^{pageHead pc}
<body>
<div id="main">
<div id="header">
????
<div id="content">
^{pageBody pc}
Из функции обработчика мне нужно заменить ????
Выше с некоторым HTML -содержанием.
Как это делается?
Спасибо за любой вклад.
РЕДАКТИРОВАТЬ:
Я ищу функциональность, аналогичную, например, шаблоны Джанго. Я могу определить блок внутри шаблона, а обработчик, который использует этот шаблон для рендеринга, может заполнить блоки шаблона необходимым содержанием. Прямо сейчас у Yesod эффективно один блок в теле шаблона. что «определено» по вызову ^{pageBody pc}
. Анкет Я знаю, что могу создать выход, сгенерированный pageBody
В любом случае я хочу использовать addWidget
и т.д., но сейчас мне нужно будет вывести свой <div id="header">
а также <div id="content">
тоже, и я хочу избежать этого, потому что все мои обработчики должны будут выводить эти div
На всех страницах есть одинаковая структура разметки.
Решение
Я думаю, что ответ - определить функцию, кроме DefaultLayout. Единственная вещь, которая волшебна в DefaultLayout, - это то, что субситы (например, AUTH) и сообщения об ошибках используют его по умолчанию. Но вы можете определить «mydefaultlayout», который берет другие части контента, которые вы хотите. Вы можете даже определить вспомогательную функцию, которая завершает дополнительные блоки в один блок, а затем передает ее на DefaultLayout.