記事のブロックビューを作成しました。表示形式はグリッドブートストラップです。
ブロックビュー全体にクリック可能な領域を作成するにはどうすればよいですか?
すべてのブロック(フィールドだけでなくブロック全体)をクリックして、/ node/nidにアクセスできるようにしたい
「追加属性」はリンクを作成するのに役立ちますか?
CSSとカスタムテンプレート構造を使用...
マークアップ:
<div class="views-row">
// Your various markup.
{{ content }}
// Link contains no text and is absolute positioned to cover the entire markup area.
<a class="link" href="{{ link }}" title="Link to {{ print node title here }}"></a>
// The span can be absolutely positioned as well so it is on top of the link.
<span class="flag">This is a flag</span>
</div>
CSS:
.views-row {
position: relative;
}
a.link {
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 100;
}
span.flag {
position: relative;
z-index: 200;
}
このアプローチを使用すると、ブラウザーやスクリーンリーダーにとって意味のないテキストやマークアップを多く含むリンクを回避できます。
あなたはjQueryでそれをしたいかもしれません:
このような何かがうまくいくでしょう:
(function ($, Drupal) {
'use strict';
$(document).ready(function () {
$('BLOCKCLASS').click(function () {
var href = $('CLICKABLE FIELD').attr('href');
window.location = href;
});
});
})(jQuery, Drupal);
そのような何かがうまくいくかもしれません
私はこれを行うためにJavaScriptを使用しません。これを行うには、ブロックtwigオーバーライドファイルを指定し、出力全体を<a href...
タグで囲む必要があります。
これを行うと、アンカー内にアンカーを配置できないため、フラグなどの他のリンクは機能しなくなります。
以下は昨年のプロジェクトの例です。
<div{{ attributes.addClass(classes) }}>
{{ title_prefix }}{{ title_suffix }}
<a href="{{ path('entity.node.canonical', {'node': NODE_ID_VAR}) }}">
{% if block_content.field_sidebar_image is not empty %}
{{ content.field_sidebar_image }}
{% endif %}
<div class="c-sidebar-promo__content">
<div class="c-sidebar-promo__header">
{% if block_content.field_title_image is not empty %}
{{ content.field_title_image }}
{% endif %}
<h4 class="c-sidebar-promo__title">{{ label }}</h4>
</div>
<div class="c-sidebar-promo__description">
<p>{{ content.field_sidebar_description }}</p>
</div>
</div>
</a>
{{ content|without('field_sidebar_image', 'field_sidebar_description', 'field_sidebar_link', 'field_title_image') }}
</div>
これにより、ブロック出力全体が、指定されたリンク先にクリック可能になります。
編集:Twigでノードリンクを生成する方法で例を更新しました。
Fields show formatのあるビューの場合:
テーマのビューフィールドのテンプレートを上書きします。私の場合は、views-view-fields--seminary--block-2.html.twig
<a href = "{{path( 'entity.node.canonical'、{'node':fields.nid.content | striptags | trim})}}"> //一部のフィールド