Link dei Breadcrumb

Grazie mille @manuel – ho aggiornato questo componente con il tuo codice (e aggiunto altri frammenti di codice) per abilitare alcune funzionalità aggiuntive:

  1. Le sottocategorie sono ora supportate nel Breadcrumb
  2. Il Breadcrumb completo ora appare su tutte le pagine dell’elenco Categorie e Sottocategorie oltre alle pagine Argomento
  3. Ora c’è un’impostazione per abilitare o disabilitare su mobile
2 Mi Piace

Ciao! Questo componente è fantastico!

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.

2 Mi Piace

Grazie @cristo per l’ottimo suggerimento che ora è incluso come impostazione:

3 Mi Piace

Grazie @denvergeeks! Il pulsante ora è fisso.

Ma, come puoi vedere nel video allegato, il pulsante non mi riporta allo stesso punto nello scroll sulla schermata principale.

1 Mi Piace

Sì, perché è un pulsante Home, non un pulsante Indietro!

1 Mi Piace

Me ne sono accorto! Pensavo fosse un pulsante indietro a causa della freccia.

@denvergeeks grazie per aver chiarito! Conosci per caso un componente che offra un pulsante indietro?

1 Mi Piace

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.

2 Mi Piace

Fantastico! Farò delle ricerche e ti farò sapere i miei risultati.

Grazie!

2 Mi Piace

@denvergeeks Ho trovato un argomento che potrebbe esserti utile:

Non ho ancora trovato alcun tema o componente esistente che includa un pulsante indietro.

2 Mi Piace

Sfortunatamente, sto riscontrando lo stesso problema su un iPhone 16 Pro Max.

2 Mi Piace

Sì, posso confermare che è apparso dopo un aggiornamento. Sto riscontrando questo problema sul mio telefono Android.

2 Mi Piace

Grazie @Aaron_Walsh e @cristo per la segnalazione! Aggiornate ora e fatemi sapere i vostri risultati!

4 Mi Piace

Confermo il problema sul lato Android. È stato ora corretto e rimosso.

2 Mi Piace

Risolto sul mio iPhone!

2 Mi Piace

@denvergeeks Fantastico! Il pulsante indietro funziona su Android.

Grazie mille!

2 Mi Piace

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.

image

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:

/* Rimuove il separatore (contenuto ::after) dall'ultimo elemento breadcrumb */
.breadcrumbs li:last-child::after {
    content: none;
}

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:

image


Risultato finale dopo tutte le modifiche CSS che ho apportato:

image

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!

1 Mi Piace

Ho appena aperto una PR che risolve questo problema, spero che i collaboratori possano rivederla e unirla.

2 Mi Piace

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:

  1. 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 :raising_hands: