Как добавить пользовательские поля к моделям

Это просто замечательно, @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 кажется самым эффективным способом двигаться дальше.

3 лайка