Pubblicato il 19/06/15e aggiornato il

Come mostrare un widget di Blogger solo nei post ma non nelle pagine statiche.

Come creare una condizione per mostrare un widget, un CSS o un elemento solo nei post ma non nelle pagine statiche.
In un articolo di poco fa abbiamo utilizzato l'operatore logico OR per creare una condizione che servisse a mostrare un elemento di Blogger solo in due o più pagine e in questo post vedremo invece come visualizzare in widget solo negli articoli ma non nelle pagine statiche.

La costruzione di questa condizione non è solo una esercitazione a scopo euristico ma ha anche una sua precisa utilità pratica visto che questa personalizzazione mi è stata prospettata più volte nei commenti. Prima della introduzione dei nuovi operatori per inserire questa condizione si dovevano incollare una sopra all'altra due diverse condizioni. 

Infatti la riga <b:if cond='data:blog.pageType == "item"'>  non filtra solo i post ma anche le pagine statiche. Quindi per mostrare un elemento negli articoli ma non nelle pagine statiche dovevamo aggiungere anche la condizione <b:if cond='data:blog.pageType != "static_page"'>

Vediamo adsso come riunire queste due condizioni con l'operatore logico AND. Per mostrare un widget solo nei post ma non nelle pagine statiche per prima cosa dobbiamo trovarne l'ID. Quindi, dopo aver salvato il template, si va su Modello > Modifica HTML e si cerca il codice del widget con Ctrl+F, digitandone il suo ID e pigiando su Invio.

condizioni-and-blogger-widget

Si scorre il codice del widget fino a trovare le righe <b:includable id='main'> e </b:includable> quindi, come mostrato nello screenshot, subito sopra alla seconda riga si incolla </b:if> mentre sotto la prima si incolla la condizione per mostrare il widget nei post ma non nelle pagine

<b:if cond='data:blog.pageType == "item"  and data:blog.pageType != "static_page"'> 

Si salva il modello. Con lo stesso principio e la stessa sintassi possiamo unire due condizioni con l'operatore AND in modo che questa sia vera quando lo siano entrambe. Ho anche testato l'utilizzo delle parentesi tonde o quadrate per creare delle condizioni più complesse che unissero gli operatori OR, AND e NOT ma purtroppo il test non è andato a buon fine.




7 commenti :

  1. Per nascondere il post-footer ovunque tranne che nei post uso <b:if cond='data:blog.pageType != &quot;item&quot;'>...</b:if> e il post-footer viene nascosto anche nelle pagine statiche senza bisogna di aggiungere altro. Sbaglio forse qualcosa? O.o

    RispondiElimina
    Risposte
    1. È normale che sia così. Gli elementi item sono sia i post sia le pagine statiche quindi quando mette una sola condizione li comprende entrambi. Questa condizione doppia serve proprio per distinguere post da pagine statiche
      @#

      Elimina
  2. Non possibile per le " Dimaniche", vero? Grazie

    RispondiElimina
  3. Ah... hai già provato a usare le parentesi graffe per unire più condizioni? Tipo:

    <b:if cond='data:blog.pageType in {&quot;index&quot;, &quot;archive&quot;} and data:blog.url != data:blog.homepageUrl'>...</b:if>

    RispondiElimina
    Risposte
    1. Le parentesi graffe servono per gli operatori in e contain quindi ho evitato di testarle per unire due o più condizioni
      @#

      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.