Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Rik Helsen 670 posts 873 karma points
    Jun 30, 2010 @ 16:04
    Rik Helsen
    0

    Getting googlesitemap to work with 4.5

    I'm used to installing a Google sitemap.xml package on all our website, but now run into an issue i haven't seen before when i try to do this with Umbraco 4.5. my XSLT:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet
    version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt" xmlns:umbraco.library="urn:umbraco.library"
    exclude-result-prefixes="msxml
    umbraco.library"
    >
    <xsl:output
    method="html"/>
    <xsl:param name="currentPage"/>
    <xsl:variable name="maxLevelForSitemap"
    select="6"/>
    <xsl:variable name="url" select="concat('http://',umbraco.library:RequestServerVariables('HTTP_HOST'))"
    />

      <xsl:template match="/">
    <xsl:value-of select="umbraco.library:ChangeContentType('text/xml')"/>

    <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
      <url>  
        <loc>
          <xsl:value-of
    select="$url"/>
        </loc>
        <lastmod>
          <xsl:value-of
    select="$currentPage/ancestor-or-self::node
    [@level=1]/@updateDate"
    />+00:00
        </lastmod>   
     
      
    <changefreq>daily</changefreq>
        <priority>0.8</priority>
      </url>
      <xsl:call-template name="drawNodes">  
        <xsl:with-param
    name="parent" select="$currentPage/ancestor-or-self::node [@level=1]"/>
      </xsl:call-template>
    </urlset>
    </xsl:template>


    <xsl:template
    name="drawNodes">
      <xsl:param name="parent"/>

      
      <xsl:if test="umbraco.library:IsProtected($parent/@id,
    $parent/@path) = 0 or

            (umbraco.library:IsProtected($parent/@id,
    $parent/@path) = 1 and

            umbraco.library:IsLoggedOn() = 1)">
            
        <xsl:for-each select="$parent/node
    [string(./data [@alias='umbracoNaviHide']) != '1' and

                  @level
    &lt;= $maxLevelForSitemap]"
    >
          <url xmlns="http://www.google.com/schemas/sitemap/0.84">  
         
      
    <loc>
              <xsl:value-of select="$url"/><xsl:value-of select="umbraco.library:NiceUrl(@id)"/>
         
      
    </loc>
            <lastmod>
              <xsl:value-of select="@updateDate"
    />+00:00
            </lastmod>   
     

            <changefreq>Weekly</changefreq>
         
      
    <priority>0.5</priority>
          </url>
          <xsl:if test="count(./node
    [string(./data [@alias='umbracoNaviHide']) != '1' and

                @level
    &lt;= $maxLevelForSitemap]) &gt; 0"
    >   
         
      
    <xsl:call-template name="drawNodes">
           
      
    <xsl:with-param name="parent" select="."/>
            </xsl:call-template>
          </xsl:if>
        </xsl:for-each>
      </xsl:if>

    </xsl:template>
    </xsl:stylesheet>

    My error:

  • Rik Helsen 670 posts 873 karma points
    Jun 30, 2010 @ 16:35
    Rik Helsen
    0

    Looks like this might work (I'm getting output), but it probably still needs some tuning:

     

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE
    xsl:stylesheet [
    <!ENTITY nbsp "&#x00A0;"> ]>
    <xsl:stylesheet
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:msxml="urn:schemas-microsoft-com:xslt"

      xmlns:umbraco.library="urn:umbraco.library"
    xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon"
    xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes"
    xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath"
    xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions"
    xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings"
    xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"

      exclude-result-prefixes="msxml
    umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes
    Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings
    Exslt.ExsltSets "
    >

    <xsl:output
    method="xml" omit-xml-declaration="yes"/>

    <xsl:param name="currentPage"/>
    <xsl:variable
    name="url" select="concat('http://',umbraco.library:RequestServerVariables('HTTP_HOST'))"
    />
    <xsl:variable
    name="maxLevelForSitemap"
    select="10"/>

    <xsl:template
    match="/">
    <xsl:value-of select="umbraco.library:ChangeContentType('text/xml')"/>
    <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
      <url>  
        <loc>
           <xsl:value-of
    select="$url"/>
        </loc>
    <lastmod>
          <xsl:value-of
     select="$currentPage/ancestor-or-self::node
     [@level=1]/@updateDate"
    />+00:00
        </lastmod
      

      
      <changefreq>daily</changefreq>
        <priority>0.8</priority>
      </url>

    <xsl:call-template
    name="drawNodes">  
    <xsl:with-param name="parent" select="$currentPage/ancestor-or-self::* "/>  
    </xsl:call-template>
    </urlset>
    </xsl:template>

    <xsl:template
    name="drawNodes">
    <xsl:param name="parent"/>
    <xsl:if test="umbraco.library:IsProtected($parent/@id,
    $parent/@path) = 0 or (umbraco.library:IsProtected($parent/@id,
    $parent/@path) = 1 and umbraco.library:IsLoggedOn() = 1)"
    >
    <xsl:for-each select="$parent/*
    [string(umbracoNaviHide) != '1' and @level &lt;=
    $maxLevelForSitemap]"
    >

    <url xmlns="http://www.google.com/schemas/sitemap/0.84">  
    <loc>
    <xsl:value-of
    select="$url"/><xsl:value-of select="umbraco.library:NiceUrl(@id)"/>
    </loc>
    <lastmod><xsl:value-of select="@updateDate"
    />+00:00</lastmod>     
    <changefreq>Weekly</changefreq>
    <priority>0.5</priority>
    </url>

    <xsl:if test="count(./* [string(umbracoNaviHide) != '1' and
    @level &lt;= $maxLevelForSitemap]) &gt; 0"
    >   
    <xsl:call-template name="drawNodes">    
    <xsl:with-param
    name="parent" select="."/>    
    </xsl:call-template>  
    </xsl:if>
    </xsl:for-each>
    </xsl:if>
    </xsl:template>
    </xsl:stylesheet>
  • Biagio Paruolo 1621 posts 1914 karma points c-trib
    Mar 20, 2011 @ 19:19
    Biagio Paruolo
    0

    Is it 4.7 compatible? Is it possible to setup priority for a page?

  • Rik Helsen 670 posts 873 karma points
    Mar 23, 2011 @ 10:17
    Rik Helsen
    0

    You could set up a a page property to set the priority and output it in the xml, sure

    I haven't used 4.7 for production websites yet, so don't know. I don't know think anything has changed regarding xslt though?

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

    Continue discussion

Please Sign in or register to post replies