Riepilogo
Gli annunci interni (House ads) renderizzati nel posizionamento topic-list-between non sono più centrati sulla larghezza dell’elenco degli argomenti. Invece, appaiono allineati a sinistra (confinati nell’area della prima colonna). Questo sembra essere un regresso causato dal rendere il componente house-ad senza tag (tagless), il che interrompe la semantica della tabella.
Passaggi per Riprodurre
- Vai su Admin → Plugins → Ads
- Crea un House Ad
- Abilitalo per il posizionamento:
topic-list-between - Visita la homepage (o qualsiasi elenco di argomenti che utilizzi il layout standard a tabella)
- Osserva l’allineamento dell’annuncio interno
Comportamento Atteso
L’annuncio interno dovrebbe essere renderizzato centrato sull’intera larghezza dell’elenco degli argomenti (coprendo tutte le colonne), come avveniva in precedenza.
Comportamento Attuale
L’annuncio interno è allineato a sinistra e occupa solo la porzione sinistra della tabella (all’incirca lo spazio della colonna del “titolo dell’argomento”), anziché estendersi su tutta la riga.
Analisi Tecnica
Questo sembra essere causato da un markup di tabella non valido prodotto dal componente house-ad.
File:
plugins/discourse-adplugin/assets/javascripts/discourse/components/house-ad.gjs
Il componente è senza tag:
@tagName("")
export default class HouseAd extends AdComponent {
Ma renderizza un div con un attributo colspan:
<div
colspan={{this.colspanAttribute}}
class={{concatClass "house-creative" this.adUnitClass}}
...attributes
>
Perché questo si rompe
colspanfunziona solo su<td>/<th>, non su<div>.- Nella tabella dell’elenco degli argomenti, questo si traduce in un
<div>direttamente all’interno di un<tr>, che è HTML non valido e fa sì che il browser lo disponga in modo errato (tipicamente collassandolo nella regione della prima colonna). - La logica
colspanAttribute()controllathis.tagName === "td"(o equivalente), ma poiché il componente è senza tag, non diventa mai"td", quindi colspan non viene effettivamente mai applicato.
Probabile Fonte del Regresso
Questo sembra essere stato introdotto dall’applicazione delle regole di linting/refactoring per i “componenti senza tag” (la modifica che ha convertito i componenti in tagless), che ha inavvertitamente interrotto i componenti che devono essere renderizzati come vere celle di tabella in alcuni connettori/posizionamenti.
Ambiente
- Versione di Discourse: latest (tests-passed)
- Plugin Ad:
discourse-adpluginintegrato - Browser testati: Chrome + Firefox (sembra indipendente dal browser)