необходимо отобразить несколько фрагментов HTML в разных местах внутри шаблона деревушки - PullRequest
1 голос
/ 07 сентября 2011

по моему 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.

как это сделать?

спасибо за любой вклад.

EDIT:

Я ищу функциональность, подобную, например, шаблонным блокам django. Я могу определить блок внутри шаблона, и обработчик, который использует этот шаблон для рендеринга, может заполнить блоки шаблона необходимым содержимым. Сейчас у yesod фактически есть один блок в теле шаблона. это «определяется» вызовом ^{pageBody pc}. Я знаю, что могу создать вывод, сгенерированный pageBody, любым способом, который я хочу использовать addWidget и т. Д., Но сейчас мне нужно будет также вывести свои <div id="header"> и <div id="content">, и я хочу избежать этого, потому что все обработчики должны будут вывести эти div, чтобы иметь одинаковую структуру разметки на всех страницах.

1 Ответ

1 голос
/ 08 сентября 2011

Я думаю, что ответом является определение функции помимо defaultLayout. Единственное, что волшебно в defaultLayout - это то, что дочерние сайты (например, auth) и сообщения об ошибках используют его по умолчанию. Но вы можете определить «myDefaultLayout», который берет другие части контента, которые вы хотите. Вы даже можете определить вспомогательную функцию, которая упаковывает лишние блоки в один блок и затем передает его в defaultLayout.

...