Pubblicato il 24/05/15e aggiornato il

Aggiunte nuove espressioni ai tag condizionali di Blogger.

Aggiornamento dei tag condizionali di Blogger con l'aggiunta di nuovi operatori e nuovi attributi.
Due giorni fa Blogger Buzz, il blog ufficiale di Blogger, ha pubblicato un articolo con una doppia valenza. La prima e più importante è che dopo diversi mesi sono state introdotte delle novità nella piattaforma Blogger. Questo significa come del resto era ampiamente prevedibile che Google non ha nessuna intenzione di smettere di aggiornare Blogger. Si tratta di una importante rassicurazione per chi usa questa piattaforma e su cui ha investito tempo, energie e creatività.

In seconda battuta vengono introdotte delle nuove espressioni che permetteranno più flessibilità agli sviluppatori e anche agli stessi blogger. I più esperti tra voi avranno certamente sentito parlare dei tag condizionali. Questi strumenti adesso sono stati ampliati e questo ci permetterà di impostare delle condizioni in modo più semplice o addirittura di crearne delle nuove che prima erano impossibili.

tag-condizionali

Ricordo che un tag condizionale generico aveva questa sintassi

<b:if cond='inserire la condizione'>
   [contenuto da visualizzare se la condizione è vera]
<b:else/>
   [contenuto da visualizzare se la condizione è falsa]
</b:if>

con il tag <b:else/> facoltativo che poteva anche essere eliminato in questo modo 

<b:if cond='inserire la condizione'>
   [contenuto da visualizzare se la condizione è vera]
</b:if>

dove le condizioni venivano in genere inserite sotto questa forma

cond='data:blog.pageType == "item"'

che è la condizione che la pagina del blog sia una pagina di elementi ovvero di post. Blogger Buzz ci informa che adesso sono state introdotte queste nuove espressioni:
  • Aggiungere o concatenare valori con +
  • Sottrarre valori con -
  • Controllare una uguaglianza con != e ==
  • Paragonare valori con <, >, <= e >=
Maggiori informazioni si possono trovare nelle pagine di aiuto di Blogger
  1. Tag dei widget per i layout
  2. Espressioni nei tag dei layout.  
Cercherò di fare un po' di chiarezza con degli esempi pratici e con delle possibili applicazioni.

OPERATORE EQUIVALENZA


Sintassi supportata:  ==  (operatore uguale) e != (operatore non uguale)
Esempi:
 
<b:if cond='data:blog.url == data:blog.homepageUrl'> la pagina è la Homepage
<b:if cond='data:title != ""'>
<h3> <data:title /> </h3>
</b:if>   cioè viene mostrato il titolo del widget solo se non è vuoto

 

OPERATORE AND

 

Sintassi supportata: and e &&

Esempio:
 
<b:if cond='data:blog.pageType not in {"item","static_page"} and data:post.allowComments'>
      <b:include name='comment_count_picker' data='post' />
</b:if>

In sintesi con questo codice si mostra il contatore dei commenti solo nelle pagine che non siano di post oppure pagine statiche e che permettano i commenti.

OPERATORE OR

 

Questo tag è utile quando si vogliano combinare più condizioni ognuna delle quali è sufficiente. Fino adesso per esempio era complicato creare dei tag condizionali che permettessero di visualizzare un widget nei post e nella homepage ma non nelle pagine statiche o o in quelle di archivio o di etichetta.

Sintassi supportata: or e ||

Esempio:
 
<b:if cond='data:blog.pageType == "item" or data:blog.url == data:blog.homepageUrl'>

è una condizione che è vera se la pagina è di post o se è la Homepage.

OPERATORE NOT


L'operatore not è utilizzabile quando non si vuole lasciare uno spazio vuoto tra due operatori e mettere il contenuto dopo il tag <b:else/> come per esempio quando non si vuole mostrare un widget nella versione mobile o quando si voglia mostrare il nome nei commenti se chi lo ha scritto non è l'autore del blog.

Sintassi supportata: ! e not

Esempio:

<b:if cond='not data:blog.pageType == "static_page"'>
<b:include name='comments_byline' />
</b:if>

La condizione è vera se non siamo in una pagina statica.

SELETTORE TERNARIO ?


Gli operatori ternari hanno questa struttura condizionale ? risultato_se_vero : risultato_se_falso. Può essere usato per selezionare un valore tra due in linea.

Sintassi supportata: [condizione] ? [risultato se vero] : [risultato se falso]

Esempio: 

<div expr:class='data:post.allowComments ? "comments" : "no-comments"'>
</div>

 

OPERATORE APPARTENENZA


L'operatore appartenenza controlla se un valore appartenga o meno a un set di valori. Tale operatore si usa se un valore sia uno tra quelli possibili. Con questo operatore non si dovranno utilizzare in questi casi gli operatori or e quelli di equivalenza. 

Sintassi supportata:

Si definisce un set utilizzando { } o [ ], quindi si applicano gli operatori in e contains.

Esempi: 

<b:if cond='{"item", "static_page"} contains data:blog.pageType'>
     <p>Questo elemento è un post o una pagina statica</p>
</div>
<b:if cond='data:blog.pageType in ["index", "archive"]'>
     <p>Questa è la homepage o una pagina di archivio </p>
</div>

Nella prima condizione abbiamo usato contains mentre nella seconda l'altra espressione in.

OPERATORI IF, ELSE E ELSEIF


Abbiamo già visto come funzionano gli operatori if e else. Blogger ha adesso introdotto anche il tag elseif che consente di mostrare determinati contenuti in alcuni casi e altri contenuti in altri casi.

Struttura supportata:
 
<b:if cond='prima condizione'>
  [Contenuto da mostrare se la condizione è vera]
<b:elseif cond='seconda condizione'>
  [Contenuto da mostrare se la condizioni if è falsa ma elseif è vera]
<b:else/>
  [Contenuto da mostrare se entrambe le condizioni non si verificano]
</b:if>

Il tag elseif serve per rendere più semplici alcune espressioni con i tag condizionali.

ATTRIBUTO ESPRESSIONI EXPR


Si può usare l'attributo expr per impostare valori in base al 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"'>Feed RSS</a>
Un link con il collegamento al feed RSS dei post del blog. L'operatore + concatena le due stringhe.

Nell'articolo sui tag condizionali linkerò questo aggiornamento a beneficio di tutti i lettori.




8 commenti :

  1. Grazie Ernesto, innovazioni solo per super esperti?

    RispondiElimina
  2. Ottimo, ma credo che per capire bene come un blogger potrebbe sfruttare questa nuova possibilità, ci sia bisogno di esempi concreti, ad esempio sui blog multiautore, o come far vedere o non far vedere una pubblicità su un post eccetera.
    Grazie e buona domenica, sempre prezioso questo lavoro che porti avanti su Blogger.

    RispondiElimina
  3. Da apprezzare sempre le innovazioni di Blogger, ma ritengo ci siano altre importantissime priorità da risolvere, vedi le visualizzazioni dinamiche con l'impossibilità a tutt'ora di mettersi in regola con le nuove norme Cooke già ampiamente discusso in questa sede.

    RispondiElimina
  4. Davvero molto interessante. Mi chiedevo se fosse possibile, visto che non l'ho ancora trovato da nessuna parte, se un tag condizionale possa riferirsi ad una singola etichetta, nel caso l'url ne contenga più di una o a una porzione di url.
    Così da poter validare una condizione del genere: in un URL di questo tipo: http://miosito.it/search/label/ETICHETTA1+ETICHETTA2
    Credo che sarebbe molto utile ad esempio nel caso di un database dove, dietro l'etichetta principale (esempio HOTEL), potrebbero verificarsi molti tipi di abbinamenti di etichette (esempio LUSSO, SPA, B&B ...)

    RispondiElimina
    Risposte
    1. Purtroppo in Blogger non si possono creare gerarchie per le etichette come si può fare in Wordpress. Non so quale sia la tua precisa esigenza però dai una occhiata a questi post se ti possono essere utili
      http://www.ideepercomputeredinternet.com/2014/03/blogger-widget-due-etichette.html
      http://www.ideepercomputeredinternet.com/2015/10/blogger-tag-condizionali-etichette-modello.html
      http://www.ideepercomputeredinternet.com/2015/10/blogger-tag-condizionali-etichette.html
      http://www.ideepercomputeredinternet.com/2015/10/blogger-icone-titolo-post.html
      @#

      Elimina
    2. Grazie mille della tua risposta. I tuoi articoli sono sempre molto interessanti anche se questa volta, credo che mi sarebbero servite delle gerarchie di etichette, CREDO. Perchè avrei avuto bisogno di evidenziare una voce del menu ogni qualvolta richiamo tramite un database determinati post (etichetta1 + etichetta2 + ecc.).

      Elimina
    3. Non è possibile farlo. Ripeto, su Blogger non ci sono categorie e sottocategorie :(
      @#

      Elimina

Non inserire link cliccabili altrimenti il commento verrà eliminato. Metti la spunta a Inviami notifiche per essere avvertito via email di nuovi commenti. Se ti ho aiutato con il post o con le risposte ai commenti condividi su Facebook o su Twitter. Grazie.