フックの拡張

拡張アプリでのフックの拡張の仕方を見ていきます。名前空間・クラス名に気をつけましょう。

ファイル名は任意ですが、わかりやすくする為、Hook.php とします。

例: extension/plugins/SamplePlugin/Hook.php

<?php

namespace Acms\Plugins\SamplePlugin;

class Hook
{
    /**
     * 例: グローバル変数の拡張
     *
     * @param array &$globalVars
     */
    public function extendsGlobalVars(&$globalVars)
    {
         $globalVars->set('SAMPLE', 'サンプルのグローバル変数です');
    }
}

ServiceProviderの設定

これだけでは、通常の拡張方法と違い動作しません。動作させるためには、このクラスのオブジェクトをa-blog cmsに登録する必要があります。

ServiceProviderでHook実装クラスを登録する

拡張アプリの基本で作成した ServiceProviderに少し手を加えます。

<?php

namespace Acms\Plugins\SamplePlugin;

use ACMS_App;
use Acms\Services\Common\HookFactory;

class ServiceProvider extends ACMS_App
{
    /* 省略... */

    /**
     * サービスの初期処理
     */
    public function init()
    {
        $hook = HookFactory::singleton();
        $hook->attach('SampleHook', new Hook);
    }

    /* 省略... */
}

ポイント

Acms\Services\Common\HookFactory のオブジェクトを

HookFactory::singleton();

で取得して 先ほど作成した Acms\Plugins\SamplePlugin\Hookattach します。

  • 第一引数: 被らないような任意の文字列
  • 第2引数: 実装クラスのオブジェクト

これで拡張アプリをインストールすれば、Hook.php で実装したHookが利用できるようになります。

本日 a-blog cms awards 2023 の応募を開始しました


a-blog cms awards 2023の応募を本日 (5月16日)より開始します。

2022年度 に a-blog cms で制作されたWebサイトの制作事例を募集いたします。

はじめて参加する方や参加を迷われている方、応募事例が決まっていない方も、参加登録をすることが可能です。まずは応募詳細をメールでお送りいたしますので、お気軽に参加登録をお願いいたします。参加特典や、入賞した事例には素敵な賞品もご用意しております。皆様のご応募を心よりお待ちしております。

応募条件

  1. a-blog cms で作られたサイトであること
  2. 今回提出されるコンテンツが、a-blog cmsの広報活動に利用されることを(サイトの持ち主である)サイトオーナー様が承諾されていること
  3. 2022年度(2022年4月〜2023年3月)に制作されたサイトであること ※リニューアル可
  4. 個人利用のサイトはご応募いただけません

参加特典

どちらか1つを進呈(スタンダードライセンス用)

・アップデート期間延長オプション(1年間) ・1ユーザーライセンス

※ 参加特典は、応募いただいた後、弊社の用意する制作事例のフォーマットを完成提出いただけた事例に限ります。

  • テクノロジー賞
  • デザイン賞
  • ユーザビリティ賞
  • アップルップル賞

入賞した事例の特典

テクノロジー賞、デザイン賞、ユーザビリティ賞、アップルップル賞のいずれかに入賞した方にそれぞれトロフィーと賞品を用意しています。

賞品の内容

以下の候補の中からひとつお好きな賞品をお選びいただけます。



  • BALMUDA The Toaster Pro
  • BALMUDA The GreenFan
  • DELL S2721QS 27インチ 4K ディスプレイ
  • Apple HomePod mini x 2
  • Apple Watch SE スマートウォッチ
  • Amazon Echo Show 15 15インチスマートディスプレイ
  • SONY WF-1000XM4 ワイヤレスノイズキャンセリングステレオヘッドセット

詳細は以下のイベントページをご覧ください。


a-blog cms awards とは?

a-blog cms awardsは、a-blog cms で制作されたサイトの事例をあつめて、よりよいサイトをみつけるための企画です。 応募条件は a-blog cms で制作されたサイトであること。選ばれたサイトから各分野の賞を贈り賞品を贈呈します。 2019年から始まり、今回で5回目の開催となります。

多くのサイトからの制作事例をお待ちしております。お気軽にご登録ください。

前年の開催の様子については、 以下の記事をご参考にしてください。

過去の開催の様子



過去の応募者による開催レポート





それでは、今回もみなさんからのたくさんの事例のご応募をお待ちしております!

Validatorの拡張

拡張アプリでのValidatorの拡張の仕方を見ていきます。名前空間・クラス名に気をつけましょう。

ファイル名は任意ですが、わかりやすくする為、Validator.php とします。

例: extension/plugins/SamplePlugin/Validator.php

<?php

namespace Acms\Plugins\SamplePlugin;

class Validator
{
    /**
     * sample
     * バリデーターのサンプルメソッド
     *
     * @param  string $val - その変数の値
     * @param  string $arg - <input type="hidden" name="var:v#sample" value="ここの値">
     * @return boolean     - 入力が正しい場合は "true" そうでない場合は "false" を返す
     */
    function sample($val, $arg)
    {
        /**
         * 例:
         * <input type="text" name="var" value="{var}">
         * <input type="hidden" name="field[]" value="var">
         * <input type="hidden" name="var:v#sample" value="cms">
         *
         * <!-- BEGIN var:validator#sample -->
         *   <p class="acms-admin-text-error">cmsという文字列を含めてください。</p>
         * <!-- END var:validator#sample -->
         *
         * {var}の中は,'a-blogcms' とする
         */

        // name="var:v#sample" value="cms" で指定した
        // 文字列が含まれていなかったらエラーを出す
        return (strpos($val, $arg) !== false);
    }
}

ServiceProviderの設定

これだけでは、通常の拡張方法と違い動作しません。動作させるためには、このクラスのオブジェクトをa-blog cmsに登録する必要があります。

ServiceProviderでValidator実装クラスを登録する

拡張アプリの基本で作成した ServiceProviderに少し手を加えます。

<?php

namespace Acms\Plugins\SamplePlugin;

use ACMS_App;
use Acms\Services\Common\ValidatorFactory;

class ServiceProvider extends ACMS_App
{
    /* 省略... */

    /**
     * サービスの初期処理
     */
    public function init()
    {
        $validator = ValidatorFactory::singleton();
        $validator->attach('SampleValidator', new Validator);
    }

    /* 省略... */
}

ポイント

Acms\Services\Common\ValidatorFactory のオブジェクトを

ValidatorFactory::singleton();

で取得して 先ほど作成した Acms\Plugins\SamplePlugin\Validatorattach します。

  • 第一引数: 被らないような任意の文字列
  • 第2引数: 実装クラスのオブジェクト

これで拡張アプリをインストールすれば、Validator.php で実装したValidatorが利用できるようになります。