GETモジュールの開発
GETモジュールの雛形
<?php
namespace Acms\Custom\GET;
use ACMS_GET;
use Template;
/**
* extension/acms/GET/Sample.php
*
* テンプレート上では、標準のGETモジュールと同様に、
* '<!-- BEGIN_MODULE Sample --><!--END_MODULE Sample -->' で呼び出されます。
*/
class Sample extends ACMS_GET
{
function get()
{
return 'sample sample';
}
}
GETモジュールの規約
クラス
GETモジュールとして動作させるために、ACMS_GETを継承してください。
ファイルのパスと命名規則はPSR4に従います。(ただし下位互換性を保つため一部したがっていない場合があります)
**extension/acms の名前空間は Acms\Custom になります。**
この命名規則によりクラスがオートロード(autoload)されますので、requireなどは必要ありません。
extension/acms/GET/Sample.php の場合
namespace Acms\Custom\GET;
use ACMS_GET;
class Sample extends ACMS_GET {
}extension/acms/GET/Own/Sample.php の場合
namespace Acms\Custom\GET\Own;
use ACMS_GET;
class Sample extends ACMS_GET {
}出力
GETモジュールは呼び出されるとgetメソッドを実行します。最終的にgetメソッド内で、returnした文字列がモジュール内で出力されます。Smartyなど他のテンプレートエンジンと組み合わせたり、外部から情報を取得したりして情報を出力できます。
returnする文字列にはHTMLタグなどが含まれていても構いません。テンプレートとプログラムを分離させる必要が無い場合は、直接HTMLコンテンツを出力することもできます。
実行例
冒頭の雛形を実行する際のテンプレートと、その実行結果を例示します。GETモジュールは、BEGIN_MODULEから始まり、ENDMODULEで終わる、一連のテンプレートタグによって呼び出されます。テンプレート上のモジュール名は Acms\Custom 以降のクラス名を **(アンダーバー)** 繋ぎにしたものになります。
例: Acms\Custom\GET\Own\Sample -> Own_Sample
テンプレート
<html>
<body>
<p><!-- BEGIN_MODULE Own_Sample --><!-- END_MODULE Oen_Sample --></p>
</body>
</html>実行結果
<html>
<body>
<p>sample sample</p>
</body>
</html>ページ情報を取得する
URLコンテキスト(参照)で表されるページ情報のうち各種IDをGETモジュール内で取得する方法を説明します。
GETモジュール内でページ情報のうち、例えばエントリーID(以下EID)を取得することができれば、そのモジュールがどのエントリーから呼び出されたかによって参照する情報を変えることができます。基本的には、Entry_BodyやEntry_Headlineなどのモジュールもそのようにページ情報を取得することで、表示すべき情報を決定しデータベースを参照しています。
スコープの設定
下記のようにプロパティを設定することで、$this->bid, $this->cid, $this->eidとして、表示中のページが持つID情報を取得できます。
public $_scope = array(
'bid' => 'global',
'cid' => 'global',
'eid' => 'global',
);表示中ページの各種IDを参照するサンプル
<?php
namespace Acms\Custom\GET;
use ACMS_GET;
class Hoge extends ACMS_GET
{
public $_scope = array(
'bid' => 'global',
'cid' => 'global',
'eid' => 'global',
);
function get()
{
$string[] = 'Global Vars';
$string[] .= "BID = $this->bid";
$string[] .= "CID = $this->cid";
$string[] .= "EID = $this->eid";
return nl2br(implode("\r\n", $string));
}
}出力結果
<!-- bid = 1, cid = 2, eid = 5 の場合 -->
Global Vars<br />
BID = 1<br />
CID = 2<br />
EID = 5取得できる情報
GETモジュールで現在表示中のページより取得できる情報には以下のものがあります。
プロパティ | 説明 | 例 |
|---|---|---|
bid | ブログID | http://sample.com/blog/ |
uid | ユーザーID | http://sample.com/uid/1/profile.html |
cid | カテゴリーID | http://sample.com/news/ |
eid | エントリーID | http://sample.com/news/123.html |
keyword | キーワード | http://sample.com/keyword/検索文字/ |
tag | タグ | http://sample.com/tags/aaa/ |
field | フィールド | http://sample.com/field/station/あの駅/ |
start | 検索の始まり日時 | http://sample.com/2017-01-01/-/2017-03-03/ |
end | 検索の終わり日時 | http://sample.com/2017-01-01/-/2017-03-03/ |
page | ページ番号 | http://sample.com/page/2/ |
order | 並び順 | http://sample.com/order/datetime-desc/ |