Sitecore and SWFObject

sitecore

Продължавам на вълна Sitecore. За един от проектите си имам нужда от flash replacement за някои от заглавията в страниците. За да не се получи объркване от използването на sIFR, решихме да използваме custom система за замяна на текста. За embedding на flash се спрях на SWFObject 2 – много лека и полезна библиотека, доста по-елегантна от метода на Adobe.

Проблемът дойде от комуникацията между Flash и приложението – знаем, че flashVars използва формат, подобен на query string в браузърите – всяка двойка променлива-стойност е разделена със знак амперсанд. SWFObject 2 позволява известна гъвкавост, позволявайки да кодирате flashVars като JavaScript object, но в процеса на embed-ване на flash-клипчето въпросния обект се кодира до познатия ни query string формат, което прави проблемно използването на амперсанд като част от стойността на дадена променлива – например ако искаме да предадем string от сорта на Terms & Conditions с flashVars ще трябва да кодираме амперсанд-а в URI формат, където ще изглежда като Terms %26 Conditions.

За да направя това директно в rendering-a, използвах custom XSL template. Ето как изглежда той, мисля че ще е полезен на всеки, който се сблъсква с подобен проблем:

<xsl:template match="*" mode="main">
  <xsl:variable name="flashEscapedTitle">
    <xsl:call-template name="flashEscape">
      <xsl:with-param name="text" select="sc:fld('title',.)" />
    </xsl:call-template>
  </xsl:variable>
  <xsl:value-of select="$flashEscapedTitle" />
</xsl:template>
 
<xsl:template name="flashEscape">
  <xsl:param name="text" select="."/>
  <xsl:choose>
    <xsl:when test="contains($text, '&#38;')">
      <xsl:value-of
      select="substring-before($text, '&#38;')"/><!--
      -->%26<xsl:call-template name="flashEscape">
      <xsl:with-param name="text"
      select="substring-after($text,'&#38;')"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$text"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

Маркери: , , ,

За тази статия



Категории

Подобни статии