Grazie ai widget, quando utilizzi il tema Layout per creare la sezione "body" del tuo blog puoi aggiungere elementi di pagina, come immagini e blogroll.
Tipi di tag
In questa sezione viene descritto il codice HTML che puoi utilizzare all'interno dei tag di chiusura.
Inclusioni (b:include)Quando utilizzare le inclusioni
Le inclusioni sono particolarmente utili quando vuoi riutilizzare una sezione di codice in più posizioni diverse o se vuoi includerla solo in determinate circostanze.
A questo scopo, scrivi i tuoi contenuti all'interno di un tag b:includable
, quindi utilizza b:include
ovunque desideri vengano visualizzati.
Formato
<b:includable id='main' var='thiswidget'>
[inserisci qui i contenuti che desideri]
</b:includable>
Attributi
- id (obbligatorio): un identificatore univoco composto da lettere e numeri. Ciascun widget deve avere un tag includable con id='main'.
- var (facoltativo): un identificatore composto da lettere e numeri che serve a fare riferimento ai dati all'interno di questa sezione.
Se crei più sezioni "includable" con ID diversi, queste non verranno visualizzate automaticamente. Se tuttavia crei una sezione "includable" con id='new'
, puoi farvi riferimento nell'includable principale con <b:include name='new' />
e in questo modo verrà visualizzata.
Gli attributi del tag b:include sono i seguenti:
- name (obbligatorio): un identificatore univoco composto da lettere e numeri. Deve corrispondere all'ID di un tag
b:includable
esistente nello stesso widget. - data (facoltativo): un'espressione o un dato da passare alla sezione "includable". Questo diventerà il valore dell'attributo var nell'includable.
- cond (facoltativo): un'espressione mediante la quale la sezione "include" viene eseguita solo se il risultato è vero. È uguale all'attributo cond in b:if.
Esempio
Di seguito un esempio che mostra come utilizzare b:includable
e b:include
.
Ciò che è importante comprendere è in che modo la sezione "post" viene inclusa nella sezione "main" . La sezione "main" distribuisce un post che chiama "p" e la sezione inclusa vi fa riferimento come propria variabile "post", per poi visualizzarne il titolo.
Tieni presente che la sezione "include" viene eseguita solamente quando l'indice è inferiore a 10, pertanto in questo esempio verrebbero visualizzati solo 10 post (l'indice inizia dallo 0).
<b:includable id='main'>
<b:loop var='p' index='index' values='posts'>
<b:include name='post' data='p' cond='index < 10'/>
</b:loop>
</b:includable>
<b:includable id='post' var='post'>
Title: <data:post.title/>
</b:includable>
Esempi
-
<data:title/> mostra il titolo di un widget
-
<data:photo.url/> - Dimensioni: <data.photo.width /> x <data.photo.height /> mostra gli attributi del componente di una foto. Una foto può avere diversi componenti, come ad esempio URL, altezza e larghezza. La notazione "." indica che l'URL desiderato è quello della foto e non di altro.
Altri esempi
Visualizza l'elenco completo dei tag di dati per i layout supportati.
Quando utilizzare b:loop
Con il tag b:loop
puoi ripetere una sezione di contenuti più volte. Questo tag viene utilizzato principalmente per visualizzare ciascun post (o commento, etichetta ecc.) in un elenco di post (o commenti, etichette ecc.) in una pagina specifica.
Formato
Il formato generale per l'uso dei tag loop è il seguente:
<b:loop var='identifier' values='set-of-data'>
[i contenuti ripetuti vanno qui]
</b:loop>
Puoi chiamare 'identifier' (i) come più desideri; questo nome verrà utilizzato al posto di ogni nuovo elemento nell'elenco, ogni volta tramite il loop. Il "set-of-data" specificato per "values" può essere un qualsiasi dato descritto nell'articolo sui tag dei dati sotto forma di elenco di elementi.
Ad esempio, nel widget dei post del blog, posts
è un elenco. Un codice come il seguente si ripeterà per ogni post, indicando il titolo tra tag di intestazione.
<b:loop var='i' values='data:posts'>
<h2><data:i.title/></h2>
</b:loop>
Osserva come "i" assume di volta in volta il valore di ciascun post, in modo da poter ottenere il titolo per ognuno.
Intervallo numerico
Un tag loop ti permette di ripetere un intervallo numerico definito, come ‘da 1 a 3', ‘da -3 a -9', laddove il valore della variabile assume il valore del numero. L'esempio seguente crea un elenco non ordinato di 1, 2 e 3.
<b:loop var='i' values='1 to 3'>
<li><data:i /></li>
</b:loop>
Attributo index
I tag loop hanno inoltre un attributo index facoltativo, che fornisce l'indice con base zero dell'iterazione corrente attraverso il loop.
<ul>
<b:loop var='number' index='index' values='9 to 7'>
<li>Indice: <data:index />, Numero: <data:number /></li>
</b:loop>
</ul>
L'esempio crea un elenco non ordinato di:
- Indice: 0, Numero: 9
- Indice: 1, Numero: 8
- Indice: 2, Numero: 7
Quando utilizzare if, elseif o else
I tag b:if
, b:elseif
e b:else
consentono di mostrare determinati contenuti in alcuni casi e altri contenuti in altri casi, ad esempio se desideri mostrare un testo nella home page e un testo diverso quando si leggono i singoli post.
Formato
<b:if cond='condition'> [content to display if condition is true] <b:elseif cond='another condition'/> [
content to display if no previous if or elseif conditions have been true, and this elseif condition is true] <b:else/> [content to display if no if or elseif conditions are met] </b:if>
I tag b:elseif
e b:else
sono facoltativi. Senza di essi si ottengono i contenuti elencati nella sezione b:if oppure nulla. Il tag di chiusura </b:if>
è tuttavia obbligatorio in ogni caso.
Al posto di "condition" puoi inserire qualsiasi cosa abbia come valore vero o falso. Alcuni tag dei dati sono di per sé semplici valori vero/falso, come il tag allowComments
in un post. Altri dati possono essere confrontati con valori specifici per ottenere un valore vero o falso. Di seguito sono riportati alcuni esempi:
<b:if cond='data:post.showBacklinks'>
Vero se il post attuale è impostato per mostrare i backlink.<b:if cond='data:blog.pageType == "item"'>
Vero se la pagina corrente è una pagina di elementi (pagina di post).<b:if cond='data:blog.pageType == "item" and data:post.showBacklinks'>
Vero se la pagina corrente è una pagina di elementi (pagina di post) e il post corrente è impostato per mostrare i backlink.<b:if cond='data:displayname != "Fred"'>
Vero se il nome visualizzato non è Fred.<b:if cond='data:displayname == "Fred" or data:blog.pageType == "static_page"'>
Vero se Fred è il nome visualizzato o se la pagina corrente è statica (non una pagina di post).<b:if cond='data:post.numComments > 1'>
Vero se per il post attuale è presente più di un commento.<b:if cond='data:blog.pageType in {"static_page", "item"}'> OR <b:if cond='{"static_page", "item"} contains data:blog.pageType'>
Vero se la pagina attuale è un post o una pagina specifica.
Quando utilizzare un tag switch
Puoi utilizzare un tag b:switch
in modo molto simile a come utilizzeresti un tag b:if
che contiene più tag b:elseif
. Il vantaggio di un ramo di tipo switch è il non dover ripetere il nome della variabile. È di facile lettura per la definizione di ciascun tag case e per stabilire quale sia il tag case predefinito.
Formato
<b:switch var='[Data expression]'>
<b:case value="[Value 1]" />
[Restituisce se la valutazione dell'attributo var è uguale al Valore 1]
<b:case value="[Value 2]" />
[Restituisce se la valutazione dell'attributo var è uguale al Valore 2]
[… qualsiasi altro valore]
<b:default />
[Restituisce se la valutazione dell'attributo var non è uguale agli altri tag b:case definiti]
</b:switch>
Esempio
Questo esempio mostra come ottenere risultati da un'intestazione diversa, a seconda del tipo di pagina ottenuta.
<b:switch var='data:blog.pageType'>
<b:case value="static_page" />
<h1>Pagina</h1>
<b:case value="item" />
<h1>Post<h1>
<b:default />
<h2>Post del blog</h2>
</b:switch>
Quando utilizzare le espressioni
Puoi utilizzare l'attributo expr per impostare valori in base ai valori del dizionario di dati.
Esempi
<a expr:href='data:blog.homepageUrl'>Home</a>
Un link all'URL della home page del blog.<a expr:href='data:blog.homepageUrl + "feeds/posts/default"'>Posts RSS</a>
Un link con l'URL del feed RSS del post del blog. L'operatore ‘+' concatena le due stringhe.<a expr:class='data:post.allowComments ? "comment" : "no-comment">Comment</a>
Un link con classe "comment" quando sono consentiti i commenti e con "no-comment" quando non lo sono. L'operatore ternario (?:) prende il valore dell'operatore booleano e seleziona il primo valore (dopo "?") se l'operatore booleano è vero, il secondo valore (dopo ":") se l'operatore booleano è falso.
Quando utilizzare un'espressione valutata
Puoi utilizzare il tag b:eval
per valutare un'espressione complicata rispetto a un tag di dati standard.
Formato
<b:eval expr='[Espressione]' />
Esempi
- Altezza minima:
<b:eval expr="data:newWidth * data:height / data:width" />
px;
Restituisce un'altezza relativa calcolata in base al nuovo valore della larghezza. <b:eval expr="data:post.labels[0].url" />
Restituisce l'URL della prima etichetta del post.<b:eval expr='data:post.allowComments ? "Comment" : "Comments Disabled" />
Restituisce “Comment” quando sono ammessi commenti, "Comments Disabled” in caso contrario. Tieni presente che questa espressione utilizza l'operatore ternario.
Quando utilizzare un alias di variabile
Puoi utilizzare il tag b:with
per archiviare temporaneamente il valore di un'espressione calcolata ed evitare complicate espressioni in linea.
Formato
<b:with var='myComputedValue' value='[Data expression]' />
Esempi
Puoi calcolare un attributo di stile complesso basato sulle variabili di dati prima del resto dell'output HTML, in modo che il codice HTML annidato sia di più semplice lettura.
<b:with var='style'
value='"background-image: url(\"" + data:sourceUrl "\"); "
+ " width: " + data:width + "px; " '>
<div id='header-outer'>
<div id='header-inner' expr:style='data:style'>
<h1>Intestazione</h1>
</div>
</div>
</b:with>
Tieni presente che la variabile esisterà solo per i nodi figlio del tag
b:with
.Esempio
Fai clic per visualizzare un esempio del modo in cui tutti questi tag vengono utilizzati in HTML per un widget PageList nel tuo blog.
EsempioQuesto widget mostra esempi di utilizzo dei tag b:widget
, b:includable
(e b:include
), b:if
(e b:else
) e b:loop
.
<b:widget id='PageList1' locked='false' title='Pages' type='PageList'> <b:includable id='main'> <b:if cond='data:title != ""'>
<h2><data:title/>
</h2></b:if>
<div class='widget-content'><b:if cond='data:mobile'>
<selectexpr:id='data:widget.instanceId + "_select"'
><b:loop values='data:links' var='link'> <b:if cond='data:link.isCurrentPage'>
<optionexpr:value='data:link.href'
selected='selected'><data:link.title/></option><b:else/>
<optionexpr:value='data:link.href'
><data:link.title/></option></b:if> </b:loop>
</select> <span class='pagelist-arrow'>&#9660;</span><b:else/>
<ul><b:loop values='data:links' var='link'> <b:if cond='data:link.isCurrentPage'>
<li class='selected'> <aexpr:href='data:link.href'
><data:link.title/>
</a> </li> <b:else/> <li> <aexpr:href='data:link.href'
><data:link.title/>
</a> </li></b:if> </b:loop>
</ul></b:if>
<b:include name='quickedit'/> </div></b:includable> </b:widget>