Tenjinテンプレートエンジンで快適Web制作3
IWDD41で発表したTenjinテンプレートエンジンで快適Web制作2の続きエントリーです。
Webサイトの原稿をもらうときに、ワードだったり、エクセルだったりすることがあるかと思いますが(><)、今回はエクセルファイルから直接ページを作ってみます。
まず、エクセルでこんなシートを作ります。シート名は「page1」、ファイル名は「data.xls」にしておきます。これがページの原稿になります。
data.xls
RubyのSpreadSheetライブラリを使って、エクセルのデータを直接読み込んでテンプレートの中に展開します。
<?rb
@title='エクセルファイルからページを作る'
require 'rubygems'
require 'spreadsheet'
book = Spreadsheet.open('data.xls', 'rb') # エクセルファイルを指定する
sheet = book.worksheet('page1') # シート名を指定する
xls_title = sheet[2,1] # ページタイトル(B3)
xls_body = sheet[3,1].gsub(/\n/, '<br>') # 本文。改行をbrタグに置換(B4)
xls_alt = sheet[4,1] # 写真の説明(B5)
xls_src = '/images/' + sheet[5,1] # 写真のファイル名(B6)
?>
<?rb import 'header.html' ?>
<div>
<h1>${xls_title}</h1>
<p>#{xls_body}</p>
<img src="${xls_src}" alt="${xls_alt}">
</div>
<?rb import 'footer.html' ?>excel.html
こんな感じでexcel.htmlテンプレートを作ります。xls_body変数にはbrタグが入ってくるので、${xls_body}ではなくて#{xls_body}(エスケープ無し)を使っておきます。
http://localhost/excel.html にアクセスすると
<html>
<head>
<title>エクセルファイルからページを作る</title>
</head>
<body>
<div>
<h1>ここがページのH1になる場所</h1>
<p>ここにページの内容を書く。<br><br>複数行の内容を入れ込んでもOK...</p>
<img src="/images/apple.jpg" alt="赤く実ったリンゴ">
</div>
<div>ここがフッター</div>
</body>
</html>という出力が得られると思います。