Это должно быть выполнимо в компоненте темы. Идентификатор пользователя доступен без дополнительного запроса, поэтому вам понадобится только немного JavaScript, чтобы отобразить его в слоте плагина на странице профиля.
@pfaffman Спасибо за ответ. Дело в том, что UID неизменяем (никогда не меняется), поэтому он может служить постоянным отпечатком для учётной записи пользователя. Имена пользователей могут меняться, поэтому в тикетах поддержки это позволяет мгновенно найти учётную запись, транзакции, сессии авторизации и т. д. UID нельзя подделать, и они остаются уникальными навсегда.
Я хотел бы, чтобы UID увеличивался на 1 с каждым новым пользователем.
@Moin Спасибо за ответ, он был полезен. Да, я могу просмотреть ответ в разделе Network → XHR → Response. Отлично. Но я не знаю, как отобразить UID в профиле пользователя. Я хочу показать его здесь: https://mydomain.com/u//preferences/account
Однако в разделе создания компонентов доступны только следующие опции: Before Header, After Header и Footer.
/my/preferences/account не является публичным; другие пользователи не могут это видеть, но, исходя из вашего случая использования, может быть достаточно, чтобы сам пользователь видел свой ID.
Вам нужно найти точку расширения (plugin outlet), которая находится рядом с тем местом, где вы хотите показать информацию. Обычно я использую кнопку в панели разработчика, чтобы сделать их видимыми на форуме. Видя их внутри форума, мне легче найти наилучшую точку расширения. Подробнее о том, как отобразить что-либо в точке расширения, вы можете узнать здесь: Theme Developer Tutorial: 1. Introduction
Хорошо, если я хочу, чтобы это видели все (публично), я должен разместить это в: mydomain.com/u/<user>/summary
Таким образом, с помощью enableDevTools() в консоли браузера я думаю, что user-profile-secondary будет хорошим местом.
Я попробую сейчас.
Я застрял. Как мне получить id пользователя, которого я просматриваю? Потому что api.getCurrentUser возвращает данные авторизованного пользователя.
Я просто добавил ID пользователя в плагин outlet: header-contents__after
Используя пост @pfaffman выше, вы можете создать компонент, который использует {{@user.id}}. См. Theme Developer Tutorial: 5. Building and using components, но, думаю, это можно сделать в разделе Edit CSS/HTML > JS в интерфейсе Discourse TC, используя api.renderInOutlet().
Да, api.renderInOutlet() пришёл на помощь. Однако моя проблема, которая теперь уже неактуальна, так как я подошёл к ней иначе, заключалась в том, что я не знал, как получить user.id просматриваемого профиля.
Есть какие-нибудь идеи?
Думаю, будет проще, если вы выберете outlet, который предоставляет модель пользователя, чью страницу вы просматриваете.
Выбранный вами outlet предоставляет информацию о теме, но не о пользователях.
Outlet’ы на странице профиля пользователя, такие как user-post-names, предоставляют модель пользователя:
С outlet’ом, который предоставляет модель, вы сможете использовать @outletArgs, как в примере на Theme Developer Tutorial: 4. Using Outlets to insert and replace content. В том примере используется discovery-list-container-top, который предоставляет @outletArgs={{lazyHash category=@model.category tag=@model.tag}}.
Вот почему я бы выбрал outlet, предоставляющий модель пользователя. Вы можете увидеть модель, наведя курсор на outlet, и увидеть ID пользователя, профиль которого вы просматриваете. Многие примеры в руководстве используют сервис currentUser, который предоставляет ID действующего пользователя, а это не то, что вам, кажется, нужно.