$description = $this->t('See the <a onclick="drup()">drupal</a> for options.');
在上面的代码中,drup()是来自js文件drupaljs.js的javascript函数。如何在drupal 8模块中包含或附加js文件。
以下是代码的目录层次结构: drupal的/型芯/模块/ config_translation / SRC / FormElement / func.module
答案 0 :(得分:1)
与Drupal 7相比,Drupal 8只添加了页面上所需的javascript。这意味着例如,jQuery不再自动加载到所有页面上。
要向页面添加自定义javascript,现在有三个不同的步骤:
要定义库,您必须在模块中创建* .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