it-swarm.com.de

URL & Titel aus Link-Feld in Drupal 8 extrahieren?

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.

15
Kevin Wenger

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.

24
Mark Conroy

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.

9
Kevin Wenger

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();
7
Greg

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 }} 
2
Benjen

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'] }}
1
Vishal Rao

Eine weitere Möglichkeit ist das Hinzufügen eines weiteren Felds Pfad: Inhalt, wenn Sie versuchen, die URL in Ansichtenfelder abzurufen

0
Jignesh Rawal

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

0
zanvidmar

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'] }}

0
Arti Prasad

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.

0
Debasish