Tenjinテンプレートエンジンで快適Web制作4
IWDD41で発表したTenjinテンプレートエンジンで快適Web制作3の続きエントリーです。
画像ファイルが沢山あるページの場合、srcやaltをそのままhtmlの中に書いても良いですが、yamlファイルで管理したりすると便利かも。
apple:
src: apple.jpg
alt: りんごの写真
width: 300
grape:
src: grape.jpg
alt: ぶどうの写真
width: 400
lemon:
src: lemon.jpg
alt: レモンの写真
width: 500data.yaml
それぞれの画像ファイルに対するメタデータを、このようなYAML形式で作っておきます。
そして、以下のようなテンプレートを作ると、YAMLファイルからデータを読み込んで、それぞれの項目名を元に、imgタグを返すことができます。
<?rb
@title='YAMLファイルからページを作る'
# YAMLファイルを読み込んで、指定されたハッシュのimgタグを返す
require 'yaml'
def yaml2img(key)
hash = YAML.load(File.read('data.yaml'))
ysrc = hash[key]['src']
yalt = hash[key]['alt']
ywidth = hash[key]['width']
@_buf << '<img src="/images/'+ysrc+'" alt="'+yalt+'" width="'+ywidth+'">'
end
?>
<?rb import 'header.html' ?>
<div>
<?rb yaml2img('apple') ?>
<?rb yaml2img('grape') ?>
<?rb yaml2img('lemon') ?>
</div>
<?rb import 'footer.html' ?>yaml.html
imgタグを返すyaml2imgメソッドをテンプレート内で定義して、テンプレート内で<?rb yaml2img() ?>で呼ぶと、その場所にimgタグが出力されます。
http://localhost/yaml.html にアクセスすると、
<html>
<head>
<title>YAMLファイルからページを作る</title>
</head>
<body>
<div>
<img src="/images/apple.jpg" alt="りんごの写真" width="300">
<img src="/images/grape.jpg" alt="ぶどうの写真" width="400">
<img src="/images/lemon.jpg" alt="レモンの写真" width="500">
</div>
<div>ここがフッター</div>
</body>
</html>という結果が得られると思います。
Trackbacks
Use the following link to trackback from your own site:
http://blog.migiue.jp/trackbacks?article_id=70