タクソノミーのタームに、チェックボックスを配置する方法

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
hiro.t's picture

Drupal 8.1で開発中です。以下の事柄に、4,5日取り組んでいますが、どうにも行き詰っていますので、ヒントや解決方法などお教えいただけるとありがたいです。

■したいこと
タクソノミーのタームを、複数選択できるようにして、設置した検索ボタンを押した後、一致するノードを表示したいと考えています。
画面のイメージは、
http://customfield.jp/tutorial/demo1/content/113
にある、最後にある「千葉県で探す」(図20)と同じものです。

■行き詰っているのは、表示してあるタームの前にチェックボックスを配置する方法です。
ターム一覧は、Viewsで作成しブロックとして表示しています。
色々と調べたのですが、考えられる方法として、
1.views/templates/views-view-table.html.twig
  のファイルを、一部変更したもの(チェックボックスを表示するHTMLを追加したもの)を、別に保存します。
2.views-view-table.html.twigが実行される前に、フックし、変更したtwigを利用して表示します。

■質問は、
1.このような方法でOKなのかどうか?
2.views-view-table.html.twigを変更したファイルをどこに配置すればよいのでしょうか?
3.HOOKする方法は?

似たような質問として
https://groups.drupal.org/node/511705
も参考にしました。

他、
http://redcrackle.com/blog/drupal-8/theme-views-templates
http://drupal.stackexchange.com/questions/161720/view-theme-override-in-...
を参考にしています。

よろしくお願いします。

Comments

1.views/templates/views-view-

blauerberg's picture

1.views/templates/views-view-table.html.twig
  のファイルを、一部変更したもの(チェックボックスを表示するHTMLを追加したもの)を、別に保存します。
2.views-view-table.html.twigが実行される前に、フックし、変更したtwigを利用して表示します。

HTMLのテンプレートにcheckboxを追加しても、フォームにpostした時のロジック側も用意しないと
動作しません。

参考にされているURLのように、viewsのpluginを書く必要があると思います。

hiro.t's picture

コメントありがとうございます。この方法でよいのだと判った点でも参考になります。
チェックをつけた後にSubmitで投稿した後の処理も、難易度が高そうなので、ノウハウを蓄積したいと思います。また、Drupal7からDrupal8に、モジュールが移植されるのを待つのも有りですね。
https://www.drupal.org/project/term_reference_tree
https://www.drupal.org/project/views_bulk_operations
などが、利用できそうな気がします。

Views Bulk Operations (VBO)
https://www.drupal.org/project/better_exposed_filters
が、D8用に6月21日にリリースされていたので、これで目的に近い処理はできました。

ありがとうございました。

Form API

blauerberg's picture

VBOは非常にいい選択肢ですね。D7であれば私もVBOを使うと思います。

コメントありがとうございます。この方法でよいのだと判った点でも参考になります。

better_exposed_filters を導入されたということでイメージは掴めたと思いますが、
誤解があるかもしれないので念のため補足します。

Drupalの場合、フォームにPostするような処理は Form API を通してやり取りするため、 $_POST のような生データを直接参照するようなことはしません。
(これには、エスケープなどお決まりの処理をフレームワーク側に委譲できるなどのメリットがあります)

そのため、twigで見た目だけ作っても目的が達成できるわけではありません。
なので、最初に質問いただいたアプローチ自体は間違っている、ということですね。

また、better_exposed_filters はまだalphaリリースですので、以下も合わせてご確認ください。
 What are alpha, beta releases and release candidates?

might include security issues. ですので。。

hiro.t's picture

再度教えていただきありがとうございます。
Drupal上で、Form処理を行わないといけないのですね。よくわかりました。
どのような実装方法がよいのか、その段階で途方に暮れていましたので、助かりました。