Drupal 8)で、CSSクラスを特定の画像スタイルに追加しようとしています。この目的のために、テンプレートを設定しようとしていますが、私は知識が不足していることを知っています(私は過去数か月にわたって自分にこのことを教えてきました)。
具体的には、スタイルマシン名が「feature_main_960_x_640_」、フィールドマシン名が「field_image」のすべての画像に、「フルコンテンツ」ビューモードで次のクラスを含めます。このクラスをimgタグに追加したいのですが。
目的:コンテンツ全体が表示されているときに記事のフィーチャー画像を中央に配置すること。
仕様:Drupal 8、テーマはBootstrap 3、Display Suiteモジュールを使用。
Display Suiteを使用してBootstrap 3の「center-block」クラスを追加しました。このクラスは、div内のimgタグの前に追加されます。これにより、画像が中央に配置されません。 img内に「center-block」を手動で追加したときにのみ画像が中央に配置されます。この目的でフィールドフォーマッタークラスモジュールも使用し、クラスをimgではなくdivに追加したため、問題が解決しません。
これまでのところ、私は問題に大槌を持って、すべての画像にクラスを適用するために次のテンプレートを使用しましたが、上で述べたように、アプリケーションで正確にしたいと思います。これは私が使用したテンプレートです:
image.html.twig
{% set classes = [
theme.settings.image_shape ? theme.settings.image_shape,
theme.settings.image_responsive ? 'img-responsive',
'center-block',
] %}
<img{{ attributes.addClass(classes) }} />
解決策はありますか?
Drupal 8では、hook_preprocess_image
テーマ内mytheme.theme
ファイル。
/**
* Implements hook_preprocess_image().
*/
function mytheme_preprocess_image(&$variables) {
if ($variables['style_name'] == 'my_custom_image_style') {
$variables['attributes']['class'][] = 'my_css_class';
}
}