Hi,
I want to display images in my menu based on the group number, but I can't seem to get the number out in my XSLT.
Testing with:
<textarea>
<xsl:copy-of select="." />
</textarea>
Any clues?
Attaching the XSLT.
BR
Martin
Hi,
I want to display images in my menu based on the group number, but I can't seem to get the number out in my XSLT.
Testing with:
<textarea>
<xsl:copy-of select="." />
</textarea>
Any clues?
Attaching the XSLT.
BR
Martin
The group data (incl. number) is not directly available in the ecom navigation xml, but if you dare – and I know you do – you can use a piece of c# code in your xslt to get the actual group:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts">
<!-- @see http://msdn.microsoft.com/en-us/library/533texsx(v=vs.110).aspx -->
<msxsl:script language="C#" implements-prefix="user">
<msxsl:assembly name="Dynamicweb" />
<![CDATA[
/*
* Get group number from group id in query string
*/
public string GetGroupName(string url){
var match = System.Text.RegularExpressions.Regex.Match(url, @"GroupID=(?<GroupID>[^&]+)");
if (match.Success) {
var groupID = match.Groups["GroupID"].Value;
var group = Dynamicweb.eCommerce.Products.Group.GetGroupByID(groupID);
if (group != null) {
return group.Number;
}
}
return "";
}
]]>
</msxsl:script>
…
<xsl:template match="/NavigationTree//Page[@MenuText != '']">
…
<xsl:variable name="groupName" select="user:GetGroupName(@Href)"/>
<xsl:if test="$groupName">
<xsl:text>[</xsl:text>
<xsl:value-of select="$groupName"/>
<xsl:text>]</xsl:text>
</xsl:if>
…
</xsl:template>
</xsl:stylesheet>
I'm not sure about any performance issues, but it's nice to be able to use real code in your xslt templates.
Best regards,
Mikkel
Hi Mikkel!
Thanks, it really works ;)
I'm affraid about performance tho. Wouldn't this require the IIS to generate an DLL for each item?
BR
Martin
You must be logged in to post in the forum