Хорошо, я пошел по другому пути, не используя плагины для портфолио. Не уверен, стоит ли мне разместить это здесь или создать новую тему — если нужно, пожалуйста, дайте знать!
Может ли кто-нибудь взглянуть на это и сказать, что я делаю не так (и, надеюсь, почему и как это исправить)? Я потратил часы на часы, читая учебники, написывая код и внося правки, но я все еще новичок и дошел до точки, когда не знаю, что попробовать дальше.
Цель: отображать список тем из определенной категории на странице профиля пользователя.
В данном случае это форум для RPG, где пользователи создают персонажей для публикации историй. Я хочу, чтобы этот плагин показывал, каких персонажей создал пользователь, чтобы никому не пришлось далеко искать их. Все листы персонажей будут храниться в одном форуме. Поэтому я думаю, что мне просто нужно создать список тем, который получает темы от нужного пользователя и из нужного форума.
Я использовал следующие ссылки в качестве основы:
https://meta.discourse.org/t/add-a-featured-topic-list-to-your-discourse-homepage/132949
Вот моя попытка. Пока что заголовок списка тем (тема/ответы/активность) отображается в нужном месте, но сам список тем не заполняется.
<script type="text/discourse-plugin" version="0.8">
const ajax = require('discourse/lib/ajax').ajax;
const Topic = require('discourse/models/topic').default;
const User = require('discourse/models/user').default;
// Нужны ajax, Topic и User
api.registerConnectorClass('above-user-summary-stats', 'character-list', {
// above-user-summary-stats — это выход плагина, character-list — имя пользовательского компонента
setupComponents(args, component) {
const store = getOwner(this).lookup("service:store");
return ajax(userPath(`/topics/created-by/${this.username_lower}.json`)).then(function (result) {
// строки взяты из summary() в модели user.js; пытаюсь найти имя пользователя профиля, который мы просматриваем, чтобы получить доступ к JSON тем, созданных этим пользователем
let characterList = [];
// пустой массив для добавления тем
result.topic_list.topics.forEach.category_id(4)(function(topic){
// только темы из нужной категории
// примерно здесь в уроке Криса были строки для связывания пользователей с темой. Я их пропустил, потому что мне не нужно отображать пользователей, кроме автора темы, вместе с темой. Это важно?
//topic.posters.forEach(function(poster){
//poster.user = $.grep(featuredUsers, function(e){ return e.id == poster.user_id; })[0];
//});
characterList.push(Topic.create(topic));
// добавить темы в список
});
component.set('characterList', characterList);
// Настроить компонент с темами из массива
}); // конец ajax
} // конец setupComponents
});
</script>
<script type="text/x-handlebars" data-template-name="/connectors/above-user-summary-stats/character-list">
<div class="custom-character-list-wrapper">
{{topic-list topics=characterList showPosters=false}}
</div>
</script>