どのように私は、拡張ページの 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、mypage.kidに固有で</body>
タグの前に、より多くのコンテンツを追加することが可能になりたい。
基本的に結果は何か、このする必要があります
<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で指定するを持っています。
</body>
とmaster.kidでpy:match="item.tag == 'bodyend'"
タグの前に要素を追加することを考え出した最初のIで。問題は、それがmypage.kid内の要素の位置、およびないpy:match
をやっ要素の位置を使用していることです。私はmypage.kidに<bodyend>
前</body>
タグを置くのであれば、それは<p id="footer">
前にインポートされ、私は</body>
の下にそれを置く場合には、そこに滞在されます。
どのように私はmaster.kidを設定し、</body>
タグの直前にコンテンツの追加をサポートするためにmypage.kidのですか?
解決
私が見つけた最良の解決策は以下の通りである:
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ページをチェックし、そのようなAの変数が存在する場合、それは(それ以外の場合は、出力何であろう)</body>
前要素の内容を置き換え、それを呼び出します。
</body>
前に出力内容する必要があるすべてのページがbody_end
を使用してpy:def="body_end()"
関数を定義します。 py:strip="True"
はラッピング<div>
を削除することがあります。