Holen Sie sich den Site-Namen in eine benutzerdefinierte Vorlage

7

Ich möchte den Site-Namen in einer benutzerdefinierten Vorlage drucken ( page--front.html.twig)

{{ site_name }} funktioniert nicht.

Wenn ich benutze, {{ page['#title'] }}erhalte ich nur "Willkommen bei [Site-Name]".

Ich suche nach einer Möglichkeit, nur den Site-Namen zu drucken. Weiß jemand, wie man das erreicht?

Vielen Dank!

Stefan
quelle

Antworten:

11

Fügen Sie dies der YOUR_THEME.themeDatei hinzu:

function YOUR_THEME_preprocess_page(&$variables) {
  $variables['site_name'] = \Drupal::config('system.site')->get('name');
}

Und dann das in Ihrer page--front.html.twigVorlage:

{{ site_name }}
Aram Boyajyan
quelle
6

Einige Dinge haben sich von Drupal 7 zu Drupal 8 geändert. Eines der Dinge, die sich geändert haben, ist, dass es eine wirklich gute Idee ist, Blöcke zu verwenden, anstatt dieses Zeug selbst abzurufen und zu rendern. Der Hauptgrund ist das Caching.

Was Sie wahrscheinlich tun möchten, ist, den Site-Branding-Block irgendwo auf der Seite zu platzieren (kann Site-Namen, Logo und / oder Slogan anzeigen). Viele der Dinge, die in Themen fest codiert wurden, sind jetzt Blöcke.

Dies war mit großen Anstrengungen verbunden, da dies das Caching und die enormen Leistungssteigerungen ermöglicht, die in Drupal 8 erzielt wurden.

Wenn Sie es wirklich auf Drupal 7-Weise tun möchten, zeigt Ihnen die Antwort von @ Aram, wie es mit einem Vorverarbeitungs-Hook gemacht wird.

googletorp
quelle
Sehr interessant. Vielen Dank! Ich habe einen Weg gefunden, den Block in einer * .twig-Vorlage zu implementieren, indem ich das folgende Snippet verwendet habe: {% include 'theme / bootstrap / templates / block - system-branding-block.html.twig'%}. Ist das in Ordnung oder würden Sie einen anderen Ansatz empfehlen?
Stefan
@Phil Ich würde empfehlen, dass Sie eine Region in Ihrem Thema erstellen und den Block konfigurieren und platzieren. Bei Bedarf kann eine benutzerdefinierte Vorlage erstellt werden, um das generierte Markup zu ändern. In den meisten Fällen ist dies nicht erforderlich.
Googletorp
1

Ja, in D8 twig templateDateien können Sie keinen Code zum Abrufen von Daten schreiben.

Wenn Sie Daten benötigen, müssen Sie die Variablen in preprocessfunction setzen und diese verwenden.

DRUPWAY
quelle