Laden einer Bibliothek nur für die Startseite

6

Ich möchte JavaScript nur auf der Startseite meiner Website laden. Ich habe diese Vorverarbeitungsfunktion gefunden, weiß aber nicht, wie ich sie für die Startseite anpassen soll:

function mytheme_preprocess_maintenance_page(&$variables) {
  $variables['#attached']['library'][] = 'mytheme/cuddly-slider';
}

Ich habe ursprünglich die Bibliothek, die ich brauchte, in jede Seite meiner Site aufgenommen, aber ich brauche sie nur auf der Homepage, also muss ich das herausfinden.

Ursprünglich hatte ich es in der .info.yml-Datei wie folgt:

libraries:
 - 'themename/library'

Jede Hilfe wird geschätzt.

Salbei
quelle

Antworten:

9
function mytheme_preprocess_page(&$variables) {
  if (\Drupal::routeMatch()->getRouteName() == 'view.frontpage.page_1') {
        $variables['#attached']['library'][] = 'mytheme/cuddly-slider';
    }
}
Andrew Nim
quelle
1
Für die Titelseite könnten Sie verwenden if ($variables['is_front']). Es ist bereits in theme.inc festgelegt und funktioniert für andere Titelseiten als die Startseitenansicht.
4k4
Beachten Sie, dass dies nur funktioniert, wenn Sie die Standard-Startseitenansicht von Drupal verwenden. Verwenden Sie besser die Lösung von make-me-living, die immer funktioniert, auch wenn Sie einen Knoten als Startseite verwenden.
Hudri
7

Die andere Problemumgehung wäre die Verwendung der Methode aus der Pfadvergleichsschnittstelle von drupal, die true zurückgibt, wenn die aktuelle Seite die Startseite ist.

function themename_preprocess_page(&$variables) {

//using the method from the pathmatcherinterface
  if (\Drupal::service('path.matcher')->isFrontPage()) {
    $variables['#attached']['library'][] = 'themename/cuddly-slider';
  }
}
mach mich lebendig
quelle