如何在Drupal Entity Print输出中加载自定义JavaScript库?
为Drupal Entity Print模块加载主题JS库的正确方式
以下是几种更合适的加载方案,替代你当前用hook_theme添加变量的方式:
使用Entity Print专属钩子
hook_entity_print_build
这是模块官方提供的资源附加钩子,能精准作用于打印内容的构建流程。在自定义模块中添加代码:/** * Implements hook_entity_print_build(). */ function YOUR_MODULE_entity_print_build(array &$build, EntityPrintPluginInterface $plugin) { // 替换为你的主题和目标库名称 $build['#attached']['library'][] = 'your_theme/your_target_library'; }清除缓存后,该库会自动附加到Entity Print的输出内容中。
自定义主题模板并正确附加库
若之前直接用{{ attach_library() }}无效,大概率是模板上下文的问题。可以按以下步骤操作:- 复制Entity Print模块的
entity-print.html.twig到主题的templates目录下; - 在自定义模板中添加库附加代码,示例:
{# 主题/templates/entity-print.html.twig #} {% extends '@entity_print/entity-print.html.twig' %} {% attach_library('your_theme/your_target_library') %} {% block content %} {{ parent() }} {% endblock %} - 清除主题缓存,确保模板被正确识别。
- 复制Entity Print模块的
检查主题库的定义正确性
先确认主题your_theme.libraries.yml中的库配置无错误,比如路径、依赖项是否正确:your_target_library: js: js/your-script.js: {} dependencies: - core/jquery - core/drupal路径需相对于主题根目录,依赖项按需添加,避免因库本身定义问题导致加载失败。
内容的提问来源于stack exchange,提问作者felipep
相关产品推荐
相关产品推荐

