フロントページのみのライブラリーのロード


6

サイトのホームページにのみJavaScriptをロードしたい。この前処理関数を見つけましたが、ホームページ用にカスタマイズする方法がわかりません。

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

私は当初、必要なライブラリをサイトのすべてのページに含めていましたが、ホームページにのみ必要なので、これを理解する必要があります。

もともとは.info.ymlファイルに次のようにありました:

libraries:
 - 'themename/library'

どんな助けでもありがたいです。

回答:


9
function mytheme_preprocess_page(&$variables) {
  if (\Drupal::routeMatch()->getRouteName() == 'view.frontpage.page_1') {
        $variables['#attached']['library'][] = 'mytheme/cuddly-slider';
    }
}

1
あなたはフロントページのために使うことができますif ($variables['is_front'])。それはすでにtheme.incで設定されており、それは他のフロントページ、そしてフロントページビューで機能します。
2017

これは、Drupalのデフォルトのフロントページビューを使用する場合にのみ機能することに注意してください。ノードをフロントページとして使用する場合にも、常に機能するmake-me-aliveのソリューションを使用することをお勧めします。
Hudri

7

他の回避策は、現在のページがフロントページである場合にtrueを返すdrupalのパスマッチャーインターフェイスからのメソッドを使用することです。

function themename_preprocess_page(&$variables) {

//using the method from the pathmatcherinterface
  if (\Drupal::service('path.matcher')->isFrontPage()) {
    $variables['#attached']['library'][] = 'themename/cuddly-slider';
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.