Ich versuche die URL und die Title Werte eines Link-Feldes in Drupal 8 abzurufen.
In meinem benutzerdefinierten Controller rufe ich die Knoten ab mit:
$storage = \Drupal::entityManager()->getStorage('node');
$nids = $storage->getQuery()
->condition('type', 'partners')
->condition('status', 1)
->execute();
$partners = $storage->loadMultiple($nids);
Wenn ich alle meine Knoten durchläuft, um vars, die ich meiner Ansicht geben möchte, vorverarbeiten zu können, möchte ich URL und Title abrufen.
foreach ($partners as $key => $partner) {
$variables['partners'][] = array(
'image' => $partner->field_logo->entity->url(),
'url' => $partner->field_link->value, // Can't retrieve values of link field
);
}
Leider habe ich nicht gefunden, wie ich URL und Title von field_link abrufen kann.
Danke für Ihre Hilfe.
Auf Knotenebene können Sie in Ihrer Twig-Vorlage Folgendes verwenden:
{{ content.field_link.0['#url'] }}
& {{ content.field_link.0['#title'] }}
Zum Beispiel:
<a href="{{ content.field_link.0['#url'] }}">{{ content.field_link.0['#title'] }}</a>
field_link
ist der Name des betreffenden Linkfelds.
Ich habe gerade die Lösung gefunden ...
$partner->field_lien->uri // The url
$partner->field_lien->title // The title
Mein schlechtes, hoffe es könnte jemandem helfen.
Nur zu huckepack auf dem oben genannten, wenn Sie einen externen Link haben,
$node->field_name->uri
Gibt Ihnen die URL, aber wenn es sich um eine interne Adresse handelt, müssen Sie möglicherweise ein wenig mehr anpassen:
use Drupal\Core\Url;
$mylink = Url::fromUri($node->field_name[0]->uri);
$mylink->toString();
Sie können entweder den URI oder den Text eines Link-Felds direkt in der Zweigvorlage rendern. Im Falle eines Knotens können Sie eine der folgenden Optionen in der Twig-Vorlagendatei verwenden (vorausgesetzt, der Computername Ihres Verknüpfungsfelds lautet field_link
):
{{ node.field_link.uri }}
{{ node.field_link.title }}
Für Drupal 8 aktualisiert
Um die URL zu erhalten, müssen Sie nur Folgendes tun:
{{ content.field_link_name[0]['#url'] }}
So rufen Sie den Linktext ab:
{{ content.field_link_name[0]['#title'] }}
Eine weitere Möglichkeit ist das Hinzufügen eines weiteren Felds Pfad: Inhalt, wenn Sie versuchen, die URL in Ansichtenfelder abzurufen
Dieser arbeitet für mich im Zweig:
content.field_link_name.0['#title'] // title
content.field_link_name.0['#url_title'] // url value
* Sie sollten verwenden: Widget "Getrennter Linktext und URL" in der Anzeige
Ich mache diese Verbindungstrennung für ECK-Felder und diese Lösung hat mir wirklich geholfen. Ich habe den Code für ECK-Felder für den Inline-Stil in der Twig-Datei folgendermaßen aktualisiert:
<a style="color: {{ entity.field_link_color[0] }};" href="{{ entity.field_link[0]['#url'] }}"> {{ entity.field_link[0]['#title'] }} </a>
URL bekommen:{{ entity.field_link[0]['#url'] }}
Um den Link-Titel zu erhalten: {{ entity.field_link[0]['#title'] }}
Wenn Sie einen Block gerendert haben, wenn Sie auf das darin verwendete Verknüpfungsfeld zugreifen möchten, können Sie wie folgt $ render ['field_target_url'] ['# items'] -> uri innerhalb des Knotenvorverarbeitungs-Hooks verwenden.