Возможно ли добавить пользовательское поле к тегам, используя ту же логику?
Применял ли кто-нибудь это к группам? Если да, поделитесь, пожалуйста, тем, что вы сделали.
Думаю, это должно сработать. Надеюсь, информация ещё актуальна.
Нет, у тегов нет пользовательских полей. Что вы пытаетесь сделать?
Да, этот репозиторий должен работать. Просто замените все вхождения my_field на имя вашего поля.
Я пытаюсь создать следующий плагин: Creating a User - Tag relation plugin
Есть ли какая-то дополнительная документация о том, как настраивать эти поля групп? С этим шаблонным кодом всё работает отлично. Но как правильно его расширить?
Например, я хочу добавить несколько полей ввода, таких как:
<div class="control-group">
<label class="control-label" for="map">Координаты главы</label>
<input name="chapter_coordinates" id="chapter_coordinates" class="ember-text-field ember-view input-xlarge" value={{group.custom_fields.group_coordinates}} placeholder="Например, 52.3727598,4.8936041" type="text">
<div class="control-instructions">Получить координаты с https://nominatim.openstreetmap.org/</div>
</div>
Но я лишь предполагаю, что нужно сделать здесь, а затем добавить остальную часть функционала Discourse. Приведённый выше пример предназначен для использования поля с координатами. Я планирую использовать g.json для создания карты на основе метаданных группы.
Также я хочу добавить флажок для отправки электронной почты группе с настройкой почты для этой группы.
<div class="control-group">
<label class="control-label" for="map">Связаться с главой по электронной почте</label>
{{input type="checkbox" checked=group.custom_fields.contact_group_by_email}}
<span>{{i18n 'admin.groups.contact_group_by_email.label'}}</span>
</div>
Однако это поле лучше разместить во вкладке взаимодействия. Как узнать, что нужно сделать, чтобы добавить его туда? Я хотел бы стать более опытным в этом. Но у меня складывается впечатление, что эта информация содержится только в коде и нигде не задокументирована. Это, вероятно, нормально, но требует больше времени и усилий для поиска того, что я ищу. Хотя то, что я хочу добавить, довольно невелико — всего несколько полей для групп ![]()
Да, это может быть непросто и немного ошеломляюще при начале работы с кодовой базой Discourse. Похоже, вы пытаетесь работать с GeoJSON. Рассматривали ли вы возможность использования или расширения плагина Locations? Он уже настроен для работы с GeoJSON в Discourse.
Курс по разработке плагинов?
Я задумывался о проведении бесплатного курса по разработке плагинов для Discourse, что, по сути, и нужно вам. Я уже подготовил материалы для курса по разработке тем (см. ниже). Если за курс по разработке плагинов проголосуют 30 человек, я проведу его (через Zoom).
- Написать и провести курс по разработке плагинов
- Не писать и не проводить курс по разработке плагинов
Введение в разработку тем
- GitHub - pavilionedu/discourse-theme-introduction · GitHub
- GitHub - pavilionedu/discourse-theme-css · GitHub
- GitHub - pavilionedu/discourse-theme-colors · GitHub
- GitHub - pavilionedu/discourse-theme-html-one · GitHub
- GitHub - pavilionedu/discourse-theme-html-two · GitHub
- GitHub - pavilionedu/discourse-theme-javascript-one · GitHub
- GitHub - pavilionedu/discourse-theme-javascript-two · GitHub
*P.S. Если наберётся 30 голосов, пожалуйста, дайте мне знать.
Отлично! Я на самом деле буду использовать форк этой карты сообщества Fairphone. Они используют сырой YAML-вывод темы. Я модифицировал свой форк, чтобы использовать данные из g.json для отрисовки маркеров на карте. Мне не хватает всего нескольких полей, таких как координаты и булево значение для использования адреса электронной почты на карте. Возможно, ещё кое-что, но сначала мне нужно понять, как всё устроено. Спасибо за ссылки! Посмотрю на них на этой неделе и посмотрю, насколько далеко я смогу продвинуться. Курс тоже был бы отличным! Мои навыки в JS/Ruby сейчас на нуле. В основном Python/Bash и немного крошек из других языков.
Возможно ли добавить пользовательские поля к постам? В идеале — прямо из редактора создания поста.
Какова минимальная версия Discourse, необходимая для использования этого плагина?
(discourse-topic-custom-fields)
Актуален ли этот репозиторий: GitHub - pavilionedu/discourse-group-custom-fields · GitHub?
Я спрашиваю, потому что попытался реализовать новое пользовательское поле для группы, но, похоже, значение, которое я ввожу в поле ввода, не сохраняется после нажатия кнопки «Сохранить».
Вот коммит со всеми внесенными мной изменениями, которые, как мне кажется, правильно следуют структуре репозитория edu: add discord_role_id field to groups · aloha-pk/discourse-discord-sync@fd3eef1 · GitHub
Да, я только что протестировал его, и он работает как положено.
{{input type="text" checked=group.custom_fields.discord_role_id}}
Ваша проблема в том, что вы изменили тип ввода на text, но оставили значение как checked. Вам нужно изменить checked на value.
Ну вот, теперь всё ясно
Спасибо за помощь! ![]()
Мне только что удалось собрать проект с этим изменением, но, к сожалению, проблема сохраняется. Значок, который я ввёл, очищается после сохранения и повторной загрузки страницы.
Есть ли у кого-то ещё какие-то предложения, @angus?
Вы что-то еще изменили по сравнению с примером? Пример работает. Попробуйте начать с самого примера. Если он тоже не работает в вашей среде, значит, проблема в чем-то другом. Если пример работает в вашей среде, последовательно возвращайте изменения, которые вы внесли, пока не найдете то, которое вызывает сбой.
Привет @angus, я добавил пользовательское поле с помощью этого плагина, и теперь оно работает корректно. Как мне отобразить это поле на странице категории под названием категории?
Вот как вы можете это выяснить:
-
Найдите в репозитории discourse/discourse шаблоны, которые отображают страницу категории (ищите HTML-элемент на странице).
-
Найдите в одном из этих шаблонов
plugin-outlet. -
Используйте
plugin-outletследующим образом:
Я написал этот код, но он всё ещё не работает. Не могли бы вы подсказать, в чём проблема?
<script type="text/discourse-plugin" version="0.8">
const { getOwner } = require("discourse-common/lib/get-owner");
const { htmlSafe } = require("@ember/string");
api.decorateWidget("category-heading:after", (helper) => {
const category = helper.attrs.category;
if (category.custom_fields?.location) {
const customLocation = htmlSafe(category.custom_fields.location);
const template = getOwner(helper).lookup("template:components/category-header");
return template.fragment.build("custom-location", { customLocation });
}
});
</script>
<script type="text/x-handlebars" data-template-name="components/category-header/custom-location">
<div class="category-custom-location">{{customLocation}}</div>
</script>
Какая именно часть не работает? Например, что вы увидите, если вставите туда console.log(category.custom_fields)?
Сегодня я установил этот плагин с этим кодом, и он, похоже, не работает: GitHub - pavilionedu/discourse-category-custom-fields: Discourse plugin showing how to add custom fields to Discourse categories · GitHub
Он устанавливается как «Education Category Custom Field», но информация об авторе отсутствует:
Что вы ожидаете, что произойдет? Без изменений оно не должно ничего делать.
