テーマテンプレートの引数値が必要で、views-views-fields--view_name--block_1.jhtml.twig
。
私は現在、そのような現在のURLを取得しています:
{% set url = url('current')%}
どの出力:
https://example.com/questions/12225
しかし、現在のURLの12225値のみが必要です。 Twigの現在のURLから最後のパラメーターを取得するにはどうすればよいですか?
Twigの split
フィルターを使用することもできますが、テンプレート内でスクリプトを作成しすぎることはお勧めしません。
代わりに、値をTwigに渡して、テーマまたはカスタムモジュール内のプリプロセス関数から template_preprocess_views_view_fields
。
/**
* Implements template_preprocess_views_view_fields().
*/
function MYTHEME/MYMODULE_preprocess_views_view_fields(&$variables) {
// Retrieve an array which contains the path pieces.
$current_path = \Drupal::service('path.current')->getPath();
if ($current_path[0] == 'questions') {
$variables['question_id'] = $current_path[1];
}
}
そして、あなたのテンプレートの中にそれを例えば次のように印刷してください:
{% if question_id %}
<div id="{{ question_id }}">Question ID: {{ question_id }}</div>
{% endif %}
私はそれが最善の方法であるかどうかはわかりませんが、あなたを助けることができます{%set url = url( 'current>')%}を使用していますダンプ後、それは
array(3) {
["#markup"]=>
string(23) "http://example.com/category" ["#cache"]=> array(3) {
["contexts"]=> array(2) { [0]=> string(5) "route" [1]=>string(8)
"url.site" } ["tags"]=> array(0) { } ["max-age"]=> int(-1) }
["#attached"]=> array(0) { } }
配列を文字列に変換する
{% set url = url('current>')['#markup'] %}
{{ url|split('/')|last }}
あなたはurlから最後の値を取得します
私もurlパラメータを取得しようとしましたが、現在のパスはパラメータなしのパスのみを返していました。
次の解決策は、ページの前処理機能で私のために機能しました、私はビューフィールドで試していませんが、それも機能するはずです。
function yourtheme_preprocess_views_view_fields(&$variables) {
// Retrieve an array which contains the path parameters.
$variables['params']['parameter_name'] = $_GET['parameter_name'];
}