Pubblicato il 21/01/11 - aggiornato il  | 3 commenti :

Come mostrare un widget negli articoli e in Homepage ma non nelle pagine di archivio, in quelle delle etichette e nelle pagine statiche.

Un paio di giorni fa mi è stata fatta in un commento una domanda interessante anche se adesso non ricordo bene da chi e in quale post. Mi si chiedeva se esisteva un modo per mostrare un widget negli articoli e in homepage ma non negli altri elementi cioè le pagine statiche, le pagine delle etichette e quelle di archivio.

I lettori più affezionati di questo blog forse ricorderanno un mio post in cui elencavo tutte le possibili condizioni per mostrare o non mostrare un widget in una pagina. Il metodo consiste nell'inserire una riga prima del codice che indichi la condizione prescelta e la riga </b:if> alla sua fine. Ci sono condizioni per tutte le casistiche ma si tratta sempre di situazioni singole. Nel senso che si può decidere di mostrare un widget solo nei post o di non mostrarlo nelle pagine statiche, di visualizzare un banner solo nelle pagine di archivio o di non vederlo in Homepage. Si possono creare delle condizioni anche più complesse aggiungendo due o più righe di codice. Per esempio questo codice

<b:if cond='data:blog.url != data:blog.homepageUrl'>
<b:if cond='data:blog.pageType != &quot;static_page&quot;'>
Codice Widget
</b:if>
</b:if>

serve per non vedere il widget in Homepage e nelle pagine statiche. Queste associazioni funzionano però quando la condizione è di esclusione ma non quando si vogliono mostrare i gadget in due diversi tipi di pagine.

Tratterò il tema solo per quanto riguarda la visualizzazione di un widget in Homepage e nei post che è la situazione certamente più richiesta, ma nulla vieta di crearsi tutte le combinazioni che vogliamo sostituendo le righe che impongono le condizioni con altre simili. Il codice da usare in questo caso è il seguente

<b:if cond='data:blog.pageType == &quot;item&quot;'>
Codice Widget
<b:else/>
<b:if cond='data:blog.url == data:blog.homepageUrl'>
Codice Widget
</b:if>
</b:if>

dove al posto di Codice Widget va inserito il codice dell'elemento che vogliamo mostrare solo negli articoli e in Homepage. La prima riga impone il vincolo di vedere l'elemento nei singoli post e la quarta riga di visualizzarlo anche in Homepage.

Se vogliamo fare un esempio pratico, ecco come diventa il codice il Mi Piace di Facebook in modo che sia visibile solo in Home e nei post inserito su Google Documenti, in cui ho evidenziato di rosso il codice del plugin di Facebook che va inserito per due volte. Per rendervi conto del suo funzionamento andate su Cucina Toscana, un mio blog che ho lasciato perdere da un sacco di tempo, e vedrete che il Mi Piace è presente nei post e in Home ma in nessuna pagina di archivio o pagina di etichetta.

Questo procedimento può essere usato anche per un widget che venga inserito nella sidebar o comunque in un elemento pagina. Ciascun gadget può essere trovato nel modello attraverso il suo nome. Facciamo l'esempio del gadget LinkWithin. Se si installa questo widget, sarà visibile in tutti i tipi di pagine e, specialmente in quelle di archivio e nelle etichette, rallenterà di parecchio il caricamento.

Si va su Design > Modifica HTML e si clicca su F3 o Ctrl+F per cercare LinkWithin nel codice

linkwithin widget

Come tutti i gadget inizierà con <b:widget id='HTMLX'…. e terminerà con </b:widget> dove X è il numero del widget e varierà da modello a modello. All'interno del codice ci saranno le due linee

<b:includable id='main'>  e </b:includable>. In mezzo a queste righe sarà inserito il contenuto del widget. In questo caso si tratta della sola riga

<data:content/>

ma ce ne possono essere anche di più di una. Questa comunque sarà sempre presente. Non ho potuto certo testare il funzionamento con tutti i widget ma, in linea di massima, occorre inserire il codice presente tra le due righe al posto di Codice Widget e sostituire i tutto. In questo caso si cancella cioè la riga

<data:content/>

e si sostituisce con il codice

<b:if cond='data:blog.pageType == &quot;item&quot;'>
<data:content/>
<b:else/>
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<data:content/>
</b:if>
</b:if>

come mostrato nello screenshot

linkwithin

Si salva il modello. Il widget sarà quindi visibile solo in Homepage e nei singoli articoli come potete verificare nel blog di cucina menzionato sopra.



3 commenti :

  1. Ciao Parsifal,
    mi sono un po' incasinata nel procedimento...
    Allora, io seguendo le tue istruzioni avevo già fatto sì che il widget di Linkwithin non fosse visualizzato nella Homepage e nelle pagine statiche.
    Adesso vorrei toglierlo anche dalle pagine delle etichette, ma non ho capito come effettuare quest'ultimo passaggio, riusciresti ad aiutarmi? Grazie mille :)

    RispondiElimina
  2. @Dieta e dintorni
    Non si può togliere dalle pagine delle etichette. Quello che puoi fare è lasciarlo visibile solo nei post (e quindi non nelle pagine statiche, in home, nelle etichette e nelle pagine di archivio). Inserisci i relativi tag condizionali
    http://www.ideepercomputeredinternet.com/2010/11/come-mostrare-o-non-mostrare-widget-in.html

    RispondiElimina

Non inserire link cliccabili altrimenti il commento verrà eliminato. Metti la spunta a Inviami notifiche per essere avvertito via email di nuovi commenti.
Info sulla Privacy