Seguendo la documentazione qui Developing Discourse Themes & Theme Components
L’esempio che utilizza il log funziona bene, ma quando aggiorno il widget a
{{mount-widget widget="hamburger-categories"}}
Non esce nulla… Ho esaminato l’elenco su https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/widgets . e alcuni widget vengono visualizzati, altri no?
Alla fine voglio usare solo l’elenco delle categorie come pulsanti all’interno di un’intestazione personalizzata, come questa…
merefield
(Robert)
20 Febbraio 2023, 2:13pm
2
Hai attivato la nuova barra laterale? Nasconderà il vecchio menu hamburger.
Conferma che le impostazioni del tuo sito siano le seguenti:
1 Mi Piace
L’avevo impostato su “Menu a discesa intestazione”, l’ho cambiato in “Legacy”, ma lo stesso problema
1 Mi Piace
Il menu hamburger viene visualizzato, ma mi servono solo le categorie
{{mount-widget widget="hamburger-menu"}}
merefield
(Robert)
20 Febbraio 2023, 2:27pm
5
Mi scuso, sono stato tratto in inganno dal nome del widget. Quale outlet di plugin stai usando?
come nella documentazione
<script type="text/x-handlebars" data-template-name="/connectors/below-footer/fancy-footer">
<div class="footer">
<div class="wrap">
<p>prima di montare un widget</p>
{{mount-widget widget="home-logo"}}
{{mount-widget widget="hamburger-categories"}}
<p>dopo aver montato un widget</p>
</div>
</div>
</script>
merefield
(Robert)
20 Febbraio 2023, 3:01pm
8
Se guardi la guida puoi vedere che l’uscita del plugin accetta un attributo showFooter. Probabilmente è falso. Il che significa che né il piè di pagina né il widget collegato verranno visualizzati.
In ogni caso, perché un’uscita per il piè di pagina per un artefatto dell’intestazione?
Usa il componente tema delle uscite del plugin per scegliere una posizione migliore, a mio parere.
Mostra… mostra widget=“home-logo”
e mostra anche widget=“hamburger-menu”
ma non mostra widget=“hamburger-categories”
Sto solo testando, al momento non importa dove si trovi.
1 Mi Piace
merefield
(Robert)
20 Febbraio 2023, 3:13pm
10
Ci sono errori nella console?
Cosa mostra l’ispettore?
Posso vedere delle categorie qui, quindi esistono..
merefield
(Robert)
20 Febbraio 2023, 3:19pm
13
La mia ipotesi è che questo sia il problema:
if (!siteSettings.allow_uncategorized_topics) {
categories = categories.filter(
(c) => c.id !== site.uncategorized_category_id
);
}
const moreCount = categories.length - maxCategoriesToDisplay;
categories = categories.slice(0, maxCategoriesToDisplay);
return this.attach("hamburger-categories", { categories, moreCount });
},
footerLinks(prioritizeFaq, faqUrl) {
const { attrs, capabilities, settings, site, siteSettings, state } = this;
const links = [];
if (settings.showAbout) {
links.push({
route: "about",
className: "about-link",
Non viene passata alcuna attributo categories tramite l’outlet del footer.
ma quando uso widget=“hamburger-menu” nell’outlet del footer, mostra le categorie
Ho provato altri outlet in giro per la pagina e il problema persiste
merefield
(Robert)
20 Febbraio 2023, 3:30pm
15
Se avessi pubblicato quel messaggio di errore inizialmente, avresti risparmiato molto tempo.
Guarda sempre la console.
Potrebbe essere necessario collegarlo con JavaScript una volta recuperato l’elenco delle categorie nello stesso modo in cui fa il menu Hamburger.
1 Mi Piace
sì, decisamente, e ancora più tempo se la documentazione non dicesse “Ora, montare un widget è molto semplice, tutto ciò che devi sapere è il nome del widget. Tutto qui”
1 Mi Piace
merefield
(Robert)
20 Febbraio 2023, 4:09pm
17
La mia sensazione è che quella guida non sia aggiornata?
Sai dove posso trovare la guida più aggiornata? Sto volando qui intorno cercando risposte, ma finisco su post vecchi di 4 anni. Esiste un documento guida effettivo da qualche parte?
Sì, capisco come ciò possa essere fuorviante… tecnicamente monta il widget, ma ciò non significa che i dati richiesti dal widget siano automaticamente disponibili.
Puoi provare a passare le categorie al widget in questo modo:
{{mount-widget widget="hamburger-categories" args=(hash categories=this.site.categories)}}
1 Mi Piace
Grazie mille.. sì, ha senso e ora viene visualizzato
Dato che stiamo parlando di logging nella console
Seguendo la documentazione Developing Discourse Themes & Theme Components
Quando provo
<script type="text/discourse-plugin" version="0.8">
console.log(Discourse)
</script>
Non sono sicuro di ottenere un “oggetto globale nella console”, ottengo una classe
E se provo qualcosa come
<script type="text/discourse-plugin" version="0.8">
const settings = Discourse.SiteSettings;
console.log(settings)
</script>
Ottengo questo errore
THEME 6 'BCN Theme - watched locally'] Deprecation notice: use injected siteSettings instead of Discourse.SiteSettings
1 Mi Piace