Drupal 8 viewsでのbackground-imageの利用方法について

Events happening in the community are now at Drupal community events on www.drupal.org.
gg45's picture

お世話になります。

Drupal 8 のviewsについてですが、
フィールドで「独自のテキスト」を使用して、その中に下記のようにbackground-imageを記載していのですが

<div class="image" style="background-image: url({{ field_image }});">
・・・
</div>

上記のように記述すると、下記のようにstyle部分が表示されなくなってしまいます。

<div class="image">
・・・
</div>

何か解決方法をご存知の方は教えていただけると助かります。

何卒よろしくお願いいたします。

Comments

shumpei's picture

私も同じことをやろうとして、いろいろ調べたことがあります。

原因はセキュリティの観点から、ビューズはclass以外の属性をフィルターすることでした。
更に、

<div class="image" style="background-image: url({{ field_image }});">
・・・
</div>

では、
url(<img src="">)
のように、urlだけでなく、imgタグ全体が出力されてしまうかと思います。

結局、コーディングなしの解決方法は見つからず、PHPなら、hook_views_pre_render()など、JSなら、field_imageを出力し、CSSでdisplay:noneに設定、imgタグ内のsrcの値を取得し、対象ののdivにbackground-imageのurlとして、与える等で解決しました。

ビューズUIの設定だけでdivに背景画像を付ける方法があれば、私も是非知りたいところです。

class

blauerberg's picture

class 以外の属性はテンプレート側に書いてしまう手はあります (GUIだけで完結しなくなるけど..)
https://api.drupal.org/api/drupal/core!modules!views!views.theme.inc/group/views_templates/8.2.x

gg45's picture

Shumpeiさん

ありがとうございます。
やはりviewsだけでは対応ができないのですかね。。。難しいところです。

hook_views_pre_render()を利用してやってみようと思いますが、こちらは テーマ名.theme ファイルに記載すれば良いのでしょうか?
まだDrupal 8慣れておらず、質問ばかりですみません。

よろしくお願いいたします。

shumpei's picture

テーマ名.themeに記載でで大丈夫だと思います。
Viewsで使えるhookは多数ありますので、一番使いやすいのを選ぶと良いと思います。
https://api.drupal.org/api/drupal/core%21modules%21views%21views.api.php...

しかし、確かにblauerbergさんのおっしゃる通り、テンプレートに書くほうが分かりやすいかもしれません。

テンプレートで解決しました!

gg45's picture

blauerbergさん、Shumpeiさん、情報ありがとうございました。
viewsのhookで対応しようと思ったのですが、私には若干難しかったため
views-view-fields.html.twigファイルをオーバーライドして対応し、解決しました!

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

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: