Это просто замечательно, @angus. Большое спасибо.
Видео, безусловно, полезно — я полностью за то, чтобы делать вещи максимально простыми, но, на мой взгляд, оно не обязательно для получения ключевой ценности из этих материалов, подготовленных @angus. Эти ресурсы предоставляют код, необходимый для достижения конкретной цели, о которой идёт речь в материале (создание пользовательского поля темы или категории). Видео, скорее всего, просто показало бы, как @angus или кто-то другой объясняет процесс внедрения ресурса, но это достаточно прямолинейно, и мы, вероятно, можем просто изложить это здесь.
Для ясности: эти ресурсы — не плагины, которые можно просто добавить на свой сайт как готовое решение для кастомизации форума. Вместо этого они эффективно дают вам понимание, необходимое для написания собственного кода пользовательских полей в вашем плагине.
Вот как я использовал эти ресурсы:
Вам нужно добавить имя и тип поля, которое вы хотите создать, в config/settings. Код в этих ресурсах использует переменные, определённые там. Таким образом, после этого вам фактически не потребуется много настраивать код, чтобы он заработал в вашем собственном плагине — переменные в plugin.rb и других файлах ссылаются на config/settings, и всё должно работать.
После обновления config/settings вы можете просто следовать коду, добавляя его в свой плагин:
-
Начните с кода в plugin.rb и добавьте его в plugin.rb вашего собственного плагина, чтобы создать пользовательское поле.
-
Затем перейдите к инициализатору (в assets/javascripts/discourse/[custom-field-initializer]), чтобы получить код, который инициализирует пользовательское поле и позволяет сохранить его на сервер.
-
Затем создайте форму в слое представления, где пользователь (или ваше приложение, если оно добавляет поле автоматически) сможет ввести значение для пользовательского поля, здесь (assets/discourse/connectors/[plugin-outlet-name]/[ваш специальный шаблон].hbs).
-
@angus настроил это так, что вы добавляете формы для пользовательских полей в плагин-аутлет, который будет вставлен в шаблон Discourse. Настройки для этой формы находятся здесь (assets/javascripts/discourse/lib/[custom-field-name].js.es6), поэтому, вероятно, вам стоит также настроить их, чтобы форма работала корректно.
@angus, пожалуйста, поправьте меня, если я что-то сказал неправильно.
Как только я разобрался с настройкой пользовательского поля, пройдя шаги выше, я начал немного больше кастомизировать процесс (например, более креативно подойдя к работе формы), но это было чрезвычайно полезной отправной точкой, которая сэкономила мне часы работы.
После прохождения всех шагов у меня возникло несколько вопросов (как я спрашивал ранее), но получение ответов в Development кажется самым эффективным способом двигаться дальше.