hehe, questa è la merda in termini di ottenere URL dal campo (versione Ramoscello di ottenere quel URL)
Se si desidera che l'URL (e il titolo) che è in un campo che si deve arrivare a oggetto della classe: Drupal \ core \ URL
Se hai il nodo drupal_entity (Twig Tweaks) poi si deve: (userò "tab" come quel nodo) . Scheda [ '# nodo'] field_link
Questo vi dà utilizzando:
scheda [ '# nodo'] field_link..uri -> URI (URI non è URL)
scheda [ '# nodo'] field_link.title -.> il titolo
ma, che non è la fine.
è meglio acess Drupal \ collegamento \ plugin \ Campo \ FieldType \ LinkItem da:.
scheda [ '# nodo'] field_link.get (0)
scheda [ '#node'] field_link [0]
(entrambi fanno lo stesso)
allora si può accedere a ciò che è più interessante:.
scheda [ '# nodo']. Field_tab_link [0] .getUrl() un Drupal \ Core \ URL oggetto .
È possibile accedere a questo oggetto anche utilizzando questa linea di seguito, dal di dentro che è file modello nodo: content.field_link [0] [ '# url'] (questo è anche Drupal \ Core \ URL oggetto)
Questo oggetto ha metodi:
- isExternal() -> è link per esterno (ossia http://cnn.com.)
- isRouted() -> viene link alla all'interno del tuo sito
- getRouteName() -> nome della rotta
- getRouteParameters() -> che vi dà una matrice di valori, qui (otteniamo ID di quel nodo) si avrebbe [ 'nodo' => ID]
si dovrebbe usare in quel modo:
{% set tabURL = tab['#node'].field_link[0].getUrl() %}
{% if tabURL.isExternal() %}
{% set link_path = tab['#node'].field_tab_link.uri %}
{% elseif tabURL.isRouted() %}
{% set link_path = path(tabURL.getRouteName(), tabURL.getRouteParameters()) %} {# /node/12 #}
{% endif %}
questo ha fatto per me. grazie per il frammento! se un alias è definito ottengo l'alias, altrimenti ottengo il link con .../node/id. – Nicensin
Potresti spiegare come usarlo? Dove ho cambiato/aggiunto codice? Nel tema> pre-elaborazione? Url.php o il core? È difficile trovare una risposta globale all'avvio di Drupal. –
@PaulLeclerc Non si dovrebbe mai modificare qualcosa nel core come nota generale. È possibile utilizzare gli esempi di codice sopra ovunque sia necessario. Funziona in tutti i file in cui è possibile utilizzare php. Ovviamente non possiamo rispondere a questo per te perché non sappiamo cosa vuoi fare. – Nicensin