コンテナにカスタムクラスを追加したい

コンテナ機能とても便利ですね。
レイアウトの場合の手順を参考に page_theme.php に以下を記述してみたところ、カスタムクラスのプリセットを登録できました。

public function getThemeBlockClasses()
{
    return [
        'core_container' => [
            'カスタムクラスのセレクター名',
        ],
    ];
}

この手順で問題ないでしょうか。
またブロックと同じように特定のコンテナにのみ表示するような方法はあるのでしょうか。

Concrete CMS バージョン
9.1.1

PHP バージョン
8.0.x

サーバー
エックスサーバー

@Jun_22 こんにちは。

なんと、getThemeBlockClasses() を使うと言う発想は無かったのですが、
良いアイデアだと思います。

コンテナーは、Atomik のコンテナーのサンプ concrete/themes/atomik/elements/containers/* 以下の各ファイルをご覧いただくと、コンテナエリアと、そのコンテナエリアをどういう範囲で表示させるかの CSS Class を含んだ HTML 構造を記述しています。

ある意味、このコンテナ自体に CSS クラスを振り分けるものかなと思っていました。

単純に興味があるだけなのですが、
カスタムクラスを使おうと思われた目的はなんでしょうか?
(場合によって違うクラスをケースバイケースで割り当てたいなど)

当方ではこれまでカラムを分割したいという編集者向けに、数パターンのレイアウトプリセットを用意して来ました。
カラム分割とそのレスポンシブ対応のみを提供するもので、サイト内の様々な場所で使用されます。

挿入先によってはレイアウト全体を枠線で囲みたいといった要望があり、この対応にカスタムクラスが利用されています。
公式だったか失念してしまいましたが、以下の要領でレイアウトにカスタムクラスのプリセットを表示できると知り、以来活用してまいりました。

public function getThemeBlockClasses()
{
    return [
        'core_area_layout' => [
            'カスタムクラスのセレクター名',
        ],
    ];
}

コンテナはマークアップや追加方法などの点でレイアウトより自由度が高いと感じ、まずは同じ機能を移植してみることにしました。
上記の core_area_layout を core_container に変更するとコンテナでも期待通り動作したため、公式にサポートされているのか(今後も利用可能なのか)確認したく投稿した次第です。

また特定のコンテナでしか機能しないカスタムクラスもあり、ブロックのように表示先を指定できればと質問させていただきました。
カラム分割には Bootstrap を利用するのが定石とは存じますが、当方環境では依存関係の少ない方が人材確保などの点でメリットが多く、テーマの CSS で管理している状況です。

1 Like

@Jun_22

状況、理解できました。

上記の core_area_layout を core_container に変更するとコンテナでも期待通り動作したため、公式にサポートされているのか(今後も利用可能なのか)確認したく投稿した次第です。

公式にサポートされているか・・・という回答ですが・・・、
正直言って、微妙です。

理解しにくい書き方しかできなくて申し訳ないですが、

想定されていた使い方とは違うような気がしますが、
「多分、サポートされ続ける」としかかけないです。

core_area_layout も内部的にはブロックとして扱われているため、プログラム的には getThemeBlockClasses() とブロックの仕組みが今の仕様と変わらない限り使い続けられるはずです。

ただ、コンテナーを設計していた想定とはちょっと違う使い方になっていると思います。

利用は自己責任でということですね、ご回答ありがとうございました。

レイアウトはエリアの末尾にしか追加できないようで、長いページでは追加後の移動が大変でした。
ブロック同様ドラッグ&ドロップで任意の場所へ追加できるのはありがたい限りです。

1 Like