встроить несколько файлов шаблона ребенка в основной - PullRequest
0 голосов
/ 07 мая 2009

В основном файле шаблона для ребенка я хочу, чтобы он содержал только теги div, каждый из которых вызывает только визуализированный файл ребенка и вставляет содержимое в него. (например, функция «включить» в PHP), но я не знаю, как это сделать. У кого-нибудь есть идеи по этому поводу?

Ответы [ 2 ]

1 голос
/ 17 июля 2009

Вы можете сначала определить шаблон "base_layout.kid":

<html xmlns:py="http://purl.org/kid/ns#">
    <head>
        <title>App Name - ${page_title}</title>
        <link href="layout.css" type="text/css" rel="stylesheet" />
        ${page_specific_css()}
    </head>

    <body>
        <h1>Now viewing: ${page_title} of App Name</h1>

        <content>Default content</content>

        <div class="footer">Page Footer Text</div>
    </body>

</html>

Затем замените тег "content" в "page.kid" на любые данные, которые вы хотите:

<html py:layout="'base_layout.kid'"
  xmlns:py="http://purl.org/kid/ns#">

    <link py:def="page_specific_css()"
    href="layout.css" type="text/css" rel="stylesheet" />

    <div py:match="item.tag == 'content'">
        <ul>
             <li>Content Item 1</li>
             <li>Content Item 2</li>
             <li>Content Item 3</li>
        </ul>
    </div>

</html>

Вы можете проверить, получаете ли вы правильный HTML в оболочке Python (после удаления всех используемых идентификаторов):

>>> import kid
>>> t = kid.Template("page.kid")
>>> print t.serialize()
1 голос
/ 17 мая 2009

Если вы переключаетесь на genshi вместо ребенка по умолчанию, вы можете сделать это с помощью тега include:

 <xi:include href="menu.html" />

Обмен на Генси довольно прост, я думаю, что это только вопрос обожания. Теги шаблонов работают иначе, то же самое. Вы должны переименовать расширения из .kid в .html.

...