Я хотел бы внедрить немного JavaScript в область before-script-load.
Возможно ли это сделать через тему или компонент темы?
Я хотел бы внедрить немного JavaScript в область before-script-load.
Возможно ли это сделать через тему или компонент темы?
Нужно ли запускать его именно в этом месте (порядок выполнения)? Браузер загрузит все эти скрипты из тега head независимо от их порядка. Вы можете добавить скрипт в область тега head, перейдя в раздел редактирования CSS/HTML темы в admin-customize-themes. Если ваша тема размещена на хостинге и не позволяет кастомизацию, вы можете добавить её с помощью компонента темы (или в файл тега head репозитория, если это ваша тема).
Это страница разработки, которая не используется в продакшене.
Что касается реальных страниц в Discourse, то темы могут без проблем внедрять содержимое в элемент head, хотя и с ограниченным контролем над точным местом вставки. Однако, как отметила @Lilly, это не должно стать проблемой.
Если вы сможете рассказать нам больше деталей о том, чего именно вы хотите достичь, мы сможем предложить некоторые рекомендации.
Думаю, вы хотите поместить это в инициализатор.
Посмотрите здесь: Split up theme Javascript into multiple files
Но Фалько знает об этом гораздо больше, чем я.
Спасибо @Lilly, @Falco и @pfaffman.
Полагаю, это моя главная проблема.
Например, мне нужно убедиться, что объект dataLayer, который я задаю, всегда добавляется на страницу до любого другого скрипта, если это возможно. Особенно до загрузки GTM (либо через встроенный механизм, либо через кастомный загрузчик).
На моей локальной машине разработки я пробовал использовать initializes, pre-initializers и шаблон head_tag.html.
Внутри шаблона head_tag.html я пробовал оборачивать свой код в теги <script></script> и <script type="text/discourse-plugin" version="0.1"></script>.
С каждым из них я могу видеть порядок инициализации относительно друг друга. Но, кроме этого, похоже, у меня нет контроля над порядком загрузки скриптов.