Создание нескольких пользовательских полей для темы

Здравствуйте,

Подскажите, пожалуйста, создавал ли кто-нибудь несколько пользовательских полей для темы? Мне удалось успешно использовать этот плагин для создания одного пользовательского поля: GitHub - pavilionedu/discourse-topic-custom-fields: Discourse plugin showing how to add custom fields to Discourse topics · GitHub

Однако у меня возникли трудности с созданием нескольких пользовательских полей. У кого-нибудь есть рабочий пример кода, который он был бы готов продать или поделиться со мной? Я смогу доработать его под свои нужды, но мне нужна небольшая помощь для начала. Два новых поля, которые мне нужны, — это цена (строка) и URL (строка). Мне бы также хотелось добавить поле для загрузки изображения в тему, но я пока не встречал ничего подобного.

Спасибо!

Здравствуйте,
Я с радостью помогу вам. Недавно я создал плагин, в котором использовал пользовательские поля тем (Discourse Chain Topics Plugin).

В моём плагине я добавил два дополнительных поля типа «целое число» для каждой темы. Точно так же вы можете добавить столько полей, сколько захотите. В итоге пользовательские поля тем/пользователей представляют собой JSON-объект, где каждое добавленное поле становится парой ключ/значение: ключ — это имя поля, а значение — его содержимое.

Пример, который вы привели выше (и который также помог мне), построен так, что вы добавляете дополнительное поле в панели администратора, где выбираете его тип и имя. Однако вам не обязательно привязывать дополнительные поля к панели администратора. Точно так же вы можете добавить столько полей, сколько захотите (не уверен, как это может повлиять на производительность).

Наконец, не стесняйтесь обращаться ко мне или писать, если нужна поддержка. Мои контактные данные также можно найти по адресу: https://ghassan.blog
Желаю вам удачи.

Привет, у меня была такая же проблема.. теперь я понял, как работать с несколькими пользовательскими полями!

Помимо настройки файла plugin.rb, вам также понадобятся отдельные файлы (JS-инициализатор и шаблоны .hbs и .hbr) для каждого поля!

В плагине discourse-topic-custom-fields есть папка:

plugins/discourse-topic-custom-fields/assets/javascripts/discourse/initializers

В этой папке находится файл: topic-custom-field-initializer.js.es6

Для одного поля достаточно просто отредактировать этот файл, но для нескольких полей вам нужно создать дополнительные файлы, например:

topic-custom-field-url-initializer.js.es6 и topic-custom-field-price-initializer.js.es6

В каждом файле будут 3 строки с переменной api, вызывающей метод registerConnectorClass. Вам нужно изменить второй параметр и добавить суффикс, чтобы получить уникальное имя для класса каждого поля во всех 3 строках.

Не забудьте также изменить имя экспорта в каждом файле (сразу после “exports default {…”).

Кроме того, для файлов hbs и hbr вам также понадобятся отдельные файлы для каждого поля. Просто скопируйте и вставьте те же файлы, добавив суффикс к имени каждого файла, например: