Impossibile sostituire topic-list-item.raw.hbs / topic-list-item.hbr su mobile

Ciao a tutti,

sto creando un tema per personalizzare diversi aspetti del Discourse predefinito. Con questo obiettivo, una delle cose che devo personalizzare è topic-list-item, che sembra essere abbastanza semplice: aggiungo un file al percorso javascripts/discourse/templates/components/topic-list-item.hbs nel mio tema e posso inserire il mio codice lì. Tuttavia, è qui che iniziano a sorgere le domande.

Esiste un metodo nel componente per quel template chiamato renderTopicListItem, che è quello che imposta una proprietà topicListItemContents, la quale viene renderizzata di default. Controllate:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/templates/components/topic-list-item.hbs

La prima domanda è PERCHÉ? Perché dobbiamo farlo? Perché non semplicemente avere il codice Handlebars come al solito?

Per non interferire troppo con il codice principale, ho deciso di lasciare topic-list-item così com’è e sostituire topic-list-item.raw.hbs nel mio tema, e questo funziona senza problemi.

Tuttavia, mi aspettavo che aggiungendo un file come javascripts/discourse/templates/mobile/list/topic-list-item.raw.hbs nel mio tema, la visualizzazione mobile venisse sostituita, ma non è così.

Il metodo findRawTemplate continua a restituire il template mobile predefinito di Discourse, che contiene:

Anche effettuando modifiche manuali all’interno del mio progetto Discourse locale, non riesco a far aggiornare la versione mobile con le modifiche.

Spero che la spiegazione abbia senso e che qualcuno abbia conoscenze in merito; sembra davvero rotto al momento e forse vorremmo risolverlo SE è davvero rotto (posso farlo se capisco un po’ meglio cosa sta succedendo).

Nel frattempo continuerò a cercare una risposta da solo e aggiornerò con eventuali novità. Di seguito un piccolo gif di ciò che ho nel mio ambiente locale.

http://g.recordit.co/AtOJlltJ8o

AGGIORNAMENTO: Ho anche aggiornato raw in .hbr poiché un recente commit ha modificato i file, ma non riesco ancora a farlo funzionare.

L’ho appena testato e riscontro lo stesso problema… Non riesco affatto a sovrascrivere quel template. Sembra che sia successo nell’ultimo giorno o due. Potrebbe essere correlato al passaggio a hbr @markvanlan?

Quando ho creato questo argomento, la mia istanza locale di Discourse risaliva al 17 gennaio, se non ricordo male. Detto questo, avevo riscontrato il problema con quella versione e, dopo l’aggiornamento con le ultime modifiche e il rinominare da raw.hbs a hbr, ho ancora lo stesso problema.

Per ora ho personalizzato il file da javascripts/discourse/templates/components/topic-list-item.hbs, ma idealmente i template raw dovrebbero comportarsi come gli altri template (in termini di sostituzione e personalizzazione).

@awesomerobot se controlli il commit subito prima della modifica hbr, funziona?

Ah, sì, grazie per la data @duranmla… è un problema un po’ vecchio @markvanlan, lo sto rintracciando ora

FYI non ho visto questo problema influenzare Topic List Previews (legacy), che sovrascrive il raw dell’elemento della lista dei topic mobile. https://github.com/paviliondev/discourse-topic-previews/tree/master/assets/javascripts/discourse/templates/mobile/list L’ho testato solo su tests-passed.

Ok, quindi stavo avendo un po’ di difficoltà a individuarlo perché, dopo aver fatto il revert, ho dovuto rimuovere e poi riapplicare la personalizzazione per riprodurre il problema.

Penso che sia effettivamente il commit hbr di @markvanlan (DEV: Use .hbr for raw template file extension (#8883) · discourse/discourse@3e89774 · GitHub), scusa per l’esitazione.

Per testare, ho aggiunto questo alla sezione del tema corrente tramite la sezione di personalizzazione nel pannello di amministrazione:

<script type='text/x-handlebars' data-template-name='mobile/list/topic-list-item.raw'>
  test
</script>

Prima di questo commit funziona perfettamente; una volta applicato quel commit e poi riapplicata la personalizzazione, il template viene ignorato.

Forse ero confuso, pensavo fosse più vecchio di così.
In ogni caso terrò d’occhio questa discussione. Grazie per la rapida risposta e per aver aiutato a risolvere il problema @awesomerobot

C’è una correzione ora se aggiorni all’ultima versione

Mark sta lavorando ulteriormente per capire perché i test risultavano passati nonostante questo fosse rotto.

Tuttavia, ho aggiornato e l’errore persiste quando si lavora con la struttura del progetto del tema (che probabilmente è la più utilizzata per progetti di medie e grandi dimensioni). Lascio qui il video in cui mostro l’errore: https://www.loom.com/share/d3f437347c8f4d5aa4dd1c7ce08e1bf9

PS: Lascerò il video attivo per un po’, nel caso possa essere utile per qualcuno per comprendere il problema e riprodurlo. Dovrò eliminarlo dopo alcune settimane :grimacing:

NOTA: Ho anche provato a rinominare di nuovo in topic-list-item.raw.hbs invece di topic-list-item.hbr, ma il problema è lo stesso.

Funziona per me con la directory javascripts (con l’estensione vecchia o nuova).

Una cosa che ho riscontrato ieri sera è che potrebbe essere necessario modificare il file e salvarlo, oppure rimuovere il file e aggiungerlo di nuovo (i template vengono compilati al salvataggio, quindi è possibile che tu sia temporaneamente bloccato in uno stato con il bug).