Библиотека документов: как изменить иконки для документов и как показать их в CQWP
Про кастомизацию Content Query Web Part долго рассказывать не буду, так как в статье "Customizing the Content Query Web Part XSL" вполне понятно про это написано.
Теперь непосредственно про иконки:
В списке библиотеки документов есть скрытое поле DocIcon. Для того, чтобы иметь возможность его использовать из XSL, его необходимо прописать в файле веб парта в свойстве CommonViewFields:
<property name="CommonViewFields" type="string">DocIcon, Lookup;</property>
XSL шаблон, показывающий документ с его иконкой приведен ниже.:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:ext="ext"
exclude-result-prefixes="msxsl ext">
<xsl:template name="DocLib" match="Row[@Style='DocLib']" mode="itemstyle">
<p>
<xsl:variable name="SafeLinkUrl">
<xsl:call-template name="OuterTemplate.GetSafeLink">
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="DisplayTitle">
<xsl:call-template name="OuterTemplate.GetTitle">
<xsl:with-param name="Title" select="@Title"/>
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="LinkTarget">
<xsl:if test="@OpenInNewWindow = 'True'" >_blank</xsl:if>
</xsl:variable>
<div >
<xsl:choose>
<xsl:when test="@DocIcon=''">
<img src="_layouts/images/folder.gif" alt="" />
</xsl:when>
<xsl:otherwise>
<img src="_layouts/images/ic{@DocIcon}.gif" alt="" />
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="OuterTemplate.CallPresenceStatusIconTemplate"/>
<a href="{$SafeLinkUrl}" target="{$LinkTarget}" title="{@LinkToolTip}" style="padding-left:5px;">
<xsl:value-of select="$DisplayTitle"/>
</a>
</div>
</p>
</xsl:template>
</xsl:stylesheet>
Если вы хотите, чтобы SP "понимал" доселе ему неизвестные расширения:
1) Открываете файл docicon.xml. Он находится в папке Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\XML
2) Прописываете в нем тип файла и название картинки. Картинку загружать желательно в Drive:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\Images