Ich versuche, der Startseite eine CSS-Datei hinzuzufügen. Ich habe gesehen, wie einem Drupal 8-Thema Stylesheets (CSS) und JavaScript (JS) hinzugefügt wurden . Ich muss nur den Namen der HOOK-Maschine für die Titelseite kennen.
function THEMENAME_preprocess_HOOK(&$variables) {
$variables['#attached']['library'][] = 'CSSPATH';
}
Welchen Namen sollte ich für die Vorverarbeitungsfunktion verwenden, damit Drupal sie nur für die Startseite aufruft?
Antworten:
In diesem Tutorial finden Sie genau das, was Sie möchten, unter dem Thema Hinzufügen von Bibliotheken zu bestimmten Seiten. Drupal 8 Theming Fundamentals, Part 1
Um Ihnen ein echtes Beispiel zu geben, werde ich es mit dem Bartik-Thema erklären, damit Sie es leicht ändern können.
Ich habe eine CSS-Datei
cssfile.css
unter dem Pfad erstelltcss/cssfile.css
. Jetzt möchte ich diese CSS-Datei nur auf der Startseite verwenden.Schritt 1: Fügen Sie die Bibliothek zum Thema hinzu: Fügen Sie den folgenden Code in das Thema ein
bartik.libraries.yml
Hinweis: Hier habe ich
css-filling
dieser Bibliothek den Namen gegeben , aber Sie können jeden anderen Namen geben. Wir werden diesen Namen im Pfad verwendenSchritt 2: Das Einstellen des Codes in der
bartik.theme
oben genannten Bibliothek (letztendlich CSS) wird nur zur Startseite hinzugefügt.Hinweis: Im obigen Code ist das Wichtigste der Pfad. Der
bartik
Teil stammt aus demthemename
undcss-filling
stammt aus Schritt 1.Diesen Code habe ich auf meiner Testseite getestet und er funktioniert nur auf der Titelseite.
quelle
Sie können Bibliotheken in Vorlagen anhängen. Dies ist beispielsweise
html.html.twig
ein idealer Ort, um vom Pfad abhängige Bibliotheken anzuhängen. Sie können entweder Vorlagenvorschläge verwenden, z. B.html--front.html.twig
einen Zweigausdruck.Die anderen Antworten drehen sich um den Vorprozess, was in Ordnung ist. Der Vorprozess ist jedoch eine Abstraktion und macht die Themenentwicklung undurchsichtiger, dh er vergräbt wichtige Informationen in einer PHP-Funktion, anstatt in der Vorlage offensichtlich und klar zu sein.
Ich sage nicht, dass Vorverarbeitung schlecht ist, nur dass es weitgehend davon abhängt, wie Sie arbeiten möchten und wie undurchsichtig / abstrakt Sie thematisieren möchten.
Um eine Bibliothek nur für die Startseite anzuhängen,
html.html.twig
können wir dennot
Operator und dieroot_path
Variable als Bedingung verwenden:Wenn Sie den Vorlagenvorschlag erstellen
html--front.html.twig
, können Sie die Bibliothek bedingungslos anhängen:quelle
Stellen Sie sicher, dass Sie zuerst das gewünschte CSS als Bibliothek erstellt haben
libraries.yml
. Dann müssen Siehook_preprocess_page()
wie folgt verwenden:Möglicherweise erstellen Sie eine
page--front.html.twig
Datei besser und hängen sie dort über Ihrelibraries.yml
Datei an. Dies ist der bevorzugte Ansatz in Drupal 8.quelle
THEMENAME
den Namen Ihres Themas ändern . Sie müssen auch einen Pfad zur CSS-Datei angeben, etwa$variables['#attached']['library'][] = $variables['directory']' . 'css/front.css'; }