CSSセレクタからページタイプとページテンプレートを判別する
Page::getPageWrapperClass() を body タグの直下の div タグに付けることは、concrete5のユーザーインターフェースを動作させるためには必須ですが、このメソッドは、オプションで、テーマ開発者がCSSを記述するのに便利な情報も出力してくれます。それでは、$c->getPageWrapperClass() が Elemental サンプルコンテンツのブログのトップページでどのようなクラスを出力するのか見てみましょう。
<div class="ccm-page page-type-blog page-template-full"> ... </div>
これらの3つのクラスは自動的に出力されます。最初のクラス(ccm-page)は、concrete5の編集モードの動作に必要なものです。その他のクラスは、ページタイプまたはページテンプレートに対応しています。ブログのトップページのページタイプは「ブログ(ハンドルは blog)」なので page-type-blog クラスが付けられます。また、ページテンプレートは「全幅(ハンドルは full)」を使用していますので、page-template-full クラスが付けられます。
他のページにアクセスすると、異なるクラスが生成されているのが分かると思います。たとえば、ポートフォリオプロジェクトページでは、次のクラスが生成されているはずです。
<div class="ccm-page page-type-portfolio-project page-template-left-sidebar">
注意:ハンドル内のアンダースコアは、ハイフンに変換されます(例:portfolio_project は page-type-portfolio-projectになります)。
この機能は、テーマ開発のうえでとても便利です。例えば、次のCSSで、ブログページでのみサイドバーを少し下げることができます。
div.ccm-page.page-type-blog-entry { div.col-sidebar { padding-top: 40px; } }
原文:Targeting Page Types and Page Templates with CSS Selectors