Необходимо представить несколько фрагментов HTML в разных местах внутри шаблона деревни

StackOverflow https://stackoverflow.com/questions/7337341

  •  27-10-2019
  •  | 
  •  

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top