
【MT4分科会第2回勉強会】テンプレートタグカスタマイズ(初級者対象)の課題を説明します。

課題:「えむとす小学校(しょうがっこう)だより」をMTOSで構築すること。
http://kiasma.jp/20080621/
つまり、テンプレートの制作が課題です。
HTML、CSS、Javascript、画像ファイルは配布します。
http://kiasma.jp/20080621/20080621MTOS.zip
記事をインポートできますよう、テキストファイルも配布します。
http://kiasma.jp/20080621/20080621MTOS_txt.zip
ウェブページはおそれいりますが各自作成をお願いいたします。
こちらからタイトル・本文をコピペできます。
http://kiasma.jp/20080621/privacy.html
変数と分岐や、さまざまなMTタグを用いて、下記の実装にチャレンジしてください。
なお、「えむとす小学校(しょうがっこう)だより」で用いています写真は全て「2000ピクセル以上のフリー写真素材集」様からお借りしております。「2000ピクセル以上のフリー写真素材集について/ご利用上のご注意」にも目を通していただけますよう、よろしくお願いいたします。
1.インポート用テキストファイルの準備
インポート用テキストファイル(http://kiasma.jp/20080621/20080621MTOS_txt.zip)をダウンロードしてください。
2.ブログの作成
ブログを作成してください。
サイトURLを画像のとおりにしていただきますと、インポート用テキストファイルを、そのまま活用できます。

3.テキストのインポート
ブログが作成されましたら、システムメニューのツールをクリックしてください。


- 「ブログを選択」をクリックし、モーダルダイアログから、「えむとす小学校(しょうがっこう)」を選択してください
- 「インポートしたブログ記事の所有者」は「ブログ記事の著者を変更しない」を選び、「新しいユーザーの初期パスワード」を入れてください
- 「インポートファイルをアップロード(オプション)」でインポート用テキストファイルを選択し、「ブログ記事のインポート」ボタンを押してください。
- インポートが開始されます。

4.フォルダcss、img、jaを"\htdocs\今回のフォルダ"直下にアップ
配布のCSS、画像、Javascriptファイル(http://kiasma.jp/20080621/20080621MTOS.zip)を\htdocs\今回のフォルダ(20080621)直下にアップする必要があります。

フォルダcss、img、jaは、"\htdocs\今回のフォルダ"直下にコピペでアップでオーケーですが、メンドウでなければ、MTから登録(cssとjsはインデックステンプレートとして/画像はアイテムとして)するのでもだいじょうぶです。
5.再構築してください
デフォルトのテンプレートでの「えむとす小学校(しょうがっこう)」が生成されます。

ユーザを6学年分用意してください。(ユーザはインポートで生成されます。「[MT4分科会課題説明] 準備編1:インポート」をご参照ください。)

カテゴリーから各学年を用意しても良いのですが、小学生じしんが投稿することを想定しています。
小学生がMTの投稿をバリバリできる......とも限らないので、投稿者がカテゴリーを付け忘れても、学年のページにはきちんとソートさせられる仕組みを、今回は目指してください。
ブログ記事のパーマリンクは、
すなわち 投稿者の表示名/年月日.html としてください。

ブログ記事リストのアーカイブマッピングは、
- ユーザ別:author-display-name/index.html(%-a/%f)
- カテゴリー別:category/sub-category/index.html(%-c/%i)
にしてください。

ユーザ別のアーカイブマッピングを行う理由も、「[MT4分科会課題説明] 準備編2:ユーザの仕様」で書いたことと同じです。
カテゴリーから各学年を用意しても良いのですが、小学生じしんが投稿することを想定しています。
小学生がMTの投稿をバリバリできる......とも限らないので、投稿者がカテゴリーを付け忘れても、学年のページにはきちんとソートさせられる仕組みを、今回は目指してください。

1.HTMLファイル:
"MTタグを使いたい"1枚もののページは、インデックステンプレートにします。ちなみに、"MTタグを使わなくてすむ"1枚もののページはウェブページにします。
- index.html:トップページ
- contact.html:おといあわせ(インデックステンプレにしたのはいずれフォームとかつけられるとヨイと考えたからです。ただし今回はテキストのみ。)
- sitemap.html:サイトマップ
2.CSS、Javascriptファイル:
CSS、Javascriptファイルは、下記のようにインデックステンプレート化していただいても、htdocsに直接コピーするのでもかまいません。
- css/fonts.css:フォントサイズ均一化用CSS(拝借元:http://developer.yahoo.com/yui/fonts/)
- css/import.css:読み込み用
- css/module.css:汎用性の高いCSS(clearfix等)
- css/print.css:印刷用CSS
- css/reset.css:ブラウザ設定無効化CSS(拝借元:http://developer.yahoo.com/yui/reset/)
- css/structure.css:レイアウト等、このサイトのためのユニークな設定用のCSS
- css/typography.css:フォントサイズ・色を指定するCSS(フォントサイズの仕様はこちらから確認できます)
- css/version4.css:第4世代ブラウザ用
- js/rollover.js:ロールオーバー用CSS(<img src="hoge.gif" class="btn" />とすれば自動的にロールオーバー時のhoge.gifをhoge_on.gifに差し替えてくれるJavascript)

1.ヘッダナビ:
インデックステンプレートでつくるHTMLファイルを<li>タグで並べてください。コンテナタグは使えません。直書きになります。
2.写真:
今回は、ひんぱんに変更することを想定していないので、インデックステンプレート(index.html)に直書きでオーケーです。
3.最近(さいきん)のニュース:
ブログ記事を最大20件、降順でリスト表示させてください。書いた人の学年のアイコンがつくようにしてください。
*ヒント:<li class="schoolyear01">のclass名を変更させることで、cssからアイコンが変更できます。MTタグを用いて、class名を変更させる方法を考えてみてください。
4.グローバルナビゲーションA:
各学年の扉ページへのリンクをリスト表示させてください。
*ヒント:ユーザ別にブログ記事リストを並べる方法を考えてください。
5.グローバルナビゲーションB:
各行事の扉ページへのリンクをリスト表示させてください。
*ヒント:カテゴリー別にブログ記事リストを並べる方法を考えてください。
6.グローバルナビゲーションC:
各ウェブページへのリンクをリスト表示させてください。
*ヒント:ウェブページを並べる方法を考えてください。

1.グローバルナビゲーションC:
現在"いる"ページをon表示させてください。<li class="here">になれば、下地がピンクになります。
*ヒント:<li>にするか、<li class="here">にするかは、変数と分岐を用いることで可能になります。なお、IEの仕様ゆえ、<ul><li>部分の改行にヘンな隙間が入ります。ですので、改行を<!-- -->でコメントアウトしています。ややこしくなりそうでしたら、IE以外のブラウザで課題にチャレンジしていただけたらと存じます。
2.大見出し:
ウェブページのタイトルを表示させてください。
3.本文:
ウェブページの本文を表示させてください。

カテゴリーに所属する記事を降順表示させてください。
1.グローバルナビゲーションB:
現在"いる"ページをon表示させてください。<li class="here">になれば、下地がピンクになります。
*ヒント:<li>にするか、<li class="here">にするかは、変数と分岐を用いることで可能になります。なお、IEの仕様ゆえ、<ul><li>部分の改行にヘンな隙間が入ります。ですので、改行を<!-- -->でコメントアウトしています。ややこしくなりそうでしたら、IE以外のブラウザで課題にチャレンジしていただけたらと存じます。
2.大見出し:
カテゴリー名を表示させてください。
3.見出し:
ブログ記事タイトルと、学年アイコンを表示させてください。
*ヒント:<span class="schoolyear01">のclass名を変更させることで、cssからアイコンが変更できます。MTタグを用いて、class名を変更させる方法を考えてみてください。
4.本文:
ブログ記事の本文を表示させてください。
5.ボタン:
パーマリンクを貼ってください。
6.本文の下:
日付、所属カテゴリーとそのブログ記事リストページへのリンク、学年と学年アイコンが表示されるようにしてください。
7.文字サイズ:
書いた人の学年によって、文字のサイズを違えてください。
- 1・2年生が書いたら、大サイズの文字
- 3・4年生が書いたら、中サイズの文字
- 5・6年生が書いたら、小サイズの文字
にするということです。
<div class="文字サイズ">
見出し
本文
ボタン
</div>
という構造になっています。CSSで、文字サイズを制御します。
- 1・2年生は <div class="fontS">
- 3・4年生は <div class="fontM">
- 5・6年生は <div class="fontL">
になるよう、MTタグを用いて、class名を変更させる方法を考えてみてください。
フォントサイズ制御専用のCSSを用意しました。詳しくは http://kiasma.jp/20080621/css/typography.css をご覧ください。

各学年(各ユーザ)に所属する記事を降順表示させてください。
1.グローバルナビゲーションA:
現在"いる"ページをon表示させてください。<li class="here">になれば、下地がピンクになります。
*ヒント:<li>にするか、<li class="here">にするかは、変数と分岐を用いることで可能になります。なお、IEの仕様ゆえ、<ul><li>部分の改行にヘンな隙間が入ります。ですので、改行を<!-- -->でコメントアウトしています。ややこしくなりそうでしたら、IE以外のブラウザで課題にチャレンジしていただけたらと存じます。
2.閲覧している学年に所属する記事のリスト:
閲覧している学年に所属する記事を降順で最大5件、リスト表示させてください。
<li class="here">
<a href="***"><span class="arrow">5年生</span></a>
<ul class="child">
<li><a href="***"><span class="arrow">運動会に向けて</span></a></li>
<li><a href="***"><span class="arrow">演奏しました</span></a></li>
</ul>
</li>
と、<li class="here">のなかに、<ul class="child">~</ul>を入れ子で作成してください。(改行コードをコメントアウトしないとIEではヘンな隙間ができますのでご注意ください。)
3.大見出し:
学年(ユーザ名)を表示させてください。
4.見出し:
ブログ記事タイトルを表示させてください。
5.本文:
ブログ記事の本文を表示させてください。
6.ボタン:
パーマリンクを貼ってください。
7.本文の下:
日付、所属カテゴリーとそのブログ記事リストページへのリンク、学年と学年アイコンが表示されるようにしてください。
8.文字サイズ:
書いた人の学年によって、文字のサイズを違えてください。
- 1・2年生が書いたら、大サイズの文字
- 3・4年生が書いたら、中サイズの文字
- 5・6年生が書いたら、小サイズの文字
にするということです。
<div class="文字サイズ">
見出し
本文
ボタン
</div>
という構造になっています。CSSで、文字サイズを制御します。
- 1・2年生は <div class="fontS">
- 3・4年生は <div class="fontM">
- 5・6年生は <div class="fontL">
になるよう、MTタグを用いて、class名を変更させる方法を考えてみてください。
フォントサイズ制御専用のCSSを用意しました。詳しくは http://kiasma.jp/20080621/css/typography.css をご覧ください。

ブログ記事単体を表示させてください。
1.グローバルナビゲーションA:
現在"いる"ページをon表示させてください。<li class="here">になれば、下地がピンクになります。
*ヒント:<li>にするか、<li class="here">にするかは、変数と分岐を用いることで可能になります。なお、IEの仕様ゆえ、<ul><li>部分の改行にヘンな隙間が入ります。ですので、改行を<!-- -->でコメントアウトしています。ややこしくなりそうでしたら、IE以外のブラウザで課題にチャレンジしていただけたらと存じます。
2.閲覧している学年に所属する記事のリストとon表示:
閲覧している学年に所属する記事を降順で最大5件、リスト表示させた上、現在"いる"ページをon表示させてください。<ul class="child">のなかの<li class="here">は濃い目の水色になります。
<li class="here">
<a href="***"><span class="arrow">5年生</span></a>
<ul class="child">
<li class="here"><a href="***"><span class="arrow">運動会に向けて</span></a></li>
<li><a href="***"><span class="arrow">演奏しました</span></a></li>
</ul>
</li>
と、<li class="here">のなかに、<ul class="child">~</ul>を入れ子で作成してください。さらに<ul class="child"><li class="here">~</ul>としてください。(改行コードをコメントアウトしないとIEではヘンな隙間ができますのでご注意ください。)
3.大見出し:
学年(ユーザ名)を表示させてください。
4.見出し:
ブログ記事タイトルを表示させてください。
5.本文:
ブログ記事の本文を表示させてください。
6.ボタン:
パーマリンクを貼ってください。
7.文字サイズ:
書いた人の学年によって、文字のサイズを違えてください。
- 1・2年生が書いたら、大サイズの文字
- 3・4年生が書いたら、中サイズの文字
- 5・6年生が書いたら、小サイズの文字
にするということです。
<div class="文字サイズ">
見出し
本文
ボタン
</div>
という構造になっています。CSSで、文字サイズを制御します。
- 1・2年生は <div class="fontS">
- 3・4年生は <div class="fontM">
- 5・6年生は <div class="fontL">
になるよう、MTタグを用いて、class名を変更させる方法を考えてみてください。
フォントサイズ制御専用のCSSを用意しました。詳しくは http://kiasma.jp/20080621/css/typography.css をご覧ください。

1.大見出し:
サイトマップ用のインデックステンプレートに、直書きでオーケーです。
2.見出し(学年(がくねん)ごとのニュース):
各学年の扉ページへのリンクをリスト表示させてください。
3.見出し(行事(ぎょうじ)ごとのニュース):
各行事の扉ページへのリンクをリスト表示させてください。
4.見出し(お知(し)らせ):
各ウェブページへのリンクをリスト表示させてください。
5.インデックステンプレートで作ったHTMLファイルのリスト:
サイトマップ用のインデックステンプレートに、直書きでオーケーです。

追加課題01:画像を投稿した日記の、そのサムネイル画像とタイトルを、テーブル形式で並べてください
- 70日以内に書かれたエントリー内に含まれる、画像アイテムとタイトルをすべて並べてください。
- 一行に3つずつ、縦横208pxにしたアイテムのサムネイルを並べます。(画像の正方形のトリミングはCSSでおこなっています)
- 各アイテムのサムネイルはエントリーにリンクを張って下さい。
- 最後に3つ並べるのに足りなくなった場所は、colspanを使い空要素で埋めてください。(上記画像の場合
としています)
- タイトルには学年アイコンをつけてください。
- このデザインのテーブルを実装するにあたり、structure.cssを既存と差し替えてください。
structure.cssのダウンロード
*ヒント:特定の繰り返し後に、異なる処理を行う方法の練習です。一行ごとに で開き で閉じるようにしてください。余った時の処理の分岐にも、工夫が必要です。<MTIf name="__Last__">を用いてください。
HTMLソース
<table class="thumbnail" summary="最近(さいきん)の写真">
<tr>
<td>
<p><a href="http://kiasma.jp/20080621/6/20080615.html"><img src="http://kiasma.jp/20080621/assets_c/2008/06/photo_06-thumb-autox208.jpg"alt="修学旅行の思い出" /></a></p>
<h3><span class="schoolyear06"><a href="http://kiasma.jp/20080621/6/20080615.html">修学旅行の思い出</a></span></h3>
</td>
<td>
<p><a href="http://kiasma.jp/20080621/3/20080605.html"><img src="http://kiasma.jp/20080621/assets_c/2008/06/photo_03-thumb-autox208.jpg"alt="つうがくろにいつもいるネコ" /></a></p>
<h3><span class="schoolyear03"><a href="http://kiasma.jp/20080621/3/20080605.html">つうがくろにいつもいるネコ</a></span></h3>
</td>
<td>
<p><a href="http://kiasma.jp/20080621/2/20080510.html"><img src="http://kiasma.jp/20080621/assets_c/2008/06/photo_02-thumb-autox208.jpg"alt="りかのじゅぎょう" /></a></p>
<h3><span class="schoolyear02"><a href="http://kiasma.jp/20080621/2/20080510.html">りかのじゅぎょう</a></span></h3>
</td>
</tr>
<tr>
<td>
<p><a href="http://kiasma.jp/20080621/4/20080420.html"><img src="http://kiasma.jp/20080621/assets_c/2008/06/photo_04-thumb-autox208.jpg"alt="春の遠足" /></a></p>
<h3><span class="schoolyear04"><a href="http://kiasma.jp/20080621/4/20080420.html">春の遠足</a></span></h3>
</td>
<td colspan="2"><p> </p></td>
</tr>
</table>

追加課題02:画像を投稿した日記の、そのサムネイル画像とタイトルを、テーブル形式で並べてください。奇数のアイテムはタイトルが上側、偶数のアイテムはタイトルが下側になるようにしてください
追加課題01の応用編です。
*ヒント:奇数/偶数を分岐させる方法を考えてみてください。
実装済みのページ
http://kiasma.jp/20080621/index.html
HTMLソース
<h2>最近(さいきん)の写真(しゃしん)</h2>
<table class="thumbnail" summary="最近(さいきん)の写真">
<tr>
<td><h3><span class="schoolyear06">
<a href="http://kiasma.jp/20080621/6/20080615.html">
修学旅行の思い出</a></span></h3>
<p><a href="http://kiasma.jp/20080621/6/20080615.html"><img src="
http://kiasma.jp/20080621/assets_c/2008/06/photo_06-thumb-autox208.jpg"
alt="修学旅行の思い出" /></a></p></td>
<td><p><a href="http://kiasma.jp/20080621/3/20080605.html"><img src="
http://kiasma.jp/20080621/assets_c/2008/06/photo_03-thumb-autox208.jpg"
alt="つうがくろにいつもいるネコ" /></a></p>
<h3><span class="schoolyear03">
<a href="http://kiasma.jp/20080621/3/20080605.html">
つうがくろにいつもいるネコ</a></span></h3></td>
<td><h3><span class="schoolyear02">
<a href="http://kiasma.jp/20080621/2/20080510.html">
りかのじゅぎょう</a></span></h3>
<p><a href="http://kiasma.jp/20080621/2/20080510.html"><img src="
http://kiasma.jp/20080621/assets_c/2008/06/photo_02-thumb-autox208.jpg"
alt="りかのじゅぎょう" /></a></p></td>
</tr>
<tr>
<td><p><a href="http://kiasma.jp/20080621/4/20080420.html"><img src="
http://kiasma.jp/20080621/assets_c/2008/06/photo_04-thumb-autox208.jpg"
alt="春の遠足" /></a></p>
<h3><span class="schoolyear04">
<a href="http://kiasma.jp/20080621/4/20080420.html">
春の遠足</a></span></h3></td>
<td colspan="2"><p> </p></td>
</tr>
</table>
小野崎さんが、さらなる課題を考えてくださいました。
追加課題03:画像を投稿した日記の、そのサムネイル画像とタイトルを、サンプル画像のとおりに交互に、テーブル形式で並べてください。

- 70日以内に書かれたエントリー内に含まれる、最新の画像アイテムを並べてください。
- 一行に3つずつ、横200pxにしたアイテムのサムネイルを並べます。
- 各アイテムのサムネイルはエントリーにリンクを張って下さい。
- 1列目はサムネイルの下に、2列目はサムネイルの上にと、交互にエントリーのタイトルを並べます。
- 1エントリーに3行分を使います。写真はrowspanを使い、2行分にしてください。
- 最後に3つ並べるのに足りなくなった場所は、colspanとrowspanを使い空要素で埋めてください。
実装済みのページ
http://www.zelazny.mydns.jp/school/index2.html
*ヒント:テーブルでの要素のHTML上への出現順序に合わせて、どうやって書き出すかに工夫が要ります。出力ブロックを変数として扱う事で、簡素化した記述が出来ます。変数のappendモディファイアを使います。
HTMLソース
<table>
<tr>
<td rowspan="2" class="nikki_thumb">
<a href="http://www.zelazny.mydns.jp/school/6/20080615.html"
title="修学旅行の思い出"><img src="
http://www.zelazny.mydns.jp/school/assets_c/2008/06/
photo_06-thumb-200xauto.jpg"
alt="修学旅行の思い出" title="修学旅行の思い出" /></a></td>
<td class="nikki_title">つうがくろにいつもいるネコ</td>
<td rowspan="2" class="nikki_thumb">
<a href="http://www.zelazny.mydns.jp/school/2/20080510.html"
title="りかのじゅぎょう"><img src="
http://www.zelazny.mydns.jp/school/assets_c/2008/06/
photo_02-thumb-200xauto.jpg"
alt="りかのじゅぎょう" title="りかのじゅぎょう" /></a></td>
</tr>
<tr>
<td rowspan="2" class="nikki_thumb">
<a href="http://www.zelazny.mydns.jp/school/3/20080605.html"
title="つうがくろにいつもいるネコ"><img src="
http://www.zelazny.mydns.jp/school/assets_c/2008/06/
photo_03-thumb-200xauto.jpg"
alt="つうがくろにいつもいるネコ" title="つうがくろにいつもいるネコ" /></a></td>
</tr>
<tr>
<td class="nikki_title">修学旅行の思い出</td>
<td class="nikki_title">りかのじゅぎょう</td>
</tr>
<tr>
<td rowspan="2" class="nikki_thumb">
<a href="http://www.zelazny.mydns.jp/school/4/20080420.html"
title="春の遠足"><img src="
http://www.zelazny.mydns.jp/school/assets_c/2008/06/
photo_04-thumb-200xauto.jpg"
alt="春の遠足" title="春の遠足" /></a></td>
<td class="nikki_title">にゅうがくしました</td>
<td rowspan="3" colspan="1"></td>
</tr>
<tr>
<td rowspan="2" class="nikki_thumb">
<a href="http://www.zelazny.mydns.jp/school/1/20080406.html"
title="にゅうがくしました"><img src="
http://www.zelazny.mydns.jp/school/assets_c/2008/06/
photo_01-thumb-200xauto.jpg"
alt="にゅうがくしました" title="にゅうがくしました" /></a></td>
</tr>
<tr>
<td class="nikki_title">春の遠足</td>
</tr>
</table>
6月21日@秋葉原でのWebSig24/7 MT4分科会は無事終了いたしました。ご参加くださいました皆様ありがとうございました。
ぼちぼち解答編をまとめてまいります。
モジュール分けについて

モジュール化について、いろいろな方法があるのですが、今回のサンプルは下記のように設定しました。
- ヘッダ
全てのテンプレートで同じデザイン・内容ですので、うむをいわさずモジュール化します。
- サイドバー
各テンプレごとにユニークですが、<MTIfArchiveType>を使えば、ひとつのモジュールにまとめられます。
- 記事本体
各テンプレートごとにぜんぜんユニークですので、記事本体については各テンプレートに記述します。
- フッタ
全てのテンプレートで同じデザイン・内容ですので、うむをいわさずモジュール化します。
以上をふまえまして、テンプレートは下記のとおり用意しました。
テンプレートの種類
- インデックステンプレート(.js、.cssを除く)
- アーカイブテンプレート
- テンプレートモジュール
どのようにモジュール化するのか、が、MTテンプレート設計のキモであります。モジュール化しすぎてしまうと、かえって管理が大変になると考えられます。<MTSetVarBlock>等をうまく使って、モジュールを最小限にする方法もあるのですが、今回は、3つのモジュールで考えてみます。(必ずしもこの方法でなくてオーケーです)
解答例テンプレートのダウンロード
http://kiasma.jp/20080621/20080621MTOS_template.zip
|