カスタムルールをつくる

a-blog cms にはルール機能があり、デバイス毎にテーマやコンフィグを変更したり、 あるカテゴリの場合は別の設定を行うといったことができるようになっています。

サイト制作にはかかせないルール機能ですが、標準のルールで設定できる項目は少なく、もう少し柔軟な設定をしたいと言う時があります。 そこで、Ver. 2.11.0 から追加された「カスタムルール」を作って、柔軟なルール設定ができるようにしてみましょう。

カスタムルール判定値の作成

カスタムルールを作るには、Hook.php をカスタマイズして、ルール判定用の値を設定します。
extension/acms/Hook.php を開き、customRuleValueメソッド をカスタマイズします。

/**
 * ルール判定のカスタム値
 *
 * @param string $value
 */
public function customRuleValue(& $value)
{
    // ここで設定した値を、ルール判定に使用できるようになります。
    $value = '';
}

$value に判定用に使いたい文字列を設定します。例えば「管理者」と「編集者」でログインしている場合は、「editor」という値を設定したいと思います。

public function customRuleValue(& $value)
{
    // sessionWithCompilation() は 編集者以上でログインしている場合、true を返します。
    $value = sessionWithCompilation() ? 'editor' : '';
}

ここで設定した値は、ルール設定画面で利用します。

ルール設定

Hook.phpのカスタマイズができたら、通常と同じようにルール作成画面を開きます。 ここで図にあるように、カスタム項目に、「editor」を「=」で設定します。

これで、管理者または、編集者だった場合の専用ルールを作ることができました。


ルール設定画面

ルール設定画面


カスタムルールのHookカスタマイズ例

特定ユーザーのルール

ユーザーID = 1 のユーザーにだけ、ルールが適応されるようにします。

public function customRuleValue(& $value)
{
    $value = SUID == 1 ? 'superUser' : '';
}

特定の接続元のルール

特定の接続元からのアクセスだった場合にルールが適応されるようにします。

public function customRuleValue(& $value)
{
    $value = REMOTE_ADDR === 'xxx.xxx.xxx.xxx' ? 'admin' : '';
}

お詫び

Ver. 2.11.27 では 正規表現による判定ができないようです。こちら次期バージョンで修正させていただきます。 現状は正規表現以外の識別を使って判定するようにお願いいたします。ご不便をおかけしてしまい申し訳ございません。

同じタグ付けがされている記事