更新履歴

校正オプションの拡張について

ACMS_User_Correctorとは?

ACMS_User_Correctorクラスにメソッドとして定義することで、校正オプションの拡張が可能です。ACMS_User_Correctorクラスが記述される、php/ACMS/User/Corrector.phpは、アップデート時の上書き対象ではないので、自由に拡張してご利用いただけます。

このページで説明している校正オプションの拡張は、PHPに関する知識が必要です。以降の説明についてもPHPの基礎知識がある前提で進めていますのでご了承ください。

原則、php/ACMS/User/Corrector.phpはACMS_User_Correctorクラス単体が記述されることを目的としたファイルです。同ファイル内でのクラスメソッド以外の拡張は、その影響を各自で判断した上で行ってください。

利用方法

ダウンロードパッケージのomakeフォルダに含まれるファイルを、設置先にコピーします。

コピー元
(ダウンロードパッケージの展開先)/omake/php/ACMS/User/Corrector.php
コピー先
(a-blog cms設置先)/php/ACMS/User/Corrector.php

所定の位置にファイルがコピーされていれば、自動で校正オプションが拡張されるようになります。

メソッドの優先順位

ACMS_User_Correctorクラスで定義されたメソッドが、優先的に利用されます。ACMS_Correctorで定義された既存の校正オプションの本来の挙動を上書きして変更するような使用も可能です。

意図しない上書きが発生している可能性があるときは、ACMS_Correctorのファイルを直接確認するか、get_class_methods関数などで、メソッド名の重複がないかを確認してください。

$methods = get_class_methods('ACMS_Corrector');
var_dump($methods);

テンプレート上の校正オプション指定との対応

<!-- {var}の中は、'a-blog cms' とする -->
<body>
{var}[sample('hoge', 'fuga')]
</body>

テンプレート上に記述する校正オプション名と、UserCorrector内で拡張するメソッド名を同一にします。テンプレート上から指定するメソッドへの引数は、シングルクオーテーションで囲い、カンマで区切ります。

<?php
class ACMS_User_Corrector
{
    /**
     * sample
     * 校正オプションのサンプルメソッド
     *
     * @param  string $txt  - 校正オプションが適用されている文字列
     * @param  array  $args - 校正オプションの引数 {var}[sample('ここの値')]
     * @return string       - 校正後の文字列
     */
    function sample($txt, $args = array())
    {
        $hoge = isset($args[0]) ? $args[0] : null; // 'hoge'
        $fuga = isset($args[1]) ? $args[1] : null; // 'fuga'

        return $hoge.$fuga.'+'.$txt; // 'hogefuga+a-blog cms'
    }
}
?>

校正オプションのメソッドには、校正オプション適用対象の変数(主に文字列)と、テンプレート上で指定された引数が渡されます。

<body>
hogefuga+a-blogcms
</body>

例では、本来の変数 'a-blog cms' と、引数として与えられた文字列 'hoge' , 'fuga' が合成されて、'hogefuga+a-blogcms' という文字列が出力されます。

備考

校正オプションは、各GETモジュール内でテンプレート内の変数を解決する際に、付随する形で実行されます。そのためモジュールが出力してない変数に校正オプションを指定しても。実行されません。