『Concrete5 Beginner’s Guide』での勉強続行中です。
なかなか英語読むのしんどいですが、前に挫折した部分は超えて、前より少し分かってきたかも。
先にConcrete5:ブロックのテンプレートを単純にラップするカスタムテンプレートを作る方法で、コアにアップデートがあっても大丈夫なカスタムテンプレートの書き方を載せましたが、ラップすると余計なdivを書くことになるので、できればクラス名だけ変えたいということもあるかと思います。
今回はその方法です。
例として、オートナビブロックにMy Navというカスタムテンプレートを作成してみます。
まずblocks/autonav/templates/my_nav/というディレクトリを作成して、その中にview.phpというファイルを作成します。
本の中ではjQueryでゴニョゴニョしたり、このテンプレート専用のcssを設定することを前提にしていたのでカスタムテンプレート名のディレクトリを作成していましたが、ただクラス名を変更するだけのときは、blocks/autonav/templates/my_nav.phpでもいいと思います。
今回はmy_navディレクトリにこのテンプレート専用のview.cssも配置する想定です。
<?php $bvt = new BlockViewTemplate($b); $bvt->setBlockCustomTemplate(false); functon my_nav_callback($buffer) { return str_replace('<ul class="nag">','<ul class="my_nav">',$buffer); } ob_start("my_nav_callback"); include($bvt->getTemplate()); ob_end_flush(); ?>
前回のラップの時と似てますが、今回はデフォルトテンプレートを内部バッファに保存して、ulのクラス名を置換してから出力しています。
これでmy_navというクラス名を使用したスタイルをview.cssに設定することができます。