Настройки не отображаются

Всем привет, я только начинаю разрабатывать что-то для Discourse и сейчас работаю над компонентом темы.
Ссылка: GitHub - NateDhaliwal/discourse-persistent-banner: A theme component for Discourse that cannot be closed by the user. · GitHub

Когда я добавляю его в Theme Creator, настройки не отображаются, хотя у меня есть файл settings.yml. Есть какие-нибудь идеи?

Вы видите какие-либо сообщения об ошибках в создателе тем?

Кажется, вам нужно использовать одинаковые кавычки в начале и в конце.

Это тоже может быть проблемой. Я бы попробовал default: "".

Возможно, вы захотите добавить «block» в список вариантов. В противном случае вам придётся использовать кнопку «Восстановить», чтобы выбрать его снова.

Ой, только что понял, что нажимал на «Создать новый» вместо импорта… Но теперь, когда я пытаюсь использовать URL, появляется сообщение, что about.json недействителен или не существует, и спрашивается, является ли это темой.
about.json:

Что-то не так?

Отсутствует запятая после URL лицензии.

:roll_eyes:
@merefield Будет ли версия в ""?

Вероятно, и это тоже. Просто посмотрите на примеры.

Спасибо! Ещё один вопрос: я не могу заставить переменную отображаться.
https://github.com/NateDhaliwal/discourse-persistent-banner/blob/main/common/header.html

Может быть, я неправильно её инициализировал? Я пытался следовать руководству…

  1. Не используйте «header.html», используйте правильный компонент (предпочтительно файл .gjs, но может подойти и .hbs).
  2. Используйте вспомогательную функцию html-safe при выводе HTML из настроек или переменных.

Значит, мне нужно использовать

import Component from "@glimmer/component";

export default class PracticeComponent extends Component {
  get bannerLinks() {
    return JSON.parse(settings.banner_links);
  }
}

?

Посмотрите на миллиарды примеров :stuck_out_tongue_winking_eye:

Вам нужен файл gjs только в том случае, если вам нужно обрабатывать что-то с помощью JavaScript, иначе может хватить файла шаблона hbs. Поэкспериментируйте.

Я не уверен, что двигаюсь в правильном направлении.
Я создал файл javascripts/persistent-banner.hbs с этим содержимым:
https://github.com/NateDhaliwal/discourse-persistent-banner/blob/main/javascripts/persistent-banner.hbs

Но ничего не отображается. Пробовал размещать его в разных местах, но всё равно не работает.

Посмотрел примеры, но многие, похоже, не помогают.
Есть какие-то советы?

В какой outlet плагина вы хотите разместить свой баннер?
Посмотрите Using Plugin Outlet Connectors from a Theme or Plugin

Вы можете использовать https://meta.discourse.org/t/add-a-featured-topic-list-to-your-discourse-homepage/132949?u=moin в качестве примера

Вы можете использовать (deprecated) Plugin outlet locations theme component, чтобы найти имена и расположение outlet плагинов. Например, “above-main-container” — это верхний элемент над списком тем, но не над боковой панелью.

Также отличный способ научиться — посмотреть код #theme-component, который добавляет что-то подобное.

Вам не нужно и не следует добавлять теги script в файлы hbs. Они должны ограничиваться содержимым шаблона.

Не действуйте вслепую, прочитайте руководства:

Итак… мне удалось заставить это работать без использования hbs-файла, а вместо этого с помощью тега <script> с Handlebars, и теперь всё работает.
Пока я использую его так, но продолжу попытки использовать hbs-файл.

Создал для вас быстрый pull request, чтобы вы могли увидеть, как правильно разделить файлы. Можете смело слить его или просто посмотреть на ветку.

Спасибо большое! Теперь всё работает!

Не переживай, Нейт. Продолжай экспериментировать, читать и изучать другие примеры. Очень скоро ты будешь в этой разработке гораздо лучше меня :smiley: :raised_hands:

Спасибо за поддержку!