Gostaria de ouvir sua opinião sobre este plugin. Estou trabalhando em um plugin que permitirá aos visitantes escolher um novo tópico para exibir na página inicial, dependendo de seus interesses. Anotei a ideia e desenhei este passo, mas ainda não o testei.
plugin.rb
# plugins/custom_homepage/plugin.rb
# frozen_string_literal: true
# name: custom-homepage
# about: Customizes the homepage to show topics based on user interests
# version: 0.1
# authors: MHAT
# url: https://domain.com
enabled_site_setting :custom_homepage_enabled
after_initialize do
# code to be executed after initialization
end
// plugins/custom_homepage/assets/javascripts/discourse/initializers/custom-homepage.js.es6
import { withPluginApi } from 'discourse/lib/plugin-api';
export default {
name: 'custom-homepage',
initialize(container) {
withPluginApi('0.8', api => {
api.modifyClass('component:topic-list', {
didInsertElement() {
this._super(...arguments);
if (this.currentUser) {
this.loadUserInterests();
}
},
loadUserInterests() {
const userId = this.currentUser.id;
fetch(`/u/${userId}/preferences/interests`)
.then(response => response.json())
.then(data => {
this.set('topics', this.sortTopicsByInterests(this.topics, data.interests));
});
},
sortTopicsByInterests(topics, interests) {
return topics.sort((a, b) => {
const aScore = interests.includes(a.category_id) ? 1 : 0;
const bScore = interests.includes(b.category_id) ? 1 : 0;
return bScore - aScore;
});
}
});
});
}
};
# plugins/custom_homepage/config/locales/server.en.yml
en:
site_settings:
custom_homepage_enabled: "Enable Custom Homepage"
user:
preferences:
interests: "Interests"
# plugins/custom_homepage/config/discourse_plugin.yml
enabled_site_setting: custom_homepage_enabled
Html para configurações
<script type="text/x-handlebars" data-template-name="/connectors/user-preferences/interests">
<div class="control-group">
<label class="control-label">{{i18n 'user.preferences.interests'}}</label>
<div class="controls">
{{input value=currentUser.custom_fields.interests class="form-control"}}
</div>
</div>
</script>
# plugins/custom_homepage/plugin.rb
after_initialize do
User.register_custom_field_type('interests', :string)
add_to_serializer(:current_user, :interests) do
object.custom_fields['interests']
end
end
Obrigado pelo seu feedback e sugestões de melhorias.
Eu sou tailandês. Minhas habilidades em inglês podem não parecer muito boas. Tentei aprendê-lo enquanto desenvolvia o discourse.