La parola chiave subst: (abbreviazione della parola inglese substitution) o la sua equivalente italiana sost: (abbreviazione di sostituzione) possono essere usate come prefisso nel nome di un template, o altra pagina inclusa, per modificare il modo in cui il software riproduce il template.

Normalmente, il contenuto di un template incluso in una pagina viene riprodotto secondo lo stato attuale del template. Ciò significa che ogni modifica al contenuto del template richiamato nelle diverse pagine modifica anche queste ultime, perché il contenuto richiamato viene aggiornato alla versione corrente del template. In altre parole, una modifica al template originario viene riprodotta in tutte le pagine che contengono il template stesso.

L'inserimento di subst: nella chiamata del template comanda al software di sostituire il template con il risultato della elaborazione dello stesso, effettuata al momento del salvataggio della pagina. In altre parole, quando il template viene inserito con il subst: la pagina salvata non conterrà il riferimento al template ma il suo risultato come se fosse stato trascritto, quindi qualsiasi modifica al template originario non riguarderà più queste pagine, perché esse non includono il template.

La sostituzione può essere applicata anche a variabili e funzioni, per inserire direttamente il valore delle espressioni.

Utilizzo

modifica

Si può substare (secondo una terminologia gergale) un template aggiungendo subst: all'inizio del tag del template. Ad esempio: invece di inserire il template {{NomeTemplate}} nel modo usuale, esso viene inserito come {{subst:NomeTemplate}}. La sostituzione di un template andrebbe sempre indicata nel campo oggetto della modifica.

Se si vuole utilizzare una versione modificata del messaggio standard, occorre salvare la versione standard e poi modificarla perché nell'anteprima il codice non viene rimpiazzato nel riquadro di edit. Nell'oggetto è possibile indicare che non si è fatto un errore ma si sta ancora lavorando sulla pagina.

Se si specificano dei parametri previsti dal template, come in {{subst:t2|R|s}}, i valori inseriti saranno presenti anche nel testo sostituito; se invece sono presenti dei parametri non previsti dal template, viene accettata la sintassi del comando subst, ma questi parametri vengono ignorati, ovvero i loro valori non vengono inclusi nel testo sostituito.

Vantaggi della sostituzione

modifica
  • I template sono sovente modificati o cancellati. Al momento di inserire un template nella voce, valuta se è opportuno che il suo contenuto si aggiorni al variare del codice del template; se ritieni che non lo sia, inserisci il template con il subst:
    Un esempio tipico è quello del template {{benvenuto}}: la pagina di discussione di un utente deve mostrare il messaggio di benvenuto che ha effettivamente ricevuto e non la versione corrente del messaggio di benvenuto.
  • Se intendi editare un template in una pagina, ma non vuoi modificare anche il risultato del template in tutte le altre pagine che lo usano e non vuoi neppure creare un nuovo template, puoi substare il template e in seguito effettuare le modifiche con un ulteriore edit.
    Per esempio: un template potrebbe essere utilizzato per tutti gli stati degli Stati Uniti e anche per il District of Columbia; in una voce sul District of Columbia potrebbe essere necessario adoperare espressioni differenti: ciò può essere ottenuto substando il template nella voce e poi modificando le parti che lo richiedono.
  • La sostituzione può anche essere adoperata per evitare i danni derivanti da vandalismi sulle pagine del template.
  • L'osservazione dei risultati generati da un template substato può favorire un maggiore apprendimento delle espressioni del wikicode, le quali rimangono invece non visibili se il template non è substato.
  • Alcuni template sono pensati appositamente per essere utilizzati soltanto con subst. Sono segnalati con {{template non incluso}} e raccolti in Categoria:Template non inclusi.

Svantaggi della sostituzione

modifica
  • Dopo che un template è stato substato, il risultato non è più collegato al template e, quindi, diviene difficile reperire tutte le pagine che lo contenevano. Questo problema può essere risolto con l'aggiunta, all'interno del suo stesso codice, di un collegamento al template, oppure attraverso le categorie.
  • Dopo che un template è stato substato, il contenuto della pagina non riprodurrà più gli aggiornamenti del template.
    In particolare, non devono essere substati tutti i template il cui scopo è quello di creare nelle voci elementi uniformi e aggiornabili, come nel caso dei template sinottici, di navigazione, ecc.
  • La sostituzione aumenta la dimensione delle pagine.
  • Un template substato può aggiungere alla pagina una gran quantità di wikicode e di codice HTML, che potrà rendere difficile la modifica della pagina per gli utenti che non conoscono questi codici.
  • La sostituzione riduce la probabilità per i nuovi utenti di apprendere l'uso dei template.
  • Se il template deve essere usato solo temporaneamente, è in genere preferibile evitare di substarlo perché è alquanto complesso rimuovere o editare il risultato di template substati.
  • Un template vandalizzato e substato genera danni difficili da riparare, perché la correzione del template non corregge anche il testo substato nelle pagine.

Sostituzione a catena

modifica

Normalmente, eventuali variabili, funzioni e altri template contenuti all'interno del template substato sono copiati così come appaiono nel wikitesto. Se ad esempio il template Ciccio contiene un {{CURRENTYEAR}}, effettuando {{subst:Ciccio}} otterremo un testuale "{{CURRENTYEAR}}" nella pagina di destinazione.

Se si desidera che gli elementi interni del template siano a loro volta substati assieme al template, è necessario che siano anch'essi preceduti da subst: nel codice del template. Se il template Ciccio contiene un {{subst:CURRENTYEAR}}, effettuando {{subst:Ciccio}} otterremo un testuale "2024" nella pagina di destinazione. Naturalmente quando si crea la pagina Template:Ciccio le parti substabili devono trovarsi tra <includeonly> altrimenti verranno già substate al momento della creazione!

Esiste inoltre il comando safesubst:, che funziona in modo analogo a subst:, ma assicura sia che la sostituzione a catena venga effettuata quando il template principale viene substato, sia che il template comunque funzioni quando viene semplicemente incluso. Se il template Ciccio contiene un {{safesubst:CURRENTYEAR}}, effettuando {{subst:Ciccio}} otterremo un testuale "2024" e includendo {{Ciccio}} vedremo regolarmente l'anno.

Limitazioni

modifica

Non è possibile utilizzare la sostituzione all'interno dei tag <ref>…</ref> e <gallery>…</gallery>[N 1]. Ad esempio, se si inserisce {{subst:Ciccio}} all'interno di una nota, dopo il salvataggio questo rimarrà tale e quale nel sorgente della voce e il template verrà incluso come se il comando subst: non fosse presente. Una soluzione parziale a questa limitazione è l'utilizzo di {{subst:#tag:ref per scrivere una nota: nell'esempio precedente, scrivendo {{subst:#tag:ref|Testo della nota {{subst:Ciccio}} Altro testo}}, il template Ciccio verrà substato correttamente.

  1. ^ Vedi T4700.

Altri progetti

modifica