2016-02-25 3 views
0
$description = $this->t('See the <a onclick="drup()">drupal</a> for options.');  

В приведенном выше коде drup() является функцией javascript из js-файла drupaljs.js. как включить или прикрепить файл js в модуль drupal 8.Прикрепить файл js в Drupal 8

Ниже приводится иерархия каталогов для кода: друпали/ядро ​​/ модули/config_translation/SRC/FormElement/func.module

ответ

1

По сравнению с Drupal 7, Drupal 8 только добавить JavaScript, необходимый на этой странице. Это означает, например, что jQuery больше не загружается автоматически на всех страницах.

Для добавления персонализированного кода JavaScript на странице, в настоящее время три Differents шага:

  1. Сохранить в CSS или JS в файл.
  2. Определите «библиотеку», которая может содержать как файлы CSS, так и JS.
  3. «Прикрепите» библиотеку к массиву рендеринга в крючке.

Чтобы определить библиотеку, вы должны создать * .librairies.yml в своем модуле, где * - имя вашего модуля. Тогда вы должны иметь что-то вроде:

cuddly-slider: 
version: 1.x 
    css: 
    theme: 
     css/cuddly-slider.css: {} 
    js: 
    js/cuddly-slider.js: {} 
    dependencies: 
    - core/jquery 

Как я уже сказал, JQuery не всегда загружается на каждой странице, это означает, что если вам нужно использовать JQuery, вы должны сказать Drupal, что библиотека нужна, с ключ зависимостей.

В зависимости от того, какие активы необходимо загрузить, вы захотите присоединить соответствующую библиотеку активов по-другому. Вы можете использовать несколько крючков для загрузки своей библиотеки. Если вы хотите, чтобы он был загружен на некоторые страницы, вы можете использовать hook_page_attachments().

<?php 
function contextual_page_attachments(array &$page) { 
    if (!\Drupal::currentUser()->hasPermission('access contextual links')) { 
    return; 
    } 

    $page['#attached']['library'][] = 'contextual/drupal.contextual-links'; 
} 
?> 

прикрепить его к шаблону веточку:

{{ attach_library('contextual/drupal.contextual-links') }} 

Вот полная документация о том, как прикрепить файл JS программно: https://www.drupal.org/developing/api/8/assets

+1

Но это загрузит JS на всех страницах. Как загрузить js только на определенную страницу или для одного модуля? – ladhani

Смежные вопросы