我有master.kid(简化的):

<html>
<head py:match="item.tag == 'head'">
  <title>My Site</title>
</head>
<body py:match="item.tag == 'body'">
  <h1>My Site</h1>
  <div py:replace="item[:]"></div>
  <p id="footer">Copyright Blixt 2010</p>
</body>
</html>

和mypage.kid:

<html>
<head></head>
<body>
  <p>Hello World!</p>
</body>
</html>

现在我希望它可以在生成的HTML的</body>标记之前添加更多的内容,具体到mypage.kid。

基本上,结果应该是这样的:

<html>
<head>
  <title>My Site</title>
</head>
<body>
  <h1>My Site</h1>
  <p>Hello World!</p>
  <p id="footer">Copyright Blixt 2010</p>
  <script type="text/javascript">alert('Hello World!');</script>
</body>
</html>

<script>标签应当在mypage.kid指定。这没关系,如果我要修改master.kid到的可选的支持附加内容</body>标记之前,但内容是什么的的在mypage.kid指定。

目前想通master.kid的</body>标签与py:match="item.tag == 'bodyend'"将工作之前添加元素的第一予。问题是,它使用元素的位置mypage.kid,而不是元素做py:match的位置。所以,如果我把<bodyend>标签中mypage.kid </body>之前,<p id="footer">之前进口的,如果我把它放在下面</body>它会呆在那里。

我如何设置master.kid和mypage.kid支持立即</body>标签之前添加的内容?

有帮助吗?

解决方案

我发现的最好的解决方法是:

master.kid:

<html>
<head py:match="item.tag == 'head'">
  <title>My Site</title>
</head>
<body py:match="item.tag == 'body'">
  <h1>My Site</h1>
  <div py:replace="item[:]"></div>
  <p id="footer">Copyright Blixt 2010</p>
  <div py:if="defined('body_end')" py:replace="body_end()"></div>
</body>
</html>

mypage.kid:

<html>
<head></head>
<body>
  <p>Hello World!</p>
  <div py:def="body_end()" py:strip="True">
    <script type="text/javascript">alert('Hello World!');</script>
  </div>
</body>
</html>

定义为body_end用于可变的master.kid页检查,并且如果有这样一个变量,它会调用它,</body>之前替换元素的内容(否则它将输出无关)。

这需要输出内容</body>之前的任何页面使用body_end将定义py:def="body_end()"功能。所述py:strip="True"是有以除去缠绕<div>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top