Tải thư viện chỉ cho trang trước


6

Tôi chỉ muốn tải JavaScript trên trang chủ của trang web của mình. Tôi đã tìm thấy chức năng tiền xử lý này nhưng tôi không biết cách tùy chỉnh nó cho trang chủ:

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

Ban đầu tôi đã bao gồm thư viện tôi cần trong mỗi trang của trang web của mình, nhưng tôi chỉ cần nó trên trang chủ, vì vậy tôi cần phải tìm ra điều này.

Ban đầu tôi đã có nó trong tệp .info.yml như vậy:

libraries:
 - 'themename/library'

Bất kỳ trợ giúp được đánh giá cao.

Câu trả lời:


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

1
Đối với trang trước bạn có thể sử dụng if ($variables['is_front']). Nó đã được đặt trong theme.inc và nó hoạt động cho các trang trước khác sau đó xem giao diện.
4k4

Lưu ý rằng điều này chỉ hoạt động nếu bạn sử dụng chế độ xem trang trước mặc định của Drupal. Sử dụng tốt hơn giải pháp make-me-live luôn hoạt động, cả khi sử dụng nút làm frontpage.
Hudri

7

Cách giải quyết khác sẽ là sử dụng phương thức từ giao diện đối sánh đường dẫn của drupal, trả về giá trị true nếu trang hiện tại là trang trước.

function themename_preprocess_page(&$variables) {

//using the method from the pathmatcherinterface
  if (\Drupal::service('path.matcher')->isFrontPage()) {
    $variables['#attached']['library'][] = 'themename/cuddly-slider';
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.