Topics トピックス

[baserCMS]スケジュールプラグインとメールプラグインを連携する

2015/07/04

いつもヒニアラタのホームページをご覧いただき、誠にありがとうございます。

今回は弊社のスケジュールプラグインと、デフォルトでbaserCMSに同封されているメールプラグインの連携方法について、ご紹介していきたいと思います。

メールプラグインの初期値入力

メールプラグインというのは、お問合わせフォームなどのメールフォーム機能を提供してくれる大変便利なプラグインで、入力項目を自由に設定できたり、フォームを好きなだけ作成できたりと非常に高機能なことで有名です。

そんなメールプラグインですが、スケジュールプラグインと連携させるのにとても便利な機能があります。それが「初期値入力」機能です。

例えば幾つかのイベントの中から、自分の参加したいイベントに申し込む場面を考えてみましょう。通常のメールフォームの使い方だと、ユーザーが参加したい日付やイベント名を、自分で記入もしくは選択する必要があります。

こんな時、メールプラグインの初期値入力の機能を使えば、メールフォームのページを開いた時点で任意の値を入力済みにできます。つまり、あるユーザーが「イベントA」に参加申込する場合、ユーザーが申込みフォームを開くと、そこには既に「イベントA」の名前や日時が入力済みになっているという状況を実現できるワケです。

そんな初期値入力機能を利用して、今回は『スケジュールプラグインで登録したイベントページ内に「申し込む」リンクを作成し、クリックするとイベントの名前や日時が入力済みになったフォームが表示される』ということをしてみたいと思います。

もちろん、入力フォームに初期値入力をしたとしても、ユーザー側が入力値を自由に書き換えてしまっては問題ですので、今回は「編集不可」のフォームを生成する方法も一緒にご紹介します。

イベントを作成する

まずはスケジュールプラグイン側で、通常通りスケジュール(今回はイベント)を作成します。今回は以下の様な内容でテストデータを作成しました。

  • タイトル:OSC2015 広島
  • 日時:2015年9月19日 09:00 〜 17:00

20150704_01.png

その他の内容は適当に記載(今回は作っていません)することとして、重要なのはタイトルと日時です。後ほど、これら2つの情報をメールフォームに渡すことになります。

イベント申込みフォームを作成する

メールプラグインでイベント申込みフォームを新規作成します。今回は下図の通り「event_form」という名称で作成しました。

20150704_add_form.png

このイベント申込みフォームでは、スケジュールプラグイン側から「タイトル」と「日時」を受け取る予定です。そこで、受け取った情報を初期値として入力する入力欄(フィールド)を設定します。

  • event_title:イベント名
  • event_day:イベント日時

今回は上の2つのフィールドをテキスト入力欄(text)として作りました。

20150704_add_field.png

スケジュールのテンプレートを調整する

続いてスケジュールプラグインのコンテンツテンプレートを調整します。

スケジュールプラグインでは、テンプレートを調整することで見た目のデザインを自由に変更することが出来ます。スケジュールプラグインのコンテンツテンプレートは、4つのファイルから成り立ちます(4ファイルは1つのフォルダに入っており、コンテンツテンプレートはフォルダ単位になります)。

すなわち、index.php(一覧表示)、day.php(特定の日の一覧表示)、view.php(特定のスケジュールの詳細画面)mlists.php(固定ページの一覧表示の呼び出し)がそうです。今回はスケジュールの詳細画面に「申し込む」リンクを作成しますので、view.phpを編集します。

編集を行う前に、コンテンツテンプレートの場所について確認しておきます。 スケジュールプラグインのコンテンツテンプレートは、テーマ内に設置することが出来ます。 まずはデフォルトのコンテンツテンプレートを、今お使いのテーマの中にコピーしてください。baserCMSでは、テーマ内のテンプレートが優先されますので、以後はそちらを編集します。

コピー元

以下のフォルダを見つけてください。見つけたら「Schedules」というフォルダごとコピーします。

  /app/Plugin/Schedule/View/Schedules/

コピー先

先ほどのフォルダをテーマ内にコピーして、以下のようにします。

  /app/webroot/theme/(お使いのテーマ)/Schedules/

コピーが完了したら、view.phpを編集していきます。結果的に以下のview.phpを編集することになります。

  /app/webroot/theme/(お使いのテーマ)/Schedules/default/view.php

申し込むリンクをつける

それでは「申し込む」リンクの設置を行っていきます。

メールフォームへ渡す必要がある情報は、スケジュールの「タイトル」と「日付」になります。情報の受け渡しにはメールフォームの初期値入力の機能を使います。初期値入力の機能では、GET方式を使って情報を渡しますが、その際base64UrlsafeEncode()を使って、情報をエンコードする必要があります。

参考サイト:遷移元のページからメールフォームに値を渡して自動補完する方法

また、 リンクはbaserCMSのヘルパー(表示用の関数)を使って出力する のが一般的ですので、以下の例ではそのようにしています。この例ではただ単に「申し込む」というリンク文字を出力していますが、本番ではボタン風にしたり画像にしたりすると良さそうです。

  <?php
    //イベント名を取得
    $eventTitle = base64UrlsafeEncode($this->Schedule->getTitle($schedule));
    //イベント日時を取得
    $eventDay = base64UrlsafeEncode($this->Schedule->getBeginDate($schedule) .'〜'.$this->Schedule->getEndDate($schedule));
    //リンクを出力
    $this->BcBaser->link(
      '申し込む',
      '/event_form/index/event_title:'.$eventTitle.'/event_day:'.$eventDay
    );
    ?>

上のコードをview.phpの中に記述します。すると「申し込む」というリンクが出力されたうえ、それをクリックすると申込みフォームへ移動するはずです(下図)。

20150704_form_view.png

なお、ご覧の通り、上図のサンプルではイベント名と日時しか入っていませんので、本番では「お名前」「フリガナ」「メールアドレス」「住所」などの情報を入力してもらってください。

初期値を入れた入力欄を編集不可にする

ここまでの所で初期値の受け渡しまでは終わりました。峠を越えた感じですが、一つ問題が残っています。現状では初期値を入れた入力欄が、通常のテキスト型の入力フォームの為、ユーザーが自由に変更できてしまうのです。

そこで今回は、この入力欄を編集不可(readonly)にすることで回避したいと思います。 ただし実際の入力欄はメールプラグインによって自動的に出力されてしまいますので、その段階で「readonly="readonly"」を付与するのは難しく現実的ではありません。 そこで一度出力させた後、jQueryを使って後天的に編集不可の属性を与えることとします。

入力欄にクラスを与える

jQueryを利用する以上、編集不可にしたい入力欄(フィールド)を特定する必要があります。幸いメールプラグインのフィールド編集で、クラス名を指定することができますので、クラスを与えて特定することとします(クラスの設定欄はオプション欄を開いた所にあります)。

今回はこのクラス名を「noEdit」としたいと思います。イベント申込みフォームで作成した2つのフィールド「event_title」と「event_day」の編集画面を開いて、クラス「noEdit」を与えてください(下図)。

20150704_add_class.png

次にjQueryを使ってreadonly属性を与えます。例えば今回は次のような記述を行います。記述する場所はレイアウトテンプレート内が一般的でしょう。

  <script type="text/javascript">
$(function(){
$('.noEdit').attr('readonly',true);
});
</script>
  

上の記述は、クラス「noEdit」を持つ要素に対して、readonly属性(編集不可)を付け加える、という意味です。

メールフォームのテンプレート

メールプラグインではフォーム毎に利用したいレイアウトテンプレートを変更できます。そのため、ここからの記述は皆さまの環境によって、読み替えを行って頂く必要があります。

利用したいメールフォームで、どのレイアウトが使われているかは、「メールプラグイン管理」>「(使いたいメールフォーム)設定」で開いた画面(フォームの名前などを設定する画面)の下の方にある、「オプション」欄を開いたところで分かります(下図)。特に設定をしていなければ「default」が使われます

20150704_check_layout.png

レイアウトテンプレートはお使いのテーマ内に含まれていますので、例えば「default」をご利用であれば、以下の場所に以下の名前で存在します。

  /app/webroot/theme/(お使いのテーマ)/Layouts/default.php

レイアウトテンプレートの場所が特定できたら、前述のjQueryの記述を適当な所(headタグ内が一般的だと思います)に入れてください。

確認する

以上でスケジュールプラグインとメールプラグインとの連携は終わりです。最後のjQueryの記述が終わったら、意図した通り動くかどうかをお確かめください。

おわりに

いかがでしたでしょうか? baserCMSに入っているメールプラグインはとても便利です。今回はスケジュールプラグインとの連携でしたが、同じ方法で他のプラグインや機能とも連携が可能なはずです。興味のある方は、色々とお試しいただくと良いかも知れません。

それでは今後とも株式会社ヒニアラタを何卒宜しくお願い致します。

タグ: 新製品 | baserCMS | CakePHP | ホームページ制作

お問い合わせCONTACT

弊社への各種ご相談は下記よりどうぞ

よくある質問

ここでは「ホームページを制作するのにどのくらいの期間が必要?」「島根県以外の遠方からでも依頼できる?」などお客様から寄せられる質問に回答しています。
下記の一覧からご覧になりたい質問内容をクリックしてください。

制作について

どのくらいの制作期間が必要ですか?

2ヶ月半〜3ヶ月程度を目処にお考え下さい。実際の作業自体はそれほどかかりませんが、お客様側でご準備いただくものや、新たに用意するもの(写真など)を考慮すると、結果的にそのくらいの期間がかかってしまうのが実情です。

法人ではなく個人事業主なのですが、制作を依頼できますか?

もちろん可能です。ただし、基本的には法人のお客様を想定したサービスとなっておりますので、気になる点などがございましたら、一度お問い合わせ頂ければと思います。

文章の校正はしてもらえますか?

本格的な校正または文章ライティングは、プロのライターに依頼することで可能です(有料)。なお、お客様からお預かりした原稿の誤字脱字等は、可能な限り確認・修正させていただいておりますが、お客様から弊社に完成原稿として提供いただくものにつきましては、なるべくお客様側にて一度チェックしていただきますよう、お願いいたします。

知り合いのデザイナーにデザインをお願いしたいのですが・・・。

事前にご相談いただければ、社外のデザイナーにデザインをお願いすることも可能です。ただし、その方に対して弊社からWeb構築に関する技術・仕様などの指導は出来ませんので、予めWebデザインが可能かどうかをデザイナーにご確認ください。

他社で作った既にあるホームページを修正したいのですが出来ますか?

他社様が制作したホームページでも修正を承っております。ご相談ください。

スマートフォン対応のホームページを作成してもらえますか?

もちろん可能です。現在主流のレスポンシブデザインという制作手法で構築できます。これはユーザーが利用している端末の画面幅に応じてレイアウトを自動で変更するもので、パソコン用のサイトとスマートフォン用のサイトを別で作る必要がないのが特徴です。

現在ホームページを持っていますが、リニューアルをお願いできますか?

もちろん可能です。リニューアルの仕方にもいろいろとあります。CMS(管理システム)やデザインの入れ替え、URLの変更など目的やご要望に応じた手法をご案内しています。

ホームページと一緒にブログも作りたいのですが、可能ですか?

多くのお客様がホームページの制作と同時にブログ機能(お知らせ、新着情報、トピックスなど呼び方は様々)を利用しています。

ホームページに掲載する内容は、一緒に考えてもらえますか?

はい。打ち合わせの際にスタッフへご相談ください。必要であればプロのライターさんに依頼することも出来ます。(有料)。

制作を依頼した場合、何を用意すれば良いですか?

打ち合わせの中で必要なものを確認して進めていきます。一般的には、会社パンフレットなどお客様の事業内容がわかる資料、ロゴマークなどのデータ、ホームページに載せたい写真・画像、

遠方(島根県以外)からホームページ制作の依頼はしてもらえますか?

リモート会議などで対応可能です。弊社では東京・大阪をはじめ、全国のお客様からのご依頼を承っております。ご相談ください。

WordPressを使ったサイト構築は可能ですか?

対応可能です。また、WordPress以外でも対応できますので、その目的・条件にあったCMSをご提案しております。

デザインのみ、コーディングのみなど、制作の一部の依頼は可能ですか?

対応可能です。弊社ではデザイン会社様、広告代理店様、システム開発会社様、ウェブ制作会社様などからの下請け案件も承っております。ご相談くださいませ。

制作会社、広告代理店からの依頼は可能ですか?

はい、対応可能です。ご相談ください。

写真撮影も行ってもらえますか?

対応可能です。弊社の関連会社もしくはパートナー企業が対応いたします。ご相談ください。

動画を使ったホームページを作成したいのですがお願いできますか?

対応可能です。動画は弊社の得意分野の一つです。撮影・編集は弊社の関連会社で映像制作専門の株式会社モットが対応いたします。

ホームページの更新を簡単にできる方法はありますか?

はい、CMS(コンテンツ・マネジメント・システム)の導入をお勧めします。CMSはホームページの管理システムのことで、IDとパスワードを使って管理画面にログインし、ホームページのデータを更新・変更します。

依頼してから完成まではどのような流れですか?

通常、以下のような流れで進んでいきます。

1.コンテンツの確定
ホームページの内容を決めていきます。どんなページがどこにあるか、というのを確定します。

2.デザインの確定
ホームページのデザインを決めていきます。色や雰囲気など最初にご相談させていただき、叩き台となるデザイン案をご用意します。

3.テストサイト構築
確認用のテストサイトをご用意します。

4.公開(納品)
テストサイトで問題なければ、本番環境へホームページを構築し公開します。

ドメイン、URLアドレスについて

現在持っているドメインを引き継ぐことは可能ですか?

可能です。場合によってはドメインの管理者権限を移す手続きが必要になることがあります。ご相談ください。

新しいドメインを取りたいのですが、取得の手配してもらえますか?

もちろん対応可能です。ドメインは「早いものがち」なので、必ずしもご希望のドメインが取得できるとは限りませんが、

サーバーについて

レンタルサーバーは用意してもらえますか?

もちろん対応可能です。弊社は「CPIサーバー(KDDIウェブコミュニケーションズ社)」「Zenlogic(ソフトバンクグループ

見積・費用・契約について

ホームページ制作に費用はどのくらいかかりますか?

ホームページはオーダーメイドになりますので、お客様のご要望の内容によって金額が変わります。

見積りを依頼するには、どのようにして問い合わせすれば良いですか?

弊社ホームページの「お問い合わせ」か、お電話にてご連絡ください。

分割払いはできますか?

原則一括払いでお願いをしておりますが、提携するクレジット会社を利用して分割することができます。ご相談くださいませ。

契約後のキャンセルはできますか?

契約後のキャンセルにつきましては、既に発生した作業の内容に応じて、キャンセル料を頂くことがあります。ご了承ください。

見積りに料金はかかりますか?

お見積りは無料です。お気軽にお問い合わせください。

制作後・メンテナンスについて

納品後のサポートはできますか?

はい可能です。更新頻度の高いサイトをお持ちのお客様や、Webサービスを運用しているお客様には、保守契約をおすすめ致しますが、保守契約の無いお客様や、他社でホームページを制作して運用中のお客様であっても、都度見積もりで対応させて頂いています。

運用は自分で行いたいのですが可能ですか?

はい、可能です。特に更新頻度が高い部分など、予めわかっていれば更新しやすいように管理機能をカスタマイズすることも出来ます。ご相談ください。

他社が作ったホームページを更新だけしてもらうことはできますか?

はい、可能です。ご相談ください。

アクセス解析・広告運用

アクセス解析はお願いできますか?

はい、可能です。レポート作成からコンサルタントによる毎月の報告会まで対応しています(有料)。ご相談くださいませ。

インターネット広告の運用代行をしてもらえますか?

はい、可能です。出稿先、予算、ターゲットなどをご相談し、最適なプランをご提案します。ご相談くださいませ。