DiscoTOC - sommario automatico

Puoi pubblicare un link al tuo sito? Sospetto che il problema sia dovuto allo stile del tuo tema.

2 Mi Piace

Ecco il mio link:

https://whois.nhachinhchu.org/t/bang-gia-xem-data-nha-chinh-chu/63389

1 Mi Piace

Mi scusi per l’interruzione della discussione in corso. Ho trovato qualcosa che non sono sicuro se sia già stato segnalato.

Se il post ha un link nell’intestazione, anche il numero di clic viene mostrato nella voce del TOC:

2 Mi Piace

Da questo aggiornamento, vedo un errore nelle pagine di discourse-docs che hanno un indice. Ad esempio, in questa pagina su Meta, l’indice non viene visualizzato e vedo un errore negli strumenti per sviluppatori del mio browser:

Anche sul mio sito, vedo un banner nella parte superiore della pagina che dice “I post potrebbero non essere visualizzati correttamente perché uno dei decoratori di contenuto dei post sul tuo sito ha generato un errore. Controlla gli strumenti per sviluppatori del browser per maggiori informazioni.”

3 Mi Piace

Grazie @simonk, ho appena (2 minuti fa!) unito una correzione per quel problema. Aggiorna il componente sul tuo sito e fammi sapere se il banner sul tuo sito persiste.

3 Mi Piace

Grazie per la risposta! L’errore è sparito, ma l’indice dei contenuti (ToC) non viene visualizzato nella versione discourse-docs della pagina. Prima dell’aggiornamento di ieri, l’indice dei contenuti veniva visualizzato sia nella versione discourse-docs che nella versione “normale”.

(Questo non è urgente per me: ho distribuito l’aggiornamento su un sito di staging, non in produzione, quindi non importa che non funzioni correttamente)

Modifica: sto eseguendo la versione 2.8.0.beta11 (42c71789f9), se ciò fa qualche differenza.

2 Mi Piace

Sì, capisco cosa intendi. Sfortunatamente, le mie modifiche al TOC utilizzano un outlet nella vista dell’argomento che manca nella documentazione. Ci lavorerò.

3 Mi Piace

Ho apportato alcune modifiche aggiuntive al componente oggi, dovrebbero risolvere i problemi sollevati da @mentalstring e @simonk. Nel tuo caso, Simon, è necessaria una ricostruzione completa perché devi anche aggiornare il plugin della documentazione.

@huynhthai824 è molto probabile che il tuo problema venga risolto una volta aggiornato il componente.

4 Mi Piace

Grazie mille, sono così felice, il mio problema è risolto.
Grazie ancora..

1 Mi Piace

Dopo una ricostruzione completa, posso confermare che l’indice appare correttamente sulla pagina discourse-docs - grazie mille :+1:
Vedo che ora hai anche limitato l’indice a 2 livelli. Dato lo spazio orizzontale, penso che sia ragionevole, ma significa che le intestazioni di terzo livello vengono visualizzate nell’indice allo stesso livello di annidamento dei loro genitori.
cioè al momento, questo testo:

# Prima intestazione
## Prima sottointestazione
### Figlio della prima sottointestazione
### Figlio della prima sottointestazione
## Seconda sottointestazione
### Figlio della seconda sottointestazione
### Figlio della seconda sottointestazione
# Seconda intestazione

Produce questo indice:

Mi chiedo se non sarebbe meglio escludere del tutto dall’indice le intestazioni di terzo livello e inferiori?
Inoltre, la struttura DOM non sembra del tutto corretta: ogni elemento di secondo livello è un <ul> con un singolo <li> al suo interno:

4 Mi Piace

Ottima osservazione. Non sono sicuro di quanto spesso usiamo 3+ livelli, ma è possibile reintrodurli, non dovrebbe essere troppo complicato.

Ottima osservazione, di nuovo. Questo è stato un piccolo errore, dovrebbe essere risolto una volta che questa PR sarà unita.

3 Mi Piace

Se sei dell’umore giusto per le richieste di funzionalità, forse la profondità massima potrebbe essere controllata tramite un’impostazione… :wink:

5 Mi Piace

Nella mia esperienza, la funzionalità ToC funziona solo al primo post ma non ai post successivi. È corretto? Se sì, la mia osservazione potrebbe essere trattata come una richiesta di funzionalità? A proposito, la ToC, anche al primo post, è un’ottima aggiunta. R

Ciao a tutti, ho un problema dall’ultimo aggiornamento di questo ottimo componente del tema, ma solo su mobile. Quando clicco sul pulsante della tabella dei contenuti, lo slider con la ToC completa non si apre.

Se uso una finestra molto piccola su desktop, questo pulsante e lo slider funzionano benissimo. Quindi potrebbe essere un problema solo su Android.

Ecco il log sul mio forum aggiornato (Discourse e TOC):

Message

Uncaught TypeError: Cannot read properties of null (reading 'classList')
Url: https://iunctis.fr/theme-javascripts/671f772e071bd55050592ff8541b659afe421259.js?__ws=iunctis.fr
Line: 36
Column: 49
Window Location: https://iunctis.fr/t/le-mensuel-01-decembre-2021/9591

Backtrace

TypeError: Cannot read properties of null (reading 'classList')
    at n.showTOCOverlay (https://iunctis.fr/theme-javascripts/671f772e071bd55050592ff8541b659afe421259.js?__ws=iunctis.fr:36:49)
    at e.n._join (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:412333)
    at e.n.join (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:409358)
    at h (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:273784)
    at https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:65110
    at a (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:260923)
    at https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:65054
    at n._triggerAction (https://iunctis.fr/assets/application-945e3f0cb654a8c23b30e86f5e955be5599a8330d68ce75e97b8228ad45ff6fd.js:1:1254524)
    at n.click (https://iunctis.fr/assets/application-945e3f0cb654a8c23b30e86f5e955be5599a8330d68ce75e97b8228ad45ff6fd.js:1:1254160)

Env

HTTP HOSTS: iunctis.fr

Se uso un user agent Android nella mia versione desktop di Firefox, ottengo questo errore se clicco sul pulsante in questo forum:

Uncaught TypeError: document.querySelector(...) is null
    showTOCOverlay 4916e6ed2a984e00537fe797b799637f1a801ffe.js:374
    _join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4033
    join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3999
    p _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2870
    An _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:1147
    o _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2785
    An _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:1147
    _triggerAction _application-2646ad3bbed41e42bb77806dc41fbea2.js:489
    click _application-2646ad3bbed41e42bb77806dc41fbea2.js:488
    trigger _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2560
    n _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2422
    _run _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4034
    _join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4033
    join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3999
    p _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2870
    handleEvent _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2574
    o _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2785
    handleEvent _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2574
    handleEvent _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2499
    setupHandler _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2524
    dispatch _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:347
    handle _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:342
    add _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:342
    Oe _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:339
    each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:123
    each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:116
    Oe _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:339
    on _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:358
    initialize _application-2646ad3bbed41e42bb77806dc41fbea2.js:3354
    initialize _application-2646ad3bbed41e42bb77806dc41fbea2.js:62
    runInstanceInitializers _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2730
    each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4074
    walk _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4064
    each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4056
    topsort _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4056
    _runInitializer _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2733
    runInstanceInitializers _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2730
    _bootSync _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2604
    didBecomeReady _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2623
    invoke _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3963
    flush _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3955
    flush _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3969
    _end _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4032
    end _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3988
    _run _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4034
    _join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4033
    join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3999
    p _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2870
    bind _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2873
    u _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:272
    c _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:273
    setTimeout handler*a/\u003c _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:274
    l _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:265
    fireWith _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:266
    fire _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:266
    l _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:265
    fireWith _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:266
    ready _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:283
    z _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:283
    EventListener.handleEvent* _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:283
    \u003canonymous\u003e _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:109
    \u003canonymous\u003e _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:109
4916e6ed2a984e00537fe797b799637f1a801ffe.js:374:18

Sul mio telefono, ho Chrome versione 97.0.4692, se può essere utile.

Sono l’unico ad avere questo problema?

2 Mi Piace

Questa è una regressione recente dovuta a una modifica nel core, ho una correzione pronta in FIX: Restore outlet in mobile views by pmusaraj · Pull Request #15683 · discourse/discourse · GitHub, una volta che sarà unita, potrai ricostruire il tuo sito e il problema dovrebbe essere risolto. Mi dispiace per questo.

La scorsa settimana, ho anche ripristinato il terzo livello di indentazione per le intestazioni nel componente, come menzionato da Simon sopra.

Sto esitando ad aggiungere un’impostazione qui, la stragrande maggioranza dei casi d’uso non ne ha bisogno. E, il componente ha anche classi per ogni livello, quindi se vuoi nascondere il 4° e il 5° livello, puoi farlo con questo css:

li.d-toc-h4, li.d-toc-h5 {
  display:none;
}
7 Mi Piace

È unito e funziona bene, grazie!

5 Mi Piace

Ho notato che il <div> in cima a un argomento ha introdotto un margine extra. Ad esempio:

Ho aggiunto questo al mio tema, che sembra risolvere il problema:

// Gli elementi ToC all'inizio del post introducono spazio indesiderato.
// Discourse imposta il margine superiore del primo figlio nel post a zero,
// ma questo non funziona quando il ToC è il primo figlio.
// Invece, imposteremo il margine superiore dell'elemento successivo al ToC a zero.
div[data-theme-toc="true"] + * {
    margin-top: 0px;
}

Forse qualcosa del genere deve essere aggiunto al componente?

7 Mi Piace

Ottima osservazione, ho aggiunto quella regola CSS in questa PR: UX: Keep core's top margin for first item in OP by pmusaraj · Pull Request #30 · discourse/DiscoTOC · GitHub

4 Mi Piace

Ho affrontato questo problema in passato spostando il codice di incorporamento in fondo al post. Sembra un po’ una soluzione di ripiego, ma funziona.

1 Mi Piace

Ho post che hanno DIV aggiuntivi nei loro corpi. Ad esempio, On Storytelling - Workbench - Podcaster Community

Il DIV che attiva la generazione del TOC è all’interno di un DIV… e il TOC lo nota. Ma altri titoli, all’interno di DIV, non sembrano essere notati dal TOC.

…non è lo screenshot migliore. Quello è un H2 in un DIV arbitrario/solo per lo stile che non appare nel TOC.

…non mostrato è il <div che attiva il TOC, che è all’interno del DIV con la coppia attributo/valore folle…


aggiornato ore dopo per aggiungere: Forse solo “:scope h1,” ecc. piuttosto che richiedere che i titoli siano figli immediati dello scope?

…inoltre, questo è stato menzionato a marzo '21, DiscoTOC - automatic table of contents - #255

3 Mi Piace