Ich möchte den Basispfad in einer Drupal 8-Vorlagendatei verwenden. Ich habe Folgendes versucht, aber ich erhalte nicht das richtige Ergebnis.
{{ app.request.baseUrl }}
{{base_path}}
Was ich brauche, ist der absolute Pfad zum Knoten {{ app.request.baseUrl }}/{{ url }}
.
Eine Lösung, die ich gefunden habe, besteht darin, diesen Code in einen Vorverarbeitungs-Hook zu setzen und ihn an das Thema zu übergeben.
$host = \Drupal::request()->getHost();
$response = \Drupal::httpClient()
Ich suche nach einer besseren Lösung. Was könnte ich anstelle des von mir verwendeten verwenden?
path()
Funktion zum Abrufen der{{ path('entity.node.canonical', {'node': node.id}) }}
Sie müssen in Drupal 8 so gut wie nie explizit Pfade aus Teilen erstellen. Ich würde folgendermaßen vorgehen:
quelle
toString
aber noting show ausprobiert, dann habe ich kint (url) ausprobiert und gesehen das es objekt ist.In
page.html.twig
Ihnen wird eine Arbeits haben{{ base_path }}
variabel. Warum es nicht in jeder Vorlage verfügbar ist, weiß ich nicht. Wie ich denke, sollte es sein und alles andere sieht chaotisch aus, ist meine bevorzugte Lösung, genau wie Drupal in der Vorverarbeitungsseitenfunktion für jeden Ort zu tun, den ich brauche.{{ base_path }}
Fügen Sie derexample.theme
Datei den folgenden Code hinzu, um das Blockieren von Vorlagen in einem Thema mit dem Namen example verfügbar zu machen :Wie in der akzeptierten Antwort von MPD angegeben, gibt es Methoden, um alles für Sie zu erledigen, wenn Sie die URL eines Knotens oder einer anderen Entität abrufen.
Es gibt jedoch Gründe für das Abrufen des base_path, z. B. beim Anzeigen von Bildern, die sich in Ihrem Themenordner befinden.
{{ directory }}
Liefert den Pfad zum Theme-Ordner, lässt jedoch den Basispfad unberücksichtigt (normalerweise nur ein /, um die ordnungsgemäße Funktion von Drupal in einem Unterverzeichnis einer Domain zu erhalten, das nicht fest codiert werden sollte). Aufpage.html.twig
oder in einer Vorlage, die den obigen Vorprozessor hat, funktioniert dies für diesen Zweck:Und natürlich funktioniert Shawn Conns Antwort gut, wenn Sie Ihren Wunsch nach hübschen Vorlagen unterdrücken können, aber ich konnte nicht.
quelle
Und laut Page Documentation auf 8.2.x wurden zwei globale Variablen hinzugefügt, um die URLs der Startseite und des Basispfads zurückzugeben:
So können Sie Schriftart Seite URL mit bekommen
front_page
und Basis - URL mitbase_url
Hinweis
Das
{{ url('<front>') }}
Abrufen der URL der ersten Seite mit hat ein Problem, wenn Sie sie beispielsweise mit einem anderen Pfad verknüpfen möchtenRückkehr
Dies bedeutet, dass es sich standardmäßig nicht um Text handelt, und gibt ein renderbares Array an twig zurück
quelle
Im
& In der Vorlagendatei können Sie über aufrufen
quelle
Bisher bringt dieser Thread keine richtige Lösung. Wir können es mit render_val () verketten
So habe ich es benutzt, um den absoluten Pfad eines Entity-Images zu ermitteln:
Zunächst erhalten wir die Basis-URL der Site. Dann müssen wir ein extra / entfernen. Dann verketten wir unseren Basispfad mit unserem relativen Bildpfad.
quelle
Alle oben genannten Fehler sind für mich aufgetreten, da ich Sprachpfade eingerichtet habe, sodass die URL meiner Startseite so aussieht
https://example.com/en
.Schließlich habe ich diesen Code verwendet, um die tatsächliche Basis-URL für meine Website abzurufen:
quelle
Ich weiß, dass Sie dies bereits als korrekt markiert haben, aber dies kann ohne zusätzliche Arbeit als Zweigelement in einer Vorlagendatei verwendet werden. Ich fand dies im Block - system-branding-block.html.twig aus dem Thema Classy. Du kannst es also so benutzen:
quelle