Adobe
製品
Acrobat
Creative Cloud
Creative Suite
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
その他の製品一覧
ソリューション
デジタルマーケティング
デジタルメディア
教育
金融機関
Web Experience Management
その他のソリューション
ラーニング サポート ダウンロード 会社情報
ご購入
アドビストア 安心のサポート& サービス
アカデミックストア 学生、教職員、個人向け
アドビライセンスストア 中小企業向け
ボリュームライセンスについて 企業、教育機関、官公庁向け
販売パートナー
キャンペーン情報
検索
 
情報 サインイン
ようこそ、 さん カート 注文状況 マイアカウント
マイアカウント
注文状況
アカウント情報の変更
コミュニケーションの設定を変更
サインアウト
サインインの目的 お客様のアカウントや体験版ダウンロード、製品の拡張機能、コミュニティエリアへのアクセスなどを管理するため
Adobe
製品 セクション ご購入   検索  
ソリューション 会社情報
サポート ラーニング
サインイン サインアウト 注文状況 マイアカウント
先行予約の提供開始予定日Date. 商品が発送されるまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。 先行予約の提供開始予定日Date. ダウンロードの準備が整うまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。
個数:
ご購入には学生・教職員個人版の購入資格の確認が必要です。
小計
カートの中身を見る
Adobe Developer Connection / Dreamweaverデベロッパーセンター /

Movable Type連携でソート可能なテーブルを自動更新

著者 鷹野雅弘(Masahiro Takano)

鷹野雅弘
  • 株式会社スイッチ

Content

  • Spry フレームワーク for Ajaxについて
  • XMLファイルを関連づけて、ソート可能なテーブルを実装する
  • 奇数・偶数行、選択した行、マウスオーバーした行にカラーリングを行う
  • XMLファイルの更新を、Movable Type 4.1を使って行う

作成日

21 February 2008

ページ ツール

Facebookでシェア
Twitterでツイート
LinkedInでシェア
ブックマーク
印刷

タグ

必要条件

ユーザーレベル

中級

必要な製品

  • Dreamweaver CS3 (Download trial)

この記事では、Adobe® Dreamweaver® CS3から組み込まれたSpryフレームワーク for Ajaxを利用して、ソート可能なテーブルを作成する方法をご紹介します。テーブルに表示するデータは、外部XMLファイルを参照します。
CSSを使って奇数・偶数行にカラーリングを行うとソートを行っても自動的にカラーリングし直されるだけでなく、クリックした行をカラーリングしたままにしたり、マウスオーバーした行をハイライト表示するなどのスタイル付けについてもご紹介します。

参照している外部XMLファイルを更新すれば、テーブルの内容も自動更新されます。そこで、Movable Type4.1をカスタマイズして、XMLファイルについて詳しくない人でも、データを追加できるような方法についてご紹介します。

Spry フレームワーク for Ajaxについて

まず、Spryの概要からご紹介します。

Spryとは

「Spry(スプライ)」は、“デザイナーのためのAjax”と銘打ってアドビが開発しているAjaxを実装するためのフレームワークです。フレームワークとは、再利用可能な状態でJavaScriptのコードをまとめたものです。ユーザーのフィードバックを受けながら進化しており、Adobe Labs内で最新情報やサンプルなどを確認することができます(ただし、英語のみ)。

Spryを辞書で引くと「〈老人などが〉元気な,活動的な;かくしゃくとした」といった意味が出てきます。瀕死の状況だったDHTML(JavaScriptとCSSの組み合わせ)が、Ajaxの流れで盛り返したことを意味しているようです。なお、「スプレー」ではなく「スプライ」と読みます。

Adobe Labsを通じてベータ版として公開されてきましたが、Dreamweaver CS3からガッチリと組み込まれ、ほぼコーディングなしに、メニューや[挿入]バー、[ビヘイビア]パネル、[バインディング]パネルから実装できるようになっています。

Spryのサンプル

現在、Spry Demoとして6種類のサンプルが用意されています。

上記はSpryで可能な機能をたくさん組み合わせたものですが、下記では個々の機能にフォーカスした小さいサンプルが用意されています。
http://labs.adobe.com/technologies/spry/samples/

たとえば、先頭の「Auto Suggest Sample」を選択し、テキストフィールドに文字を入力すると、自動的に候補を表示してくれます(現在、アップルのサイトが実際にこのような機能を実装しています)。
http://labs.adobe.com/technologies/spry/samples/data_region/SuggestSample.html

なお、Dreamweaver CS3に組み込まれているのはSpry 1.4ですが、Adobe Labsでは、最新バージョンの1.6、および、Dreamweaver Spry Upadaterも用意されています(Adobe Labs内では、常にBeta版として表示されます)。

XMLファイルを関連づけて、ソート可能なテーブルを実装する

XMLファイルを準備する

Spryを実装する前に、サイト定義を行っておく必要があります。JSPやColdFusionなどのサーバテクノロジーも不要ですし、リモートサーバーを設定する必要もありません。

新規サイトを作成し、XMLファイルを準備します。今回は「data」フォルダ内に「cssniteList.xml」を用意しました(CSS Niteというセミナーの過去の出演者、トピックなどをまとめたものです)。

file

まず、このファイルの構造を確認しておきましょう。

<?xml version="1.0" encoding="UTF-8"?> <dataroot> <LIST> <Vol>1</Vol> <開催日>2005-10-20</開催日> <トピック>DreamweaverではじめるWeb標準</トピック> <スピーカー>鷹野雅弘(スイッチ)</スピーカー> </LIST> <LIST> <Vol>2</Vol> <開催日>2005-11-17</開催日> <トピック>Dreamweaver 8で印刷用スタイルシートを作ろう</トピック> <スピーカー>神森 勉(アンカー・テクノロジー)</スピーカー> </LIST> (中略) <LIST> <Vol>18</Vol> <開催日>2007-03-15</開催日> <トピック>Internet Explorer 7対策</トピック> <スピーカー>鷹野雅弘(スイッチ)</スピーカー> </LIST> </dataroot>

XML宣言に続いて、dataroot要素があります。dataroot要素内には、LIST要素があり、さらに、Vol、開催日、トピック、スピーカーがあります。
1つのセミナーにLISTが対応しており、それぞれのLISTには「Vol」、「開催日」、「トピック」、「スピーカー」などの要素が用意されています。
<LIST></LIST>、<開催日></開催日> のように、XMLではそれぞれの要素を開始タグ/閉じタグで囲みます。

XMLファイルを関連づける

新規HTMLファイルを作成し、このファイルにXMLファイルを関連付けましょう。

サイト内に新規ファイルを作成し、「spryTable.html」という名称に変更します。このファイルをデザインビューで開き、[挿入]バーの[Spry]タブの一番左側の[Spry XMLデータセット]をクリックします。

file

[Spry XMLデータセット]ダイアログボックスが開いたら、[参照]ボタンをクリックして、「cssniteList.xml」を選択します。[スキーマを取得]ボタンをクリックすると、XMLファイルの構造が読み込まれ、[行エレメント]内に表示されます。

file

[行エレメント]の「LIST」をクリックすると、[データセット列]に「Vol」、「開催日」、「トピック」、「スピーカー」が表示されます。「開催日」は日付なので[データタイプ]を「日付」に変更します。

file

いったん保存しましょう。
[依存ファイルのコピー]ダイアログボックスが開きます。SpryでXMLデータセットを扱うために必要な「SpryData.js」と「xpath.js」をサイト内の「SpryAssets」フォルダに保存することを促されます(保存先はサイト定義で変更することができます)。[OK]をクリックして進めます。

file

ここまででXMLファイルを関連づけは終了ですが、この状態では、デザインビューにはまったく変化がありません。
念のため、ソースコードを確認すると、head要素内に次のようなコードが書かれています。

<script src="SpryAssets/xpath.js" type="text/javascript"></script> <script src="SpryAssets/SpryData.js" type="text/javascript"></script> <script type="text/javascript"> <!-- var ds1 = new Spry.Data.XMLDataSet("data/cssniteList.xml", "dataroot/LIST/開催日"); ds1.setColumnType("開催日", "date"); //--> </script>

ここでは次のようなことが記述されていますが、コードの確認を行わずに進めてもOKです。

  • 「SpryData.js」と「xpath.js」へのリンク
  • 「cssniteList.xml」への関連付け
  • 開催日の列のみ、日付として扱うこと

デザインビューに戻して次に進みましょう。

Spryテーブルの挿入

[挿入]バーの[Spry]タブの[Spryテーブル]をクリックします。

file

[Spryテーブルの挿入]ダイアログボックスが開いたら、ソートしたい列ごとに、[ヘッダがクリックされたときに列をソート]にチェックをつけます。

file

OKをクリックすると、[Spry領域を追加しますか?]のメッセージが表示されるので、[はい]をクリックします。

file

1行目には「Vol」、「開催日」、「トピック」、「スピーカー」という見出しの文字列が、2行目には「{Vol}」、「{開催日}」、「{トピック}」、「{スピーカー}」のように{}で囲まれた文字列が表示されます。

file

ファイルを保存して、ブラウザプレビューしてみましょう(テーブルのボーダーなどをつけておいた方がわかりやすいかもしれません)。

XMLファイルから読み込まれた情報がテーブルに表示されます。1行目の項目名をクリックすると、ソート(並び替え)が実行されます。

file
file

奇数・偶数行、選択した行、マウスオーバーした行にカラーリングを行う

次に、Spryテーブルに対してカラーリングなどのスタイル付けを行いましょう。

CSSファイルをリンクする

設定しやすくするために、挿入したSpryテーブルをいったん削除します。

奇数行、偶数行、マウスオーバー、選択に対応したクラスを作った下記のようなコードを記述したCSSをサイト内に用意します。

tr.evenRow { background-color:#FFFFCC; } tr.oddRow { background-color:#FFCCFF; } tr.hoverRow { color:#FFFFFF; background-color:#333333; } tr.selectRow { background-color:#006699; color: #FFFFFF; }

このCSSファイルを、HTMLファイルにリンクします。

file

Spryテーブルの挿入

改めて、[挿入]バーの[Spry]タブの[Spryテーブル]をクリックして、[Spryテーブルの挿入]ダイアログボックスを開きます。
[奇数行クラス]、[偶数行クラス]、[Hoverクラス]、[クラスの選択]に対応する、クラスをポップアップメニューから選択していきます。

file

[OK]をクリックしてダイアログボックスを閉じ、ブラウザプレビューして確認します。
列をソートし直しても、基数行、偶数行にカラーリングされるようになります。

file

クリックした行や、マウスオーバーした行にもカラーリングが行われます。

file

ソースコードを確認しよう

body要素内でには、下記のように記述されています。

<div spry:region="ds1">  <table>   <tr>   <th spry:sort="Vol">Vol</th>   <th spry:sort="開催日">開催日</th>   <th spry:sort="トピック">トピック</th>   <th spry:sort="スピーカー">スピーカー</th>   </tr>   <tr spry:repeat="ds1" spry:odd="oddRow" spry:even="evenRow"   spry:hover="hoverRow" spry:select="selectRow">   <td>{Vol}</td>   <td>{開催日}</td>   <td>{トピック}</td>   <td>{スピーカー}</td>   </tr>  </table> </div>

つまり、XMLファイルを参照していているだけで、テキストは記述していません。XMLファイルのみを更新してアップロードすれば、このテーブルは自動更新されるのです。

file

なお、現状のバージョンではJavaScriptをオフにすると、XMLファイルは読み込まれず、2行目には{Vol}{開催日}のように表示されてしまいます。この問題については将来のバージョンで解消されるようです。

XMLファイルの更新を、Movable Type 4.1を使って行う

データが更新されていくリストの更新にはDreamweaverテンプレートのリピート領域を用いて、DreamweaverやContributeで運用していくのがセオリーともいえます。
今回は更新するのがXMLファイルですので、Dreamweaver以外のアプローチを考えてみましょう。

なお、ここではそれぞれの項目を「フィールド」、複数のフィールドで構成されるひとつのまとまりを「レコード」と呼びます。

Movable Type 4.1とカスタムフィールド

Movable Typeといえば、WordPressと並び、代表的なブログのエンジンのひとつです。
最初から用意されている「タイトル」、「カテゴリ」、「エントリーの内容」(本文)、「追記」、「抜粋」、「キーワード」などの項目を、それぞれのフィールドに“流用”するようなカタチで使うことができます。しかし、それ以上にフィールドの数が増えた場合には対応できませんし、また、項目名とフィールド名が異なるというのは運用していく上でスマートとはいえません。

file

Movable Typeでは「RightFields」、「CustomFields」といったプラグインでこれに対応してきましが、2008年1月末にリリースされたMovable Type 4.1では「CustomFields」が標準機能となりました。

カスタムフィールドの実装

Movable Typeの[設定]メニューで[カスタムフィールド]を選択し、新規フィールドを作成します。

file

項目名として表示される[名前]、MTタグ名として利用される[テンプレートタグ]を入力します。正確には[テンプレートタグ]に「entrydatavol」と入力した場合、「<$MTEntryDataVol$>」「mt:entryDataVol」のように使います。

file

「イベント名」、「スピーカー」、「セッション名」、「日付」などのフィールドを追加したら、入力画面をカスタマイズします。[表示オプション]をクリックすると、追加したフィールドが表示されるので、表示されるようにチェックをつけます。
不要なフィールドはチェックをはずすことで非表示にすることができますが、[タイトル][本文]はチェックをはずすことができません。

file

入力画面をカスタマイズしたら、1レコードを1エントリーとして入力します(後で編集しやすいように、タイトルにも識別しやすいテキストを入れておくとよいでしょう)。

file

XMLデータをはき出すテンプレートを作成

新規テンプレート(カスタムインデックステンプレート)を作成し、[出力ファイル名]を「cssniteList.xml」のように設定します。
テンプレートのコードとして次のようなコードを記述します。

file
<?xml version="1.0"?> <dataroot><mt:entries> <LIST> <VOL><$MTEntryDataVol$></VOL> <DATE><$MTEntryDataDate$></DATE> <TOPIC><$MTEntryDataSession$></TOPIC> <SPEAKER><$MTEntryDataSpeaker$></SPEAKER> </LIST> </mt:entries></dataroot>

<mt:entries>から</mt:entries>までは、エントリーに応じて増えますので、データを入力すれば常に新しいレコードが追加されたXMLファイルが更新されることになります。

このように、Movable TypeなどのブログをCMS的な入力インターフェイスとして使うことで、コードを気にせず、文字を入力していくことが可能です。
Movable Typeの導入にもライセンス費がかかりますが、インストールされたPCでなくても更新できるといったメリットもあります。
デザインビューでレイアウト結果を確認しながら進めることができるDreamweaverテンプレートとうまく切り分けて使っていかれるとよいでしょう。

なお、DevNetでは近日中に、Movable Type 4.1の新しいタグにも対応した[拡張機能 for Movable Type 4.1]がリリースされる予定です。リファランスはもちろん、コードヒントに対応しています。

製品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • モバイルアプリ
  • Photoshop
  • Touch Apps

ソリューション

  • デジタルマーケティング
  • コンテンツオーサリング
  • Web Experience Management

業種別ソリューション

  • 教育
  • 金融機関

サポート

  • ヘルプ&サポート
  • 注文と返品
  • ダウンロードに関するヘルプ
  • ユーザー登録に関するヘルプ

ラーニング

  • ADC: Adobe Developer Center
  • Adobe TV
  • Design Magazine
  • Photoshop Magazine
  • Focus In

ご購入方法

  • アドビストア
  • アカデミックストア
  • アドビライセンスストア
  • ボリュームライセンスについて
  • 販売パートナー
  • キャンペーン情報

ダウンロード

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

会社情報

  • プレスルーム
  • パートナープログラム
  • 企業の社会的責任(英語)
  • 採用情報
  • 投資家の皆様へ(英語)
  • イベント&セミナー
  • Legal(英語)
  • セキュリティ
  • お問い合わせ
国・地域および言語の選択 日本(変更)
国・地域および言語の選択 閉じる

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

利用条件 | プライバシーポリシーとCookie (更新)

Reviewed by TRUSTe: site privacy statement