Dans le fichier de gabarit principal, je souhaite qu'il ne contienne que des balises div, dont chacune n'appelle qu'un fichier kid rendu et y colle le contenu. (comme "include" fonction en php) mais je ne sais pas comment faire cela. Est-ce que quelqu'un a des idées à ce sujet?Intégrer plusieurs fichiers de gabarit enfant dans un fichier principal
0
A
Répondre
1
Si vous changez de Genshi au lieu de l'enfant par défaut, vous pouvez le faire avec une balise include:
<xi:include href="menu.html" />
Permutation à Genshi est assez facile, je pense qu'il est une question de confuration seulement. Les balises templates fonctionnent autrement pareil. Vous devez cependant renommer les extensions de .kid en .html.
1
Vous pouvez d'abord définir un modèle de "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>
remplacez le tag "contenu" dans "page.kid" avec toutes les données que vous voulez:
<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>
Vous peut vérifier si vous obtenez le html correct dans le shell python (après avoir enlevé tous les identifiants utilisés):
>>> import kid
>>> t = kid.Template("page.kid")
>>> print t.serialize()
Ceci est correct seulement dans 2 balises et est plus rapide, compile pour une meilleure syntaxe et en plus donne une meilleure sortie d'erreur. –