イベントカレンダーを導入してみよう!

By | 2015年4月6日

今回は、武蔵浦和なびのトップページにあるイベントカレンダーの導入方法についての解説です。武蔵浦和なびではイベントを「Wordpressのカスタム投稿」として管理しているので、そこのデータを表示できるようにする必要があります。ちょっとこれはWordpressのプラグインでは難しいので、JQueryのFullCalendarを利用して、カレンダーを作成し、FullCalendarのイベントにWordpressのデータを自作モジュールで取得するようにしました。

FullCalendar自体はJQueryで動作します。私は「fullcalendar-2.3.1」を使用しました。ダウンロードすると中に色々ファイルがありますが、必要なものは以下のとおり。

  • fullcalendar.min.css
  • fullcalendar.print.css
  • fullcalendar.min.js
  • lang-all.js
  • lib/moment.min.js
  • lib/jquery.min.js
  • lib/jquery-ui.custom.min.js

これらを使用したいページに宣言を追加します。なお、武蔵浦和なびではすでにJQueryは別のバージョンを読み込んでいるので、そちらをそのまま使用(互換性があったみたい)。

<link rel="stylesheet" href="/common/css/fullcalendar.min.css">
<link rel="stylesheet" href="/common/css/fullcalendar.print.css">
<script type="text/javascript" src="/common/js/jquery-2.1.0.min.js"></script>
<script type="text/javascript" src="/common/js/jquery-ui.custom.min.js"></script>
<script type="text/javascript" src="/common/js/moment.min.js"></script>
<script type="text/javascript" src="/common/js/fullcalendar.min.js"></script>
<script type="text/javascript" src="/common/js/lang-all.js"></script>

さて、ここからカレンダーの導入です。挿入したいところに以下のタグを書きます。

<div id="calendar"></div>

そして、カレンダーのJQueryソースを書き足します。

$(document).ready(function () {
 $('#calendar').fullCalendar({
  lang: 'ja',
  header: {
   left: 'prev',
   center: 'title',
   right: 'today next'
  },
  defaultView: 'agendaWeek',
  height: 700,
  firstDay: 1,
  contentHeight: 600,
  columnFormat: {
   week: "M/D[(]ddd[)]",
  },
  events: 'イベント情報を生成するURL',
  eventRender: function(event, $element) {
   $element.href=event.url;
  }
 });
});

少し解説します。
「lang: ‘ja’」は、言語に日本語を使うことを宣言しています。
「header:」はヘッダー部分の表示方法を指定しています。この例では左に「前へボタン」中央に「タイトル」右に「本日ボタン、次へボタン」を表示することを指しています。
「defaultView: ‘agendaWeek’」はデフォルト表示を週カレンダーにしています。武蔵浦和なびの場合は、ヘッダーに月・日カレンダーの切り替えボタンを表示していないので、週カレンダー固定になります。
「columnFormat:」は週カレンダーの日付表示フォーマットです。この場合は「月/日(曜日)」と表示されます。
「events:’イベント情報を生成するURL’」はイベント情報を取得するURLを指定します。私の場合はPHPファイルになります。PHPファイルの方では以下のようなことをしています。

<?php
function GetTargetData($start,$end){
 //取得処理
}

// カレンダー開始日
$start = $_GET['start'];
// カレンダー終了日
$end = $_GET['end'];
//イベントデータ取得
$eventData = GetTargetData($start,$end);

//eventDataは以下のようなデータが入っています。
// $eventData[n]['title']:イベントタイトル
// $eventData[n]['url']:イベントページのURL
// $eventData[n]['start']:イベント開始日
// $eventData[n]['end']:イベント終了日
echo json_encode($jsonData);
?>

少しシンプルにしてありますが、$_GETパラメータの「start」「end」にカレンダーの表示期間が入ってくるので、それをもとにイベント情報を取得して、返却値としてjsonを返しています。

「eventRender: function(event, $element) {$element.href=event.url;}」は、重要なところでここでイベント情報のURLをリンクのhrefに設定するようにしています。こうすることで表示されたイベントがリンクになり、該当ページに飛ばすことができるようになります。

そのほか、少しCSSでスタイル加工しています。
変更用スタイル

これでこういう感じになりました!

イベントカレンダー

イベントカレンダー

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です