web-dev-qa-db-ja.com

翻訳されたビュー行の未翻訳のフィールド値にアクセスするにはどうすればよいですか?

タイトルフィールドをビューに追加する場合は、トークンtitle__rawをパターンとして使用できます。 dossier_statusという名前のビューで使用するカスタムフィールドを作成したばかりで、dossier_status__rawのようなトークンを作成する必要があります。その理由は、ステータスをさまざまな言語に翻訳できるためです。CSSクラスとして使用するには、ステータスを常に英語で表示する必要があります。どうすればこれを達成できますか?

enter image description here

差し当たり、dossier_status_machine_nameという名前の別のフィールドがあります(ステータスは常に英語です)が、これは最善の方法ではないと思います。

3

テキストフィールドの書き換えトークンパターンで未翻訳のフィールド値にアクセスできないようです。行エンティティを使用して未翻訳のエンティティ{{ row._entity.getuntranslated().field_dossier_status.value|clean_class }}を取得することで、テンプレートのフィールドから未翻訳の値を取得できますが、ビューでテンプレートを使用すると、可能であれば回避します。したがって、これはより良いアプローチかもしれません:

静的

CSSクラスの数が限られていると仮定します。ほとんどの場合、CSSは静的です。許可された値のリストを含むタイプlist(text)のフィールドfield_dossier_statusを使用します:

dossier-status-class-1| Dossier Status Class 1
dossier-status-class-2| Dossier Status Class 2
...

許可された値の2番目の部分はTranslate content fieldsで翻訳できます。

ここで、Viewsトークンパターン__valueのこのリストフィールドから未加工の値にアクセスすると、未翻訳の最初の部分が取得されます

<div class="{{ field_dossier_status__value }}">

そしてこの結果:

<div class="dossier-status-class-1">

ダイナミック

CSSが動的な場合は、許可される値に動的な方法を使用できます。 Drupal 8 のリストフィールドの動的なデフォルト値と許可される値を参照してください。数日前に尋ねた質問に対するこの回答の最初のアイデアを私にくれました。動的CSSが提供するクラスを解析して、許可された値のリストに入力することもできます。

2
4k4

あなたのステータスがopenclosedのふりをしましょう

書類ステータスフィールドの書き換え結果を試してみてください(テストされていません)。

{% if field_dossier_status == 'open'|t %}

<div class="dossier-open">{{ field_dossier_status }}</div>

{% elseif field_dossier_status == 'closed'|t %}

<div class="dossier-closed">{{ field_dossier_status }}</div>

{% endif %}

機能しない場合は、ビューフィールドテンプレートファイルviews-view-fields-[view-name] .html.twigを試してください。

{% if fields.field_dossier_status.content|striptags == 'open'|t %}

<div class="dossier-open">{{ fields.field_dossier_status.content }}</div>

{% elseif fields.field_dossier_status.content|striptags == 'closed'|t %}

<div class="dossier-closed">{{ fields.field_dossier_status.content }}</div>

{% endif %}

うまくいけば、これらのいずれかが機能します。

1
No Sssweat