it-swarm.com.de

Holen Sie sich die Knoten-ID oder URL in Twig auf Feldebene

Ich habe einen Feldwert, den ich mit dem Inhalt verknüpfen möchte (mit dem Knoten selbst, indem ich ihn in einem Teaser verwende).

Wie kann ich die URL oder zumindest die ID auf Feldebene abrufen, um diesen Link zu erstellen?

1
Benjamin

Der Knoten in einer Feldvorlage ist die übergeordnete Entität, die Sie im Element ['# object'] finden, mit der Sie den Pfad erstellen können:

{{ path('entity.node.canonical', {'node':  element['#object'].id}) }}
3
4k4

Sie sollten Ihnen möglicherweise die vorhandene URL vorverarbeiten. Via template_preprocess_field Holen Sie sich die Knoten-ID, erstellen Sie den Pfad-Alias ​​und senden Sie ihn an Twig.

/**
 * Implements template_preprocess_field__FIELD_NAME().
 */
function MYTHEME_preprocess_field__MYFIELD(&$variables) {

  if ($variables['element']['#entity_type'] === 'node') {
    $node = $variables['element']['#object'];
    $nid = $node->id();
    $variables['myurl'] = \Drupal::service('path.alias_manager')->getAliasByPath('/node/' . $nid);
  }
}

Im field.html.twig dann mach:

{% if myurl %}
   <a href="{{ myurl }}">Kool Keith</a>
{% endif %}
1
leymannx

Ohne Vorverarbeitung direkt in Twig:

{# get owner entity #}
{% set owner_entity = element['#object'] %}
{# render id #}
id = {{ element['#object'].id }}
{# render raw field value #}
field foo = {{ element['#object'].field_foo.0.value }}
1
Hudri