TNC Ajax Calendar Field Module
■ エンティティに、Ajaxに対応した、シンプルなカレンダーを追加する
モジュールの概要
TNC Ajax Calendar Field Module は、名前に「Field」と入っているので、Drupal をよくご存知の方にはお分かりのことと思いますが、Field Module と連動して機能するタイプのモジュールです(Field Module につきましては、「TNC HTML Slideshow Field Module」のページの冒頭部分で、簡単に説明しています)。

TNC Ajax Calendar Field Moduleは、その Field Module と連動することにより、具体的には、「node」を始めとした全てのコンテンツタイプ(=「Entity」)に、Ajax に対応した、シンプルなカレンダーを追加します
開発履歴
2011年04月27日 UPDATE|多言語化に対応しました。
2011年03月08日 UPDATE|Drupal 7 に対応しました(それに伴い、当モジュールの名称変更と若干の機能追加を行いました)。
2011年01月11日 UPDATE|リンクになっている日付に、ツールチップとして、リンク先の URL と node タイトルを表示するようにしました
2010年04月13日 LAUNCH|当サイトにて、実運用を開始しました。Information No.0005
(アップデート内容の詳細につきましては、このページの最下部にてインフォメーションしております。)
2つの表示形式に対応
TNC Ajax Calendar Field Module は、シンプルにカレンダー機能を提供します。表示形式としては、「ワンライン・タイプ」と「改行タイプ(週毎)」の2つに対応しています。
3種類の抽出条件
TNC Ajax Calendar Field Module は、抽出条件に合致する「node」もしくは特定の「Entity」へのリンクを、カレンダー上にマッピングします。現在のところ、抽出条件としては、「node」に対しては、コンテンツタイプ、ターム(一般的には「カテゴリー」に相当します)、ユーザーという3種類に対応しています。そして、これらについては、それぞれ、複数の項目を設定することができるようになっています。また、「Entity」については、「Entity Type」と「Bundle Type」の2つの条件に対応しています(「Entity Type」と「Bundle Type」の関係は、「node」と「article」との関係に相応していると理解すれば良いでしょう)。また、これらの条件は、カレンダーを設置するノード毎に指定することができるようになっています。
Ajax対応
TNC Ajax Calendar Field Module は、Ajax に対応しています。そのため、JavaScript が有効な環境においては、ページ遷移を伴わないで前月や翌月のカレンダーを表示することが可能です。もちろん、JavaScript が有効でない環境にも対応しています。
2種類の表示方式 / 最初の年月の指定
TNC Ajax Calendar Field Module には、2種類の表示方式があります。1つは、カレンダーを常時表示させておくタイプで(実例:当サイトのコラムインデックスページ)、もう1つは、デフォルトではカレンダーを非表示にさせておいてボタン・クリックにより表示させるタイプです(実例:当サイトのコラムエントリーページ)。また、表示するカレンダーの最初の年月を指定することができるようになっています(当サイトでは、サイトを公開した2010年3月に設定しています)。
ノード毎に異なるカレンダーを設置する
TNC Ajax Calendar Field Module は、Field Module の1つのフィールドとして機能します。ですので、「node」を含めて、既存・新規を問わず、あらゆる「Entity」に設置することができます。もちろん、カレンダーを設置する「Entity」と設置しない「Entity」を、設定することができます。また、繰り返しになりますが、TNC Ajax Calendar Field Module は、2種類の抽出条件に対応しており、それらについてはノード毎に設定することができます。そのため、ページ毎に異なる条件で抽出したカレンダーを表示することができるようになっています。
実例
当サイトにおいて、「DIARY :: AROUND THE CORNER」に関するカレンダー以外のカレンダーは、トップページのものも含めて全て TNC Ajax Calendar Field Module により提供されています。
開発履歴(詳細)
2011年04月27日 UPDATE|多言語化に対応しました。
今回のアップデートにより、当モジュールを多言語化しているサイトにおいても使用することができるようになりました。ただし、カレンダーの「年月」表示部分については、今回は、日本語と英語のみへの対応となっています。カレンダーの日付から各エントリーへのリンクに関しては、全ての言語に対応可能です(ただし、オリジナルの「Entity」に関しては、その「Entity」が多言語化に対応している必要があります)。なお、Drupal 7 においては、各ページへの URL 設定により多言語化を行うためには、例えば「http://www.example.com/ja」「http://www.example.com/en」のようにパスの最初に言語選択のための文字列を指定する方法と、「http://ja.example.com」「http://en.example.com」のようにドメインに言語選択のための文字列を指定する方法の、2つの方法が用意されていますが、今回のバージョンアップにより、当モジュールは、パスの最初に言語選択のための文字列を指定する方法に対応しています。ドメインに言語選択のための文字列を指定する方法ヘの対応に関しては今後の課題ということになりますが、(1)現状では、この方法による言語選択のニーズは少ないように思われる、(2)この方法に対応するためにはやや大掛かりな修正が必要となる、という2点の理由により、バージョンアップ作業の優先順位は低いものと考えています。

2011年03月08日 UPDATE|Drupal 7 に対応しました(それに伴い、当モジュールの名称変更と若干の機能追加を行いました)。
今回のアップデートにより、当モジュールを Drupal 7 上で使用することができるようになりました。それに伴い、当モジュールの名称を、旧来の「TNC CCK Calendar Field Module」から、「TNC Ajax Calendar Field Module」へと変更しました。名称変更の理由は、(1)Drupal がバージョン 6 からバージョン 7 へと進化するのに伴い、当モジュールが機能する基盤モジュールがそれまでの CCK Module から Field Module となった(そのため、名称中の「CCK」というキーワードは実体にそぐわなくなった)、(2)当モジュールのコア機能として Ajax 対応している(=ページ遷移を伴わずにカレンダーエリアを更新できる)ということがあると考えた、ためです。また、第1の理由による当然の帰結として、当モジュールは、Drupal 7 から導入された「Entity」という概念・実装に対応しています(「Entity」については、ブログ「DIARY :: AROUND THE CORNER」のエントリー 「Entity 化する Drupal」 で、若干の解説を行っています)。つまり、当モジュールは、「node」だけでなく、全ての「Entity」に対して、追加フィールドとして機能するようになっています。ただし、カレンダーでのリストアップの対象を「node」以外の「Entity」にした場合には、当モジュールで抽出可能となるのは、当モジュールを追加フィールドとして設置しているバンドルタイプのみとなります(「node」の場合には全てのバンドルタイプを抽出可能です)。ちなみに、当サイトでは3つのコンテントタイプにこのモジュールを設置していますが、そのうち「Drupal、6つの自由自在をもたらすCMS」などの「Column」コンテントタイプのエントリーページと「当サイトを Drupal 7 にアップグレードしました」などの「Information」コンテントタイプのエントリーページは TransNetCreation の開発による当サイト専用のオリジナルの「Entity」を使用しており、フロントページ は「node」を使用しています。また、カレンダー表示形式として、これまでは「ワンライン・タイプ」のみでしたが、通常のカレンダーのように週毎に改行するタイプ」にも対応できるように機能追加を行っています(ということで、せっかくですので(同一サイトにおけるレイアウト・デザインの統一化という点では良いことではありませんが)、「Information」コンテントタイプのエントリーページでは「改行タイプ」で表示しています)。

2011年01月11日 UPDATE|リンクになっている日付に、ツールチップとして、リンク先の URL と node タイトルを表示するようにしました
細かいアップデートですが、このような対応により、リンク先ページについてより多くの情報を提供することができるようになるため、結果として、(1)サイト管理者側においては、カレンダーがノードリスト的な機能(=複数の node について、一覧的にその情報を提供する機能)も提供するようになる、(2)ユーザー側においては、それらの情報を把握することにより、より安心して、自分が関心のあるリンクをクリックすることができる、という2つのメリットを得ることができます。(2)については、その裏返しとして、より適切なタイトルを設定することにより、ユーザーの方にクリックしていただきやすくする(&その結果として、ユーザーの方が求めている情報を提供することで、顧客満足を提供する)効果が見込まれます。