concrete5のページ属性セットを活用して、管理画面で並び替える

concrete5では、似たフォーマットのページをたくさん作る場合、コンポーザーを使うことがよくあります。たとえば、

  • 地域のお店ポータルサイトで、お店情報を登録する
  • 美容院のサイトで、美容師の情報を登録する

などです。concrete5では、ページとテーマ>ページタイプで、コンポーザーの設定を行います。GUIを使ってコンポーザー設定ができます。コンポーザーで入力することができる項目は、ページ属性(WordPressのカスタムフィールドのようなもの)と呼びます。ページ属性は管理画面から作成・並べ替えができます。

では、ページへの出力(画面表示)はどうでしょうか?

1つの方法として、ページ属性表示ブロックを使う、というものがあります。この方法はブロックを置くだけなので、作業自体は簡単です。しかし、ページ属性が多くなった場合、ページ属性の数だけブロックを置く必要があります。なので作業時間は必ずしも短くありません。

出力を自動化する

作業効率向上のため、出力を自動化するようにしました。仕組みとしては

  1. 属性のセットを作る(concrete5では属性のセットを使って、属性をグループ分けできます)
  2. 属性をセットに登録する
  3. セットに登録されている属性のデータを出力するコードを書く

という形です。1. と 2. は、管理画面から行うことができます。

ページ属性のセットを作成

3. の部分のみ、コードを書きます。コードは以下のようになります。

            <?php
            // 属性セットを取得する
            $atSet = AttributeSet::getByHandle('shopinfo'); 
            
            // セットにある属性一覧を取得する
            $atKeys = $atSet->getAttributeKeys(); 

            // 属性一覧にある属性を順に処理する
            foreach($atKeys as $ak) {
                // 属性が、そのページに存在するかチェックする 
                if ($c->getAttribute($ak->getAttributeKeyHandle())) {

                    // 属性名を表示する
                    echo h($ak->getAttributeKeyDisplayName());

                    // 属性の値(そのページで設定されている値)を表示する
                    echo nl2br(h($c->getAttribute($ak->getAttributeKeyHandle()))); 
                }
            }
            ?>

こうすることで、ページ属性がたくさんある場合でも、効率よく設置できます。

ページ属性を表示する

その他のメリット

このように実装すると、作業効率が良くなります。さらに、他のメリットがあります。

  1. ページ属性を追加しやすい
  2. ページ属性を並べ替えやすい

ページ属性を後から追加するケースも考えられます。たとえば「新しいSNSが流行したので、そのSNS情報をページ属性で追加する」みたいなケースです。その場合でも、ページ属性をセットに登録すれば、テーマ出力部分は変更が不要です。

また、ページ属性の順序は、管理画面上の順序が反映されます。上の例では住所を一番上の項目にしていますが、これは管理画面のページ属性のセットでの並び順が、住所・業種・電話・・・のようになっているからです。管理画面上で並び順を変更すると、テーマでの表示も変更されます。(キャッシュ機能を有効にしている場合は、キャッシュをクリアしてください)

記事公開日: 2018年01月26日

2018年8月時点で月間25万PVを超えたため、共有サーバーから移... 詳細はこちら

concrete5 のユーザーIDに使える文字列を調査。ver5.7.4.2。... 詳細はこちら

#

弊社で無償公開しているconcrete5アドオンRescuework's ... 詳細はこちら