如何 body>前添加内容扩展页? (KID模板)
-
22-09-2019 - |
题
我有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>
。
不隶属于 StackOverflow