グローバル変数

テンプレートファイルのどこでも使える変数

通常、{title} のように記述される変数はモジュールの中に記述されている必要がありますが、グローバル変数はテンプレートのどこに記述しても編集されます。

グローバル変数の一例

%{BLOG_NAME}表示ページが属するブログの名前
%{CATEGORY_NAME}表示ページが属するカテゴリーの名前
%{KEYWORD}URLコンテキスト上で、指定されたキーワード
%{CID}カテゴリーID
%{EID}エントリーID

他の機能との組み合わせ

グローバル変数とインクルード機能を組み合わせて使うと、表示ページのカテゴリー毎に違うテンプレートファイルを読み込むという使い方もできます。

<!--#include file='/admin/entry/category%{CID}.html'-->

このような組み合わせでテンプレートのカスタマイズをする事は多くあります。特定のカテゴリーの時だけ利用したいカスタムフィールドを書いたテンプレートファイルを読み込む際に大事なテクニックの1つになります。

各種グローバル変数についてはリファレンス内のグローバル変数のページをご覧ください。

ページをAMP対応してみよう

作業テンプレート:/themes/◯◯(使用中のテーマ)/news/entry.html 作業URL: http://ドメイン/news/entry-◯◯.html(お知らせカテゴリーのエントリーどこでも)

このハンズオンでは a-blog cms でAMP(Accelerated Mobile Pages Project)に対応する方法をご紹介しています。AMPに対応すれば、ニュースまたはメディアサイトであれば、検索エンジンの検索結果でカルーセル表示されたり、他のページよりも素早く表示することができるようになります。

以下の流れに沿って進めていきます。

  • 既存テンプレートをダウンロードして設置する
  • テンプレートをカスタマイズする
  • モジュールIDを設定する
  • レイアウトをカスタマイズする
  • AMPページのエラーを確認する

AMPでは独自に仕様が決められているため、多くのHTMLをAMP HTML用に修正しなければいけません。そのため、このハンズオンではAMPページに対応できる最低限のテンプレートを配布しています。以下のURLからダウンロードしてください。


Clone or download のセレクトメニューから、Download ZIPボタンをクリックしてダウンロード

ダウンロードしたら、distディレクトリに入っているテンプレートを、使用しているテーマのディレクトリの直下に設置してください。

デフォルトだとテンプレートの変数化(setTemplate setRenderedを使いこなそうのハンズオンの内容です)が使用されています。記述が冗長になりますがテンプレートの変数化を使用したくないという方は、distディレクトリのテンプレートを設置後、amp_no_varsフォルダに入っているamp.htmlと/include/head/title.txtを1つ上の階層に設置してください。


distディレクトリの内容


/themes/◯◯/の直下に設置します(この画像では使用しているテーマ名をoriginalとしました)

カスタマイズするテンプレートは、amp.html、/news/entry.html、必要であれば/include/unit_amp/amp.htmlです。

/news/entry.html と amp.htmlを関連付けるために、以下の記述をhead内にしてください。

<!-- BEGIN_MODULE Touch_Entry -->
<link rel=“amphtml" href="%{CANONICAL_URL}/tpl/amp.html"><!-- END_MODULE Touch_Entry -->

amp.htmlにはすでに元コンテンツのページと関連付けるようにカノニカルの設定が行ってありますので、amp.html側の作業はとくに必要ありません。

以下の値を記入してください。ロゴ以外はプレースホルダーとして「◯◯」と記入してあるので、テキストエディターの検索機能で検索してください。

  • サイトの著者の名前
  • 団体の名前
  • 団体のロゴ画像(幅600pxまたは縦60pxのもの。詳しくはガイドラインを参照してください)
  • Twitterカードのサイトのアカウントと著者のアカウント(任意)
  • Google AnalyticsのトラッキングID(任意)

/include/unit_amp/amp.htmlでは、iframe要素をAMP HTMLの記述方法であるamp-iframeへ変更しています。現在ではSlideShare、CodePenのカスタムユニットが制作されています。こちらの設定はiframe要素に対応するためのサンプルとしてあります。アカウントがない方もいらっしゃると思うので、必要であれば設定してください。

  • スライドシェアのユーザーID
  • スライドシェアのユーザー名
  • CodePenのID
  • CodePenのユーザー名

AMPでは、画像の幅と高さをpx指定しなければいけないので、メインイメージ用にEntry_SummaryのモジュールIDを作成します。

このとき、表示設定のタブにある、イメージ見出しのサイズ項目を横1000、縦1000などサイトの画像ユニットに登録される最大サイズ以上の設定を指定し、{imgX}と{imgY}の変数が実物サイズを表示できるようにします。


ほかにも、タグが関連しているエントリー表示するモジュールIDを用意しています。Entry_TagRelationalモジュールで「relational_entry」という名前でモジュールIDを作成してください。

レイアウトをカスタマイズするためには、CSSを記述する必要があります。AMPでは通常はCSSをインラインで記述するようになっていますが、インクルード機能を使用して、実際は外部ファイルであるCSSをインラインで出力しています。 SassやLessなどのCSSプリプロセッサーを使用できるようにこのような対応を行っております。

編集する際は、AMP HTMLの使用にそって修正されますよう、お気をつけください。

<!-- ※カスタマイズ用のCSS -->
<style amp-custom>
  <!-- #include file="/css/amp.min.css" -->
</style>

上記のソースコードを以下に変更してください。

<!-- ※カスタマイズ用のCSS -->
<style amp-custom>
  <!-- #include file="/css/amp.css" -->
</style>

変更すると amp.css が読み込まれるようになるので、amp.css を編集してください。

CSSプリプロセッサーを使用する場合は、/src/amp.scssを変更してください。

このとき、合わせて同梱しているgulpfile.jsもお使いください。gulpfile.jsにはAMP Validatorでエラーにならないように、acms.cssで使用している!importantや、gulpプラグインが自動的に付与してしまう@charset "UTF-8";などの記述を削除しています。この記述を削除するためにはgulp-replaceプラグインをインストールしてください。

var replace = require('gulp-replace');

gulp.task('sass', function () {
  …
  .pipe(replace('!important',''))
  .pipe(replace('@charset \"UTF-8\";\n',''))
  …
}

確認の方法としては2種類あります。

  • Google Chromeのインスペクターで確認する方法
  • テストツールを使う方法

http://ドメイン名/news/◯◯.html/tpl/amp.html(◯◯.htmlは現在カスタマイズされているページ)にアクセスし、URLの末尾に「#development=1」を付け足したURLにアクセスし、インスペクター(開発者ツール)を立ち上げます。

もし、エラーがあれば赤文字で表示されます。エラーがなければ「AMP validation successful.」と表示されます。


The AMP Validator にアクセスして、URLを記入し、「VALIDATE」ボタンをクリックします。ボタンをクリックするとエラーがあればエラー内容が表示されます。

ページの下部で、「Validation Status: PASS」と表示されていたら成功です。


確認ツールでエラーが修正され、成功していたらこのハンズオンは終わりです。

テンプレートが完成したら、Google Search Consoleより、Sitemapを送信またはFetch as Google してサイトをクロールするようにGoogleに伝えてください。

数時間するとインデックスされるようになります。もし、エラーの修正漏れがあればGoogleからエラー箇所がメールで通知されます。

インデックスされているのに、検索してもなかなかヒットしない場合は、モバイルから g.co/ampdemo へアクセスし、ご自分のサイトをキーワード検索してください。検索結果にAMPラベルがついていたら成功です。

v2.0.0 RC2 ダウンロード

a-blog cms v2.0 のリリース候補版となる a-blog cms v2.0RC2を公開いたします。 a-blog cms v2.0 は、これまでの使いやすさはそのままに、高度な管理機能の追加や、テーマ・管理画面の全面刷新を行い、新たなバージョンとして生まれかわりました。

今回のバージョンはRC1から各種機能をブラッシュアップしたものになります。

このバージョンは開発版になりますので、運用中のサイトにはインストールしないで下さい。また、バージョンアップは手作業で修正しないといけない作業がありますので、新規インストールのみのご利用となります。機能はスタンダードライセンス相当となります。

校正オプション

{data} のような変数に {data}[option] のようにカッコ表記を加えることでデータをプログラムで処理できる機能を校正オプションと呼びます。いろいろな校正オプションがありますが、いくつかの例を紹介します。

文字数を指定した数以下を省略表示(半角の幅は1、全角の幅は2となります。)

{text}[trim(13, '...')]

数字を千位毎にカンマ区切りで表示

{number}[number_format]

日付から和暦の年を算出して表示(1985/08/26[wareki] -> 昭和60年)

{date}[wareki]

日付を誕生日としての現在の年齢を表示(2014年1月31日現在の場合 1984/01/23[age] -> 30)

{date}[age]

| を利用し [ ] 内に複数のオプションを記述する例

[escape|nl2br]

校正オプションを何か一つ設定すると escapeが自動で指定されません。 エスケープが必要な場合は 必ずescapeをパイプで繋げて下さい。 校正オプションが何も指定されない場合には、デフォルトでescapeが指定されます。
例) {var}[escape|nl2br]

お問い合わせフォーム等、不特定のユーザーが入力した内容を表示する箇所では必ずエスケープする校正オプションの併用をするようにして下さい。

独自の校正オプションを作成する

/php/ACMS/User/Corrector.php を編集することでオリジナルの校正オプションを作成できます。Corrector.php 内に記述例がありますので参考にしてください。

各種校正オプションについてはリファレンス内の校正オプションのページをご覧ください。