PowerCMS X Q&A

PowerCMS Xを用いてWebサイトを構築する際の技術的なヒントや解決策をご紹介します。

記事等のオブジェクトを出力するブロックタグで、指定のカラムが空でないオブジェクトを抽出できますか?

例えば記事モデルにURLカラムがあり、URLカラムが空でないものをリスト表示する場合、標準のテンプレートタグでは実現できないのでプラグインを用いてpre_listingコールバックに対する処理を実装します。

public function pre_listing_entry(&$cb, $app, &$terms) {
    if ($app->mode === 'rebuild_phase' || $app->param('__save_and_publish') || $app->param('_preview')) {
        if (array_key_exists('_ignore_empty_url', $args)) { // ブロックタグに`_ignore_empty_url`がある場合のみ処理する
            $terms['url'] = ['!=' => '']; // URLカラムが空のもの以外という条件を追加
        }
    }

    return true;
}

テンプレートに`_ignore_empty_url`属性を付けるとURLカラムが空でない記事がリストアップされます。

<mt:entries _ignore_empty_url>
<li><mt:entrytitle /></li>
</mt:entries>

関連するQ&A