Stiamo creando la nuova UX.... abbiate pazienza :)

 

Piccola modifica al template XSLT "Feed RSS" - Il problema con il template di Umbraco

giovedì 5 maggio 2011 di Eric Lefèbvre

Il problema con il template di Umbraco

Di default, Umbraco è installato con una serie di Templates XSLT più o meno pronti per l'uso, che offrono solitamente un buon punto di partenza per realizzare macro xslt di una certa complessità.

Uno di questi genera un prototipo per la creazione di un Feed RSS. Sfortunatamente, ogni volta che ho provato ad inserire immagini nel mio feed, sono incappato in un errore di Firefox che mi avvisava che il documento xml non era valido. D'altra parte, la rimozione dell'immagine risolve il problema quindi si tratta di un problema benigno che non impedisce di generare un piccolo feed di solo testo.

Solo che… sarebbe bello poter aggiungere anche l'immagine.

Quindi modifichiamo il template.

La prima modifica riguarda la dichiarazione del documento (aggiungere il testo evidenziato in rosso)

<xsl:output method="xml" omit-xml-declaration="yes" cdata-section-elements="content:encoded" />

Questa modifica permette d'inserire una sezione CDATA senza andare a pasticciare con la funzione concat per scriverla.

Questo è il codice della macro predefinita:

<xsl:value-of select="concat('&lt;![CDATA[ ', ./data [@alias='bodyText'],']]&gt;')" disable-output-escaping="yes"/>

Amettendo che sia possible aggiungere un'image non inclusa in bodyText nella sezione CDATA, questo richiederebbe un'ulteriore sforzo di concatenazionem escaping, ecc...

L'attributo inserito in <xsl:output> semplifica la vita perché adesso si può sostituire

<content:encoded>
<xsl:value-of select="concat('&lt;![CDATA[ ', ./data [@alias='bodyText'],']]&gt;')" disable-output-escaping="yes"/>
</content:encoded>

con un più elegante

<xsl:element name="content:encoded">
<xsl:value-of select="./data [@alias='bodyText']" disable-output-escaping="yes"/>
</xsl:element>

oppure con qualsiasi contenuto di cui si sia fatto manualmente l'escaping, come in questo esempio dove posso finalmente inserire la mia foto

<xsl:element name="content:encoded">

&lt;p&gt;         

&lt;img alt="<xsl:value-of select="YOUR-DATA-HERE"/>" src="<xsl:value-of select="concat(substring-before(umbraco.library:GetMedia(YOUR-MEDIA, false),'.'), '_thumb.jpg')" />"/&gt;

&lt;br/&gt;

<xsl:value-of select="./data [@alias='bodyText']" disable-output-escaping="yes"/>

&lt;/p&gt;

</xsl:element>

Ricerca nel sito
Il consiglio direttivo:
Esplora Umbraco 4 dal sito ufficiale!