グローバル変数の作り方

※この記事の内容は2015年11月に開催された a-blog cms Training Camp 2015 Autumn の中で行われたグローバル変数の作り方講座の内容です。

グローバル変数

グローバル変数は、テンプレートに記述することで、表示中のページが持つ情報を出力します。テンプレート上、モジュールやインクルードよりも先に処理されます。
利用できるグローバル変数の一覧

拡張アプリ Slack を公開しました


今年、2018年3月26日に公開された a-blog cms Ver.2.8ではより外部サービスと連携しやすい仕組みを用意しています。そこで今後いくつかの連携機能をa-blog cmsの本体とは別に拡張アプリという形で配布することにしました。 その第一弾として今回は 拡張アプリ「Slack」を用意しました。拡張アプリ「Slack」を使うとお問い合わせフォームなどから送信された内容をSlackに通知することができます。たとえばフォームから「資料請求」などがあれば「資料請求がありました。」などの簡単なメッセージや、メールの本文をそのまま、好きなチャンネルに通知できます。

ダウンロード

ダウンロード

利用するためにはダウンロード後、/extension/pluginsに設置してください。

使い方

以下の3つのステップで a-blog cms と Slack を連携します。

  1. Slackへの登録
  2. Webhook URL の取得
  3. a-blog cmsの拡張アプリ Slackに Webhook URL を登録

1. Slackへの登録

Slackのアカウントをお持ちでない方は下記のURLにてアカウントを作成しましょう。ある程度の機能までは無料で使うことができます。 https://slack.com/

2. Webhook URL の取得

下記のURLにてチャネルを指定して Webhook URL を取得します。ここで登録したチャネル以外のチャネルにもメッセージを飛ばすことはできますので好きなチャネルを指定して作成しましょう。 https://slack.com/services/new/incoming-webhook

3. a-blog cmsの拡張アプリ Slackに Webhook URL を登録

管理ページ > 拡張アプリより「拡張アプリ管理」のページに移動します。そのページより下の図のようにSlackをインストールします。



インストール完了後は、管理ページ > フォーム > 連携したいフォームID よりSlackの管理ページに移動します。その後、「Webhook URL」という項目がありますので、その項目に先ほど覚えておいた Webhook URL を入力します。

あとは、Slackに通知したいフォームIDに移動し、メッセージの送信先チャネルを「Channel」に送信元の名前を「From」に設定します。またメッセージにはフォームモジュールの変数と、グローバル変数を使用することができます。 「Message」の項目にはグローバル変数やフォーム内の変数も利用することができます。



これでa-blog cmsとSlackを連携させる準備は整いました。あとは先ほどの設定がされたフォーム「お問い合わせフォームなど」に移動し普段通り情報を入力します。



お問い合わせ完了後、以下のようなメッセージがSlackに通知されていれば成功です。



注意

config.server.phpでHOOKを有効にしておく必要があります。

define('HOOK_ENABLE', 1);

拡張アプリの今後の配布について

拡張アプリは今後 applepleのGitHubのページに公開していく予定です。 またGitHubに公開されているアプリは下の拡張アプリ一覧ページからダウンロードできるようになりますのでよかったら訪れてみてください。


拡張アプリ一覧ページ

チェックをつけたエントリーの情報をCSVでダウンロードするには

エントリーの一覧に表示されている情報からチェックボックスにチェックをつけたものだけをダウンロードするにはどうしたら? という事を相談され、簡単に実装できるだろうと思ったのですが、a-blog cms の URLコンテキストで複数の EID を処理することができず詰んでしまいました。その方法を考えてみます。

今回は、エントリーカレンダーモジュールでの一覧を表示させています。

1件を選択する場合 input type="radio"

まずは簡単な1件を出力する用のラジオボタンでの実装を考えてみます。


親、ルートテーマへのグローバル変数の実装について

https://appleple.backlog.jp/view/CMS-1690


a-blog cmsユーザーの方から、%{CURRENT_THEMES_DIR} :表示中ページで使用されているテーマのパスを表すグローバル変数、がありますが、これの親ブログ版、ルートブログ版が欲しいといった要望を頂いております。

ナビゲーションを編集する

目標


「スタッフ紹介」というコンテンツをグローバルナビゲーションに表示しましょう。


解説使用テーマbeginner

Before

After

目次

  1. モジュールについて
  2. グローバルナビゲーションの表示設定を変更する
  3. クイックサーチを活用しよう

モジュールについて


モジュール
ブラウザ上から更新できる部分には、「モジュール」と呼ばれるパーツが表示用テンプレートのHTMLファイルに貼り付けられています。モジュールを使うことで a-blog cms に登録した様々なデータを処理/表示することができ、基本的にモジュールを使い動的なサイトを制作していきます。例えばテーマ「site」のトップページでは、「ナビゲーションモジュール」「エントリーヘッドラインモジュール」「エントリーサマリーモジュール」などが使われています。


サイトを制作する際は、既にa-blog cmsが用意しているモジュールの中から最適なものを組み合わせ、HTMLやCSSで独自にスタイルを調整していきます。


他にもモジュールには様々な種類があり、それぞれのモジュールはその役割ごとにグループ分けされています。一番大きな括りは、テンプレートを組み立てるためのGETモジュール、サーバーにデータを送信するためのPOSTモジュールです。


GETモジュール ビルトインモジュール
フィールドモジュール
タッチモジュール
POSTモジュール POST_2GETモジュール
ダウンロードモジュール

さらにGETモジュールは、ビルトインモジュール・フィールドモジュール・タッチモジュールの3種類に、POSTモジュールはPOST_2GETモジュール・ダウンロードモジュールの2種類に分けられます。


今回のハンズオンで作業していくナビゲーションモジュールはビルトインモジュールの1つです。これらのモジュールの区分は少々発展的な内容になるため、詳しくは以下の関連記事をご覧ください。なお、今回のチュートリアルについてはこれらの区分を理解していなくても進められるようになっています。



グローバルナビゲーションの表示設定を変更する


それでは、グローバルナビゲーションに「スタッフ紹介」というコンテンツを追加していきましょう。以下の手順でモジュールの表示設定画面へ移動します。


  1. ログインした状態でグローバルナビゲーションモジュールをマウスオーバーする
  2. 右上に表示される [モジュール] というボタンをクリックする


モジュールの表示設定画面が表示されました。続けて「採用情報」の右側にある [追加] ボタンをクリックし、新しく設定された入力欄にスタッフ紹介のラベルとURLの情報を入力していきます。


ラベルスタッフ紹介
URL%{HOME_URL}staff/


URL欄は、a-blog cmsのグローバル変数を使った方法で記述しています。


グローバル変数
a-blog cms側で特定の情報に変換できる文字列をグローバル変数といいます。%{変数}の形式で書かれ、例えば「%{HOME_URL}staff/」の文字列は、a-blog cmsによって「https://example.com/staff/」と解釈されます。
URLなどをグローバル変数で指定することのメリットは、ドメインを変更した時などに内部リンクが自動修正されることです。そのため、a-blog cms内でリンクのパスなどを記述する際は、一般的にグローバル変数を使うことが推奨されています。

以上でグローバルナビゲーションの表示設定が変更できました。画面の右上にある、青い「保存」ボタンを押して設定を保存します。トップページで表示を確認すると、「スタッフ紹介」のコンテンツが追加されているのがわかります。



以上でチュートリアルの目標は達成です。


クイックサーチを活用しよう


補足としてモジュールやグローバル変数への理解を深めるのに役立つ「クイックサーチ」という機能をご紹介します。


クイックサーチ
a-blog cmsが用意するモジュールのスニペットやグローバル変数を、管理ページを通さずに素早く検索することができる機能です。Macでは command+K 、Windowsでは Ctrl+k を押すことで、ログイン中であればどのページにいても起動することができます。


今回学習した「モジュール」や「グローバル変数」のパターンはそれぞれ数多く用意されています。目的に合ったものを効率よく探し出すために、是非クリックサーチを積極的に取り入れていきましょう。