回答:
Drupal 8はライブラリーを使用し、これらをテンプレートにロードできます。言語の方向に依存するライブラリを実現する1つの方法は、html_attributes['dir']
変数を使用html.html.twig
して、値に応じて異なるライブラリをロードすることです。
{% if html_attributes['dir'] == 'ltr' %}
{{ attach_library('your_theme_name/styles') }}
{% elseif html_attributes['dir'] == 'rtl' %}
{{ attach_library('your_theme_name/styles_rtl') }}
{%- endif -%}
いくつかのライブラリを設定します。
styles:
version: 8.x-1.0
css:
theme:
css/styles.css: {}
styles_rtl:
version: 8.x-1.0
css:
theme:
css/styles-rtl.css: {}
代替ソリューションを探している人のために:
テーマの新しい
library
inlibraries.yml
ファイルを定義し、特定のCSSまたはJSまたは必要なものを使用するようにそのライブラリをポイントすることもできます。
次のステップは、テーマ前処理などの前処理を使用して、特定の条件でそのライブラリーを使用するようにDrupal8に指示することです。
例:
デフォルトライブラリの下に新しいライブラリを定義するthemename.libraries.yml
rtl:
version: VERSION
css:
theme:
assets/css/themename.style-rtl.css: {}
次に、themename.theme
ファイルの前処理でページの現在の方向を検出できます。
function themename_preprocess_html (&$variables) {
// Load specific library for pages with html attribute of RTL
if ($variables['html_attributes']['dir'] == 'rtl') {
$variables['#attached']['library'][] = 'themename/rtl';
}
}
キャッシュをクリアすると、準備完了です