Cimitero:Aiuto:Manuale/Creazione template: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
Contenuto aggiunto Contenuto cancellato
Riga 216: Riga 216:


=== Classi ===
=== Classi ===
Le classi contengono delle impostazioni preformate, e talvolta delle funzionalità avanzate scritte in javascript. Per attivarle si utilizza il parametro {{tt|class="''nomeclasse1 nomeclasse2''"}}. La classe standard per i template è "expansion", che però al momento non è ancora attiva.<ref>Le classi disponibili su Nonciclopedia si trovano in [[Mediawiki:Common.css]] e in [[Mediawiki:Monobook.css]].</ref>
Le classi contengono delle impostazioni preformate, e talvolta delle funzionalità avanzate scritte in javascript. Per attivarle si utilizza il parametro {{tt|1=class="''nomeclasse1 nomeclasse2''"}}. La classe standard per i template è "expansion", che però al momento non è ancora attiva.<ref>Le classi disponibili su Nonciclopedia si trovano in [[Mediawiki:Common.css]] e in [[Mediawiki:Monobook.css]].</ref>


==== radius ====
==== radius ====

Versione delle 19:04, 7 mar 2011

   La stessa cosa ma di più: Aiuto:Template.


E così vorresti imparare a creare dei template? Tu? Con quella faccia?
Vabbe', oggi sono generoso e proverò ad abbassarmi al tuo livello spiegandoti le basi. Se sei un minimo meno pirla di quel che sembri, imparerai alla svelta. Ma d'altronde, se quelli che bazzicano 'sto sito fossero abbastanza svegli, non ci sarebbe bisogno di questa guida...

Prima di iniziare

Cosa è un template

Un template è una pagina creata per essere inclusa in molte altre pagine. Il suo contenuto compare in tutte le voci che lo evocano con il suo nome scritto tra doppie parentesi graffe {{}}[1].
Esempio pratico: consideriamo il Template:Paranormale. Se in una pagina scrivo:

{{Paranormale}}

il contenuto del t. comparirà su questa pagina, così:

ATTENZIONE
Questo utente possiede poteri paranormali.
Trattare con cautela.

Categorie di template

Grossolanamente abbiamo:

Cosa non è un template

Un riquadro non è un template.
Aspetta, forse non è chiaro, te lo ripeto.

Un riquadro non è un template

Sicuro di aver capito? No, non posso fidarmi, devo essere certo che ti entri in testa.

Un riquadro non è un template
Un riquadro non è un template
Un riquadro non è un template
Un riquadro non è un template
Un riquadro non è un template
Un riquadro non è un template
Un riquadro non è un template
Un riquadro non è un template
Un riquadro non è un template

Un riquadro non è un template

Mmm no, mi sa che non hai ancora capito. Meglio se ti faccio un esempio.

« {{Quote}} è un template, ma non è un riquadro »
Questo è un riquadro, ma non è un template. Non lo è perché il codice che lo genera si trova in questa stessa pagina, non in una pagina separata Template:Vattelapesca.

È anche vero che molti template sono effettivamente dei riquadri (infatti questa guida spiega anche come realizzare questi ultimi). Questo spiega la confusione che si è generata.

Template da NON creare

Riquadri che devono apparire su un solo articolo
In questo caso scrivi il codice del riquadro nella pagina stessa.
Riquadri per la propria pagina utente
come sopra.
Avvisi
Abbiamo già decine di template di avviso: se hai un'idea per uno nuovo, parlane prima con gli altri utenti per assicurarti che ce ne sia davvero bisogno. Nel 99,999% dei casi si può ricorrere ai template già esistenti (ad esempio {{Restauro}} ) oppure - meglio ancora - alle pagine di discussione. E comunque, , rispetto a chi piazza template a destra e a manca evitando di sporcarsi le manine.
Template per sfottere/minacciare i niubbi
Basta! Ce ne sono a trigliaia!
Doppioni di template già esistenti
Per ovvî motivi
Template che violano le Linee guida
Ad es. template autocelebrativi, o pieni di bestemmie, o collegati ad articoli che a loro volta violano le linee guida.

Esperimenti

Per i tuoi primi, ingenui, fallimentari tentativi, utilizza il template {{Prova}}. È tuo, fanne ciò che vuoi, modificalo totalmente, ma non includerlo negli articoli: inseriscilo solo nella sandbox di Nonci, o nella tua.

Codice dei template

Come già detto, il sistema integra il codice del template nelle pagine in cui è incluso. Questo può portare a degli inconvenienti: sovrapposizioni, sovraccarichi, bug ecc. Per questo è bene fare attenzione quando si scrive il codice di un template. Comunque non è difficile, in una pagina, lasciare degli spazi tra un template e l'altro con il tag <br />, o meglio ancora <br style="clear: both" />.

noinclude e includeonly

  • Il codice compreso tra <noinclude> e </noinclude> compare nella del template (es: Template:Lallallà) ma non in tutte quelle pagine che lo richiamano. Viene utilizzato generalmente per contenere una descrizione del t., una spiegazione del suo utilizzo e una categoria: quest'ultima è fondamentale e va sempre inserita, con il codice
    <noinclude>{{cat|Nome categoria}}</noinclude>
    
    • includeonly funziona esattamente al contrario: il codice compreso tra <includeonly> e </includeonly> compare in tutte le pagine che richiamano il template ma non nella del t. stesso. Questo tag si utilizza per quei template che aggiungono delle categorie agli articoli in cui vengono richiamati (es: {{Scadenza}}), per evitare che anche i t. stessi vengano inclusi in quelle categorie.

      Parametri

      {{pappappero|valore 1|a=valore a|valore 2}}
      

      In questo esempio il template viene evocato con tre parametri, di cui uno nominale ("a"). Nel codice del t., questi parametri verranno richiamati con i nomi {{{1|}}}, {{{a|}}} e {{{2|}}}.

      Esempio: supponiamo che Template:Pappappero contenga il codice

      ::''Meglio [[{{{1|}}}|{{{a|}}}]] oggi, che {{{2|}}} {{{3|domani}}}.''
      <noinclude>{{cat|template citazione}}</noinclude>
      

      Una chiamata

      {{pappappero|a=un uovo|uomo|una '''[[Paris Hilton|gallina]]'''}}
      

      produrrà

      Meglio un uovo oggi, che una gallina domani.

      Come puoi notare

      1. i parametri sono normale testo wiki con normale formattazione wiki (come il 2).
      2. può essere specificato un valore predefinito che compaia nel caso che il parametro non venga chiamato (es: il valore predefinito di {{{3|}}} è 'domani').
      3. nella chiamata del template i parametri nominali possono essere inseriti in qualsiasi ordine, mentre quelli numerici vanno inseriti in ordine numerico[2].

      Variabili e funzioni parser

      Funzione Spiegazione
      {{PAGENAME}} Il titolo della pagina: Aiuto:Manuale/Creazione template.
      {{FULLPAGENAME}} Il nome completo della pagina: Cimitero:Aiuto:Manuale/Creazione template.
      {{TALKPAGENAME}} La discussione della pagina: Discussioni cimitero:Aiuto:Manuale/Creazione template.
      {{fullurl: Pagina |action=edit}} Un link alla modifica della pagina 'Pagina' (che può anche essere {{FULLPAGENAME}} o {{TALKPAGENAME}})
      {{lc: Testo a Caso }}

      {{uc: Testo a Caso }}
      {{lcfirst: Testo a Caso }}
      {{ucfirst: testo a Caso }}

      testo a caso

      TESTO A CASO
      testo a Caso
      Testo a Caso

      {{#if: {{{1|}}} A |  B}} Se il parametro 1 ha un valore non nullo compare il testo 'A', altrimenti il testo 'B'.
      {{#ifeq: {{NAMESPACE}} | | A | {{B}} }} Se il namespace della pagina è nullo (cioè è un articolo) compare il testo 'A', altrimenti viene chiamato il template 'B'.
      {{#switch: {{ucfirst: {{{nazione|}}} }}

      Italia=Italiano
      Germania=
      Austria=Tedesco
      #default= Altre lingue }}

      Restituisce un valore a seconda del parametro 'nazione' ("Italiano" per "Italia", "Tedesco" per "Germania" e "Austria", "Altre lingue" per altri valori). Notare che il parametro viene passato attraverso {{ucfirst}}
      Per approfondire: [1], [2], [3]

      Intestazioni

      Includere delle intestazioni (quelle scritte ===così===) nei template generalmente è una pessima idea: infatti, cliccando sul tasto [modifica] si accederà alla pagina di modifica del template, anziché della pagina che lo racchiude.


      Riquadri

      NB. Esiste già un comodo e completo template per creare dei riquadri: si chiama appunto {{Riquadro}}. Utilizza il codice grezzo solo se non puoi ottenere un risultato equivalente con quel template.

      Se hai intenzione di creare molti template, ti consiglio di aggiungere il pulsante "box" al tuo editor in modo da generare rapidamente un codice base di partenza. Vedi Aiuto:Preferenze per sapere come fare.

      Generale

      Solitamente i riquadri (detti anche box) vengono generati con il markup delle tabelle, per cui ti invito fortemente a leggere anche la guida delle tabelle.
      Il codice generico per una tabella è

      {|parametri
      |contenuto
      |}
      

      È anche possibile dividere il riquadro in righe, e ogni rigo in celle:

      {|parametri
      |- parametri rigo
      |cella 1
      |parametri cella 2|cella 2
      |}
      


      Un'altra sintassi per creare dei riquadri si basa sul tag <div>. Il codice base, in questo caso, sarà

      <div parametri>
      contenuto
      </div>
      

      "div" è consigliato per fare i riquadri a scatole cinesi (l'uno dentro l'altro), in quanto le tabelle possono dare problemi di visualizzazione.

      I parametri delle tabelle e di "div" sono pressappoco gli stessi, e a loro volta sono praticamente identici a quelli dei fogli di stile. Per cui, se te li vuoi smaronare tutti leggiti una guida ai css come questa, oppure dai un'occhiata ai codici dei template già esistenti. Qui troverai solo l'essenziale.

      La sintassi di tutti i parametri è parametro = "valore". È da notare che nessun parametro è obbligatorio.

      style

      Ecco il segreto di tutta la magia: style raggruppa un numero abominevole di attributi che definiscono l'aspetto del riquadro fin nei minimi dettagli. La sintassi di style è:

      style="attributo1:valore; attributo2:valore; ...."
      

      Allineamento orizzontale

      Per gestire la posizione a destra o a sinistra si utilizza l'attributo float: left/right
      Invece per posizionare il riquadro al centro useremo la sintassi

      margin-left: auto; margin-right: auto;
      

      (v. anche margin) Con "div" non funziona se non si specifica una larghezza con width.

      background

      Determina il colore di sfondo. In questo attributo, come in tutti quelli relativi ai colori, possono essere utilizzati sia i nomi standard (es: background: red;) sia i codici RGB (es: background: #d0d0f0;). Per saperne di più consulta la guida apposita.

      color

      Definisce il colore del testo. Questo parametro però , a meno che non si utilizzi la class link-inherit-color, in questo modo:
      {| class="link-inherit-color" style="color: ..."
      

      In alternativa, per modificare il colore di un singolo collegamento, usa il template {{colore}}.

      font-size

      Modifica la dimensione del testo. Può avere valori in pixel, pt, em, in percentuale, o valori relativi "larger" e "smaller".

      border

      Gestisce i bordi. border ha 3 proprietà: spessore, stile e colore. Lo spessore può essere espresso in pixel o in .em, oppure con una parola-chiave (thin, medium, thick); lo stile può essere uno tra:

      solid dotted dashed double ridge groove inset outset none

      Esempi:

      style="... border: 2px solid #0000dd; ..."
      style=" ... border: 0.25em outset blue; ..."
      style=" ... border: thin dashed maroon; ..."
      

      text-align

      Imposta l’allineamento orizzontale del contenuto all'interno del riquadro: da non confondere con float che invece sposta l'intero riquadro. I valori sono sempre left/center/right.

      width

      Dà la larghezza del riquadro. Può essere una percentuale riferita alla larghezza della pagina oppure una dimensione assoluta, in pixel (es. "120px"). Se non viene specificata:

      • la tabella avrà una larghezza automatica in base al contenuto
      • il div avrà una larghezza del 100%. Per far sì che la dimensione sia calcolata in automatico bisogna dare a width valore auto.

      height

      Il corrispondente verticale di width.

      margin

      Imposta la distanza tra il bordo del riquadro e gli elementi all'esterno nella pagina. Generalmente è espresso in pixel (es: margin: 4px;) o in em (es: margin: 0.5em;). Puoi anche specificare separatamente i margini per ciascun lato, scrivendo margin-top: ... ; margin-bottom: ... ; margin-left: ... ; margin-right: ... ;

      padding

      Imposta la distanza tra il bordo del riquadro e il contenuto all'interno. Funziona esattamente come margin.

      Classi

      Le classi contengono delle impostazioni preformate, e talvolta delle funzionalità avanzate scritte in javascript. Per attivarle si utilizza il parametro class="nomeclasse1 nomeclasse2". La classe standard per i template è "expansion", che però al momento non è ancora attiva.[3]

      radius

      La classe "radius" permette di generare delle caselle dai margini arrotondati, come questa:

      Codice: <div class="expansion radius" align="center" style="border: 3px solid green">

      Template di navigazione e template a scomparsa

      I template di navigazione sono essenzialmente dei riquadri che contengono dei collegamenti alle stesse pagine in cui sono inclusi (fungono da indice). Molti di essi sono "a scomparsa", cioè visualizzano il loro contenuto solo se vengono attivati da un click.

      Ci sono due modi per creare dei t. a scomparsa:

      1. utilizzare il template {{Cassetto}}
      2. aggiungere la class "collapsible" alla tabella:
      {|class="collapsible" style="....."
      ! Titolo della tabella (unica cosa visibile quando è collassata)
      |-
      |.....
      |}
      


      Template galleggianti

      Sono template che si posizionano sullo schermo in modo indipendente rispetto al resto della pagina, e non scorrono con essa ("galleggiano"). Vanno creati con molta cautela e senza esagerare, o possono risultare estremamente fastidiosi. Il codice grezzo per crearli è:

      <div style="position:fixed; right: ...px; bottom: ...px; overflow:visible;">
      [[File:...]]
       <div style="position:absolute; right: ...px; bottom:...px; overflow:hidden">Testo
       </div>
      </div>
      
      
      • right: left: bottom: top: sono coordinate espresse in pixel
      • con position:fixed le coordinate determinano la posizione dell'intero template rispetto ai margini dello schermo;
      • con position:absolute, invece, le coordinate posizionano un oggetto all'interno del template.

      Conclusione

      La guida è finita, ma sono sicuro che tu non hai imparato un cazzo. Quindi adesso fai come ti dico: rileggila un'altra volta, poi conta fino a 10, rileggila di nuovo, fatti una passeggiata, dopodiché, forse, puoi creare il template che avevi in mente.

      Seriamente: c'è di meglio da fare che creare template. Scrivere articoli, correggere gli errori di formattazione, sorvegliare le ultime modifiche, sono tutti compiti ben più importanti del creare template. Ma tanto so già che non mi darai retta...

      Note

      Template:Legginote

      1. ^ Ma anche le pagine degli altri namespace possono essere trascluse allo stesso modo: è sufficiente inserire il nome del namespace (o : per gli articoli)
      2. ^ Però anche i parametri numerici possono essere chiamati in un ordine casuale con la sintassi 1=..., 2=... ecc
      3. ^ Le classi disponibili su Nonciclopedia si trovano in Mediawiki:Common.css e in Mediawiki:Monobook.css.