Grazie mille @manuel – ho aggiornato questo componente con il tuo codice (e aggiunto altri frammenti di codice) per abilitare alcune funzionalità aggiuntive:
Le sottocategorie sono ora supportate nel Breadcrumb
Il Breadcrumb completo ora appare su tutte le pagine dell’elenco Categorie e Sottocategorie oltre alle pagine Argomento
Ora c’è un’impostazione per abilitare o disabilitare su mobile
C’è solo un dettaglio che forse sai come risolvere.
Il pulsante indietro scompare quando scorri verso il basso (vedi video allegato)… è possibile fissare/far galleggiare il pulsante indietro in cima allo schermo in modo che rimanga visibile anche durante lo scorrimento?
Contesto: la community è incorporata (webview) nella nostra app mobile.
No, non sono a conoscenza di alcun TC esistente che sia (o includa) un pulsante Indietro appropriato. Potrebbe esserci qualcosa di esistente che ne includa uno.
Tuttavia, riconosco l’utilità di avere un pulsante Indietro nella navigazione del sito, quindi elaborerò un TC separato che lo fornisca.
Forse potresti verificare se esiste un tema o un componente tematico esistente che lo includa per caso. Trovarlo potrebbe accelerare il mio processo.
Ho notato che non c’è modo di decidere dove vanno i breadcrumb, il che sarebbe fantastico. Ad esempio, sto usando i Category Banners e vorrei che i breadcrumb fossero sopra di essi.
Si perde un po’ quando è sotto.
C’è qualche possibilità di cambiare questo?
Grazie
Ho appena notato qualcosa che potrebbe essere corretto (o almeno avere l’opzione per attivarla e disattivarla). Non penso che l’ultima / debba esserci.
Quindi sarebbe solo Home / General Discussion invece di Home / General Discussion /
MODIFICA:
Ho appena usato il CSS per farlo, ma credo che potrebbe essere il default. Nel caso qualcuno lo volesse:
Questa è una piccola modifica, ma a me sembra migliore. Aumenta il margin-bottom a 1rem per dargli più spazio per “respirare”, ma lo centra anche quando c’è un banner (se dobbiamo attenerci a quella posizione sulla pagina). Guarda la mia immagine precedente (il default 0.5rem) rispetto all’uso di 1rem:
Risultato finale dopo tutte le modifiche CSS che ho apportato:
CSS:
/* breadcrumbs - rimuove lo sfondo e aumenta il margin-bottom */
.breadcrumbs {
background-color: transparent !important;
margin-bottom: 1rem;
}
/* breadcrumbs - nasconde la freccia indietro dal link Home */
.breadcrumbs__title .d-icon {
display: none;
}
/* breadcrumbs - rimuove il separatore (contenuto ::after) dall'ultimo elemento breadcrumb */
.breadcrumbs li:last-child::after {
content: none;
}
Ciao, ho un avviso nel mio forum perché le modifiche imminenti al core di Discourse:
[Avviso Admin] Uno dei tuoi temi o plugin deve essere aggiornato per supportare le modifiche imminenti al core di Discourse. (id:discourse.script-tag-discourse-plugin) Problema identificato: “Breadcrumb Links”.
Sto usando Discourse cloud, posso risolvere questo problema o devo aspettare l’aggiornamento del plugin?
@manuel Su GitHub ho notato che sei uno dei collaboratori di questo componente, quindi spero vada bene menzionarti qui?
Sono sicuro che altre persone stanno vedendo lo stesso messaggio:
[Admin Notice] Il tema 'Breadcrumb Links' contiene codice che necessita di aggiornamento. (id:discourse.script-tag-discourse-plugin) (ulteriori informazioni)
E Ulteriori informazioni reindirizza a:
Ci sono possibilità che il componente venga aggiornato?
Grazie!
Grazie per aver condiviso questo! Funziona senza il messaggio di avviso.
Ho un altro problema che ho menzionato qui:
Per questo problema, ho chiesto a ChatGPT e mi ha detto (dato che non sono uno sviluppatore):
Mostra messaggio di ChatGPT
Il problema deriva probabilmente da come stai estraendo il topicId dall’URL:
const topicId = url.split('/')[2];
Se il tuo URL contiene pattern più complessi (come titoli con spazi, caratteri speciali o slug non standard), questo semplice split non otterrà in modo affidabile l’ID corretto del topic.
Perché questo causa problemi:
URL come /t/3ple-2015-2019-title/12345 hanno l’ID numerico del topic alla fine, ma il tuo codice presuppone che l’ID del topic sia sempre il terzo segmento.
Se la struttura del tuo URL varia, a volte stai prendendo uno slug o parte del titolo invece dell’ID.
Questo interrompe la tua richiesta AJAX (/t/${topicId}.json) perché potresti inviare un ID di topic o uno slug non valido, restituendo informazioni sulla categoria errate o predefinite (come “General”).
Come risolvere:
Utilizza un modo più affidabile per estrarre l’ID del topic dall’URL:
Estrai l’ID del topic dall’ultimo segmento numerico dell’URL.
Gli URL dei topic di Discourse spesso assomigliano a /t/{slug}/{id}, ad esempio:
/t/3ple-2015-2019-title/12345
Qui, 12345 è l’ID del topic.
Sostituisci questo:
const topicId = url.split('/')[2];
Con questo:
const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1]; // ultimo segmento, previsto come ID numerico
Per essere più sicuro, valida che topicId sia un numero:
if (!/^\\d+$/.test(topicId)) {
console.error("ID del topic non valido estratto dall'URL:", topicId);
return; // interrompe l'esecuzione
}
Riepilogo: aggiorna il tuo snippet di codice in updateBreadcrumbs in questo modo:
if (url.includes('/t/')) {
const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1];
if (!/^\\d+$/.test(topicId)) {
console.error("ID del topic non valido estratto dall'URL:", topicId);
return;
}
// Poi continua le tue chiamate AJAX con topicId
}
In questo modo otterrai sempre l’ID numerico del topic indipendentemente da titoli complessi o con spazi nell’URL, risolvendo la ricerca della categoria e del percorso del breadcrumb.
Saresti in grado di risolvere questo?
Grazie in anticipo