之前添加内容在扩展页面中? (儿童模板)
我有 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 中的 标记之前添加更多内容,特定于 mypage 。孩子。
基本上结果应该是这样的:
<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>
标签应该在 mypage.kid 中指定。如果我必须修改 master.kid 以可选支持
标记之前的附加内容,但内容是什么有 > 在 mypage.kid 中指定。
起初,我认为在 master.kid 中的 标记之前添加一个元素
py:match="item.tag == 'bodyend'"
会起作用。问题在于它使用 mypage.kid 中元素的位置,而不是执行 py:match
的元素的位置。因此,如果我将
标记放在 mypage.kid 中的 之前,则它会在
如何设置 master.kid 和 mypage.kid 以支持在 标记之前添加内容?
I've got master.kid (simplified):
<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>
And mypage.kid:
<html>
<head></head>
<body>
<p>Hello World!</p>
</body>
</html>
Now I want it to be possible to add more content before the </body>
tag in the resulting HTML, specific to mypage.kid.
Basically the result should be something this:
<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>
The <script>
tag should be specified in mypage.kid. It's okay if I have to modify master.kid to optionally support additional content before the </body>
tag, but what the content is has to be specified in mypage.kid.
At first I figured adding an element before the </body>
tag in master.kid with py:match="item.tag == 'bodyend'"
would work. The problem is that it uses the position of the element in mypage.kid, and not the position of the element doing py:match
. So if I put the <bodyend>
tag before </body>
in mypage.kid, it is imported before <p id="footer">
, and if I put it below </body>
it will stay there.
How do I set up master.kid and mypage.kid to support adding content immediately before the </body>
tag?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
我找到的最好的解决方案如下:
master.kid:
mypage.kid:
master.kid页面检查定义为
body_end
的变量,如果存在这样的变量,它将调用它,替换之前元素的内容(否则它不会输出任何内容)。
任何需要在
之前输出内容的页面都会使用
py:def="body_end()"
定义body_end
函数。py:strip="True"
用于删除包装。
The best solution I've found is the following:
master.kid:
mypage.kid:
The master.kid page checks for a variable defined as
body_end
, and if there is such a variable, it will call it, replacing the contents of the element before</body>
(otherwise it will output nothing).Any page that needs to output content before
</body>
will define thebody_end
function usingpy:def="body_end()"
. Thepy:strip="True"
is there to remove the wrapping<div>
.