Adding Banding in a CQWP

CQWP Banding using XLST

The Content Query Web Part aggregates SharePoint content. Banding can be added by customizing the associated XSLT in a file called ItemStyle.XSL. One can optionally customize the XSL in a copy of this file, and then customize the CQWP to use the customized file. I wanted to customize the list of Blog posts to be condensed, with a truncated preview. Here’s how to do it.

Tuning the CQWP

Use the following settings in the CQWP to create a list of just Blog Post Links:
1. List Type: Posts
2. Content Types: List Content Types
3. Show items: Post
4. Group by: Created By
5. Sort by: Created
6. Limit: 25
7. Group style: Banded
8. Item Style: Title Only: Important, this determines the XSLT template customized and used later
9. Fields to display: Title: Title (only)

1. Export Web Part
2. Open in Notepad
3. Edit and change the XSLT file ItemStyle.XSL referenced, to point to a different file
4. Save
5. Import as a web part

Tuning the XSLT

Locate the XSLT template processing the item, and refine it. If a new XSL file is desired, copy ItemStyle.XSL and edit that one. Here’s the customized commented code for the TitleOnly template:

<xsl:template name="TitleOnly" match="Row[@Style='TitleOnly']" mode="itemstyle">
<xsl:variable name="SafeLinkUrl">
<xsl:call-template name="OuterTemplate.GetSafeLink">
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
<xsl:variable name="DisplayTitle">
<xsl:call-template name="OuterTemplate.GetTitle">
<xsl:with-param name="Title" select="@Title"/>
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
<!-- Joel's alternating row colorings-->
<xsl:variable name="CurPosition" select="count(./preceding-sibling::*)" />
<xsl:variable name="AlternatingCssClass">
<xsl:when  test="($CurPosition mod 2 = 0)">
<xsl:value-of select="'#eeeeee'" />
<xsl:value-of select="'white'" />
<!-- Joel's table, created for each row, 300 wide seems a good number -->
<!-- Joel's decision to use the existing 'description' class, to get more vertical compression than 'tem'-->
<!-- Joel's create a table, row and cell around each link, to allow banding -->
<div class="description">    
<table width="300">
<tr style="background:{$AlternatingCssClass}">
<xsl:call-template name="OuterTemplate.CallPresenceStatusIconTemplate"/>
<a href="{$SafeLinkUrl}" title="{@LinkToolTip}">
<xsl:if test="$ItemsHaveStreams = 'True'">
<xsl:attribute name="onclick">
<xsl:value-of select="@OnClickForWebRendering"/>
<xsl:if test="$ItemsHaveStreams != 'True' and @OpenInNewWindow = 'True'">
<xsl:attribute name="onclick">
<xsl:value-of disable-output-escaping="yes" select="$OnClickTargetAttribute"/>
<xsl:value-of select="$DisplayTitle"/>
<!-- Joel's HTML for closing the data cell, row, and table-->
0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *