a-blog cmsのオリジナルGETモジュールを作ってみた

案件でa-blog cmsのオリジナルモジュールを作る機会があったので初チャレンジしました。
カスタムフィールドのあるエントリーから、お問い合わせなどの別ページに移動した際に、遷移前のエントリーのカスタムフィールドの値を参照し利用するというもの。エントリーのカスタムフィールドで設定したものを、別ページでも読み込めるというのは今後の用途も多そうです。
ちなみにa-blog cmsにはGETやPOSTのモジュール開発環境が揃っていますので、オリジナルモジュールが開発出来る様になれば、かなり制作の幅も増えそうです。

今回の件は、全ての値をGETで渡してjsで処理すば何とかなるのかもしれませんが、メアドなどは困るしスマートでもないので、GETはエントリーIDだけにしています。POSTモジュールも使えばエントリーIDをGETしなくても出来るのかもしれませんが、そこまではまだ勉強中で分かりませんでした。。。

例)エントリーから2つのカスタムフィールド
{fieldA}、{fieldB}の値を、お問い合わせ(contact.html)に引き継ぐ場合。

まずは、エントリーにカスタムフィールドを作り、エントリーのテンプレートにエントリーIDを引数にしたリンクを作成します。


<!-- エントリーのテンプレート -->
<a href="contact.html?contactID=%{EID}">お問い合わせはこちら</a>

次にオリジナルのGETモジュール(Contactid.php)です。
「/php/ACMS/GET/Ideasource/Contactid.php」にモジュールファイルを作りました。
今回は該当するエントリーのカスタムフィールド名と値を取得します。記載はしていないけど、取得した値を適所処理すれば、望んだ形の値に加工する事も可能ですね。


<?php
require_once ACMS_LIB_DIR.'GET.php';

// /php/ACMS/GET/Ideasource/Contactid.php

class ACMS_GET_Ideasource_Contactid extends ACMS_GET{
 function get(){

  if(isset($_GET['id'])){

   //GETの値を取得
   $contactID = $_GET['contactID'];

   // Templateクラス
   $Tpl = new Template($this->tpl, new ACMS_Corrector());
		
   //引数からDBをselect
   $DB = DB::singleton(dsn());

   // SQLクラス
   $SQL = SQL::newSelect('field');

   // 対象の列を設定
   //エントリーID
   $SQL->addWhereOpr('field_eid', $contactID, '=');

   //カスタムフィールドID
   $SQL->addWhereIn('field_key', array('fieldA','fieldB'));		

   // SQLを組み立てる
   $q = $SQL->get(dsn());

   // クエリーを実行して結果を取得
   $all = $DB->query($q, 'all');

   // 取得したデータをentry:loopとしてテンプレートに追加
   foreach ( $all as $row ) {
    $Tpl->add('contactidLoop:loop', $row);
   }

   // テンプレートを処理済みの文字列としてreturn
   return $Tpl->get();
   }
 }
}
?>

次にお問い合わせのテンプレート(contact.html)です。
こちらに{fieldA}と{fieldB}のカスタムフィールド名と値が、ループで出てきます。
使い道に合わせて処理してください。


<!-- BEGIN_MODULE Ideasource_Contactid -->
<!-- BEGIN contactidLoop:loop -->
フィールド名:{field_key} 内容:{field_value}__bR__
<!-- END contactidLoop:loop -->
<!-- END_MODULE Ideasource_Contactid -->

結果(fieldAの値がhogehoge、fieldBの値がfugafuga、の場合)


フィールド名:fieldA 内容:hogehoge__bR__
フィールド名:fieldB 内容:fugafuga__bR__

関連記事

この記事のハッシュタグに関連する記事が見つかりませんでした。

最新記事

カテゴリー

アーカイブ

ハッシュタグ