api.onPageChange non funziona con lo scroll infinito

Sto cercando di modificare i link dei tag usando il codice sottostante e sembra funzionare quando si aggiorna la pagina o si passa a una nuova pagina, ma non funziona quando si scorre verso il basso nella pagina dove lo scroll infinito carica nuovi elementi:

<script type="text/discourse-plugin" version="0.8">
	api.onPageChange(() =>{
		var tags = document.getElementsByClassName("discourse-tag");
		for (i = 0; i < tags.length; i++) {
			var tag = tags[i];
			var url = tag.href;
			var newUrl = "https://site.com" + url;
			tag.href = newUrl;
		}
	});
</script>

Devo usare qualcosa di diverso o in aggiunta a api.onPageChange?

1 Mi Piace

Sì, non funzionerà. Si attiverà solo al cambio di rotta. Devi considerare di sovrascrivere il codice che rende effettivamente quei tag direttamente, piuttosto che usare la selezione DOM.

9 Mi Piace

Grazie, Robert! Speravo che qualcosa di semplice fosse sufficiente! :see_no_evil:

È da un po’ che non rileggo la guida sui plugin, ma per quanto ricordo dovrebbe essere più o meno così?

  • rails g plugin NOME
  • individua il file che vuoi modificare
  • copialo nella stessa directory del tuo plugin
  • apporta le tue modifiche

Tuttavia, questo non funziona per me.

Modificando direttamente questo file (alla riga 29): discourse/app/assets/javascripts/discourse/app/lib/render-tag.js at bbe5d8d5cf1220165842985c0e2cd4c454d501cd · discourse/discourse · GitHub ottengo l’effetto desiderato, ma quando duplico il file nella seguente posizione non ha alcun impatto plugins/my-plugin/app/assets/javascripts/discourse/app/lib/render-tag.js.

Hai qualche idea su cosa stia sbagliando? Forse qualcosa è cambiato da quando ho letto le guide? (Per qualche motivo pensavo che fosse semplice come sovrascrivere i file per modificare piccole cose come questa).

1 Mi Piace

Non hai bisogno di un plugin, questo è lato client. Usa un componente tema.

7 Mi Piace

Grazie! Per la cronaca, ho iniziato a personalizzare Tag Icons ieri sera e sono riuscito a farlo funzionare! :smiley:

Per pura curiosità, però, il metodo di sovrascrittura dei file del plugin che ho descritto avrebbe dovuto funzionare anch’esso? (In tal caso, hai qualche idea su cosa stessi sbagliando?)

1 Mi Piace