nstoecki42
(Nico Stöckigt)
28 Aprile 2023, 10:24am
1
Ciao,
Ho provato ad aggiungere un disclaimer su una categoria specifica. Ho avuto l’idea di avere un “banner” - come
Questo è il primo post dell'utente - diamo il benvenuto al nuovo membro nella nostra community!
o
È passato un po' di tempo dall'ultima volta che abbiamo visto UTENTE - l'ultimo post risale a 1 anno fa.
sopra ogni post.
Ho provato a raggiungere questo obiettivo con:
common/head_tag.html
<script type="text/discourse-plugin" version="0.8">
api.decorateWidget('post:after', (helper, args) => {
if (args.topic.category_id === 51) { // La mia categoria
const $post = helper.find('.cooked');
const disclaimerText = api.decorateCooked(helper, args, settings.MY_DISCLAIMER);
$post.prepend(`<div class="disclaimer">${disclaimerText}</div>`);
}
});
</script>
Solo per completezza ecco il
settings.yml
MY_DISCLAIMER:
type: string
default: 'Questo è una categoria che viene fornita con una garanzia limitata e deve essere utilizzata a proprio rischio.'
description: Testo del disclaimer per la categoria
e c’è anche common/common.scss con la classe .disclaimer al suo interno.
Ma quando attivo questo, il post stesso non viene più mostrato, l’area del contenuto è semplicemente vuota.
Grazie per qualsiasi aiuto!
1 Mi Piace
Stephen
(Stephen)
28 Aprile 2023, 10:44am
2
È vuoto anche nell’originale?
Ciao, bentornato!
Se vedi uno spazio vuoto, è perché hai un errore. find non esiste in helper.
Di solito puoi vederlo nella console del browser (F12).
Probabilmente vuoi qualcosa del genere:
api.decorateWidget('post:before', (helper, args) => {
if (helper.widget.model.topic.category_id === 51) {
return helper.h("div.disclaimer", settings.MY_DISCLAIMER)
}
});
o usando HTML grezzo:
const RawHtml = require("discourse/widgets/raw-html").default;
api.decorateWidget('post:before', (helper, args) => {
if (helper.widget.model.topic.category_id === 51) {
return new RawHtml({html: `<div class="container">${settings.MY_DISCLAIMER}</div>`})
}
});
Puoi leggere questo post che spiega come funziona questo helper h.
Puoi fare quanto segue se vuoi aggiungere dell’HTML prima del contenuto cotto:
api.decorateWidget('post-contents:before', (helper, args) => {
const { topic } = helper.widget.findAncestorModel();
if (topic && topic.category_id === 51) {
return helper.h("div.disclaimer", settings.MY_DISCLAIMER);
}
});
3 Mi Piace
nstoecki42
(Nico Stöckigt)
2 Maggio 2023, 8:49am
4
Grazie @Arkshine , è stato di grande aiuto!
Ho usato il seguente codice perché voglio visualizzare il testo sopra, come gli altri banner menzionati.
api.decorateWidget('post:before', (helper, args) => {
if (helper.widget.model.topic.category_id === 51) {
return helper.h("div.disclaimer", settings.MY_DISCLAIMER)
}
});
Saluti!
1 Mi Piace
system
(system)
Chiuso
1 Giugno 2023, 8:49am
5
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.