KMiura様
ご返答ありがとうございます。
こちらでも、トピックリストのview.phpを参考にして、直接検索ブロックのview内にトピックの出力を試している所です。
作業落ち着きましたらこちらで共有します。
検索ブロックの中で表示するトピック属性の見た目をカスタマイズしたい
2017年9月27日 at 19:32
検索ブロックを使用して、商品検索の画面を作成中なのですが、
- 商品分類1
-- ブランドで探す
--- トピック
--- トピック
--- トピック
-- 素材で探す
--- トピック
--- トピック
-- 作りたいもので探す
--- トピック
--- トピック
- 商品分類2
-- トピック
-- トピック
-- トピック
- 商品分類2
-- トピック
-- トピック
-- トピック
上記のような階層構造で商品のカテゴリー分けが必要なため、トピックで実装しています。
検索画面へのトピックリストの表示は、
$ak = CollectionAttributeKey::getByHandle('product_brand');
$ak->render('search');
上記コードで問題なくできたのですが、見た目をデザインに合わせる必要があります。
どうやって表示しているのかを調べたところ、
/concrete/attributes/topics/search.php
ここで検索用のトピックリストを生成していることはわかったのですが、
JavaScriptで生成しているので、どのようにカスタマイズすればよいのかが分かりません……。
JavaScriptの本コードは /concrete/js/build/core/tree.js というのは分かるのですが。
http://notnil-creative.com/blog/archives/2219
上記の選択(select)タイプのページ属性のように、参考になるコードがあれば修正できそうなのですが……。
どなたかご存じな方はいらっしゃいますでしょうか?
タグ:
Your post has been saved and will be published after approval by the forum moderator.
KMiura
Re: 検索ブロックの中で表示するトピック属性の見た目をカスタマイズしたい
JavaScriptで生成されているところは一切無視して、search.phpを書き換えてしまうのが手っ取り早いかと思います。
参考までに、私が行ったカスタマイズについて記載させていただきます。バージョンは8.2です。
私の場合、階層構造はデザイン上必要なかったため、特定のトピックツリー下のトピックをすべてチェックボックスとして並べています。検索ブロックに独自テンプレートを追加してCSSでチェックボックスをボタンレイアウトにして表示しました。(添付キャプチャ)
手っ取り早くソースを記載しますが、search.phpをごっそり下記に書き換えています。
/application/attributes/topics/search.php
JavaScriptの記述は「すべて」のチェックボックスで他の項目のチェックを付けたり外したりする部分なんで無視してください。
肝心なのはトピックツリーからトピックのIDと表示名を取り出しているところでしょうか。
下記のあたりでトピックツリーの子要素を取り出しています。(たしか)
そしてforeachでチェックボックスとして書き出しています。
検索ボタンを押すと選択されたトピックのIDが$selectedNodeに配列で渡されるので、checkedを付けるかどうかの判定に使っています。