カテゴリー
Uncategorized

テンプレート内からファイルを挿入する

JavaScript のファイルなどを TAL で処理せずに挿入する際に使用する。

ファイル名には絶対パスも相対パスも使用可能。

  • implements.py
from zope.tales.expressions import StringExpr
from zope.app.exception.interfaces import UserError
from os import path
class FileNotFound(UserError):
"""File not found."""
class TALIncludeFileExpr(StringExpr):
"""Include File Expression Handler class"""
def __call__(self, econtext):
fname = path.join(path.split(econtext.source_file)[0], self._expr)
try:
fp = open(fname, 'rb')
except IOError:
raise FileNotFound, 'Can\'t find file <%s>.' % (self._expr, )
result = fp.read()
fp.close()
return result

  • configure.zcml
<tales:expressiontype
    name="file"
    handler=".implements.TALIncludeFileExpr"
    />

  • 使用例
<script type="text/javascript" tal:content="structure file:prototype.js" />

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です