Come posso trovare le posizioni dei template di Discourse per impostarle nel codice?
Sono particolarmente interessato al nome corretto della usercard
C’è un componente del tema molto utile per individuare le uscite dei plugin dei nostri vari template Handlebars: (deprecated) Plugin outlet locations theme component. Alla fine del primo post c’è un link a un’anteprima del componente sul nostro sito di creazione dei temi. Puoi usarlo per trovare la maggior parte delle uscite dei plugin senza nemmeno doverlo installare sul tuo sito.
Una cosa da tenere a mente è che i template e i widget sono due concetti separati. Detto questo, possono lavorare insieme se necessario, montando un widget su un’uscita del plugin di un template. Tuttavia, in questo momento è più comune utilizzare connettori/componenti/controller per lavorare con le uscite dei plugin, proprio come faresti in un plugin.
Questa sezione della guida per gli sviluppatori copre gran parte di ciò che stai cercando: Developing Discourse Themes & Theme Components. Ti consiglio anche di consultare i repository GitHub dei componenti dei temi nella nostra categoria #theme per vedere alcuni buoni esempi.
Grazie per il suggerimento! Ho trovato la parte necessaria user-card-post-names:after.
Ho provato a utilizzarla nel codice originale, ma non ci sono riuscito.
Ho modificato poster-name:after in user-card-post-names:after, ma non ha funzionato e il campo personalizzato non è visibile sulla scheda utente. Hai qualche idea sul motivo?
Non potrai utilizzare decorateWidget() su una plugin outlet. Prova qualcosa di simile a questo:
<script type="text/discourse-plugin" version="0.8.42">
const h = require("virtual-dom").h;
api.createWidget("user-card-custom-field", {
html(attrs) {
const userCustomFields = attrs.user.custom_fields;
if (userCustomFields.user_field_4) {
return h('span.poster-user-field', userCustomFields.user_field_4);
}
}
});
</script>
<script type="text/x-handlebars" data-template-name="/connectors/user-card-post-names/user-card-custom-field">
{{mount-widget widget="user-card-custom-field" args=(hash user=user)}}
</script>
mount-widget passa l’oggetto user disponibile dalla plugin outlet nel core e lo rende disponibile negli attributi del widget user-card-custom-field che abbiamo creato.
Assicurati di aver aggiunto user_field_4 alle tue impostazioni del sito “campi personalizzati utente pubblici” o “campi personalizzati utente dello staff”, a seconda delle necessità .
Modifica
Inoltre, a meno che tu non debba fare qualcosa di particolarmente speciale, dovresti essere in grado di evitare completamente i widget e utilizzare semplicemente la plugin outlet:
<script type="text/x-handlebars" data-template-name="/connectors/user-card-post-names/user-card-custom-field">
{{#if user.custom_fields.user_field_1}}
<span class="poster-user-field">{{user.custom_fields.user_field_1}}</span>
{{/if}}
</script>
Grazie mille! Tutto funziona.
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

