很抱歉,本来是有截图的,可以让过程看得更清楚些,但可能由于机器的原因,图片始终无法上传.所以只能写文字版了!
在
Office SharePoint Server 2007
中的内容查询
Web Part
只支持单个列进行显示(默认为标题列),即使将列表中的列设置为富文本格式在内容查询
Web Part
中也显示为不带样式的文本。下面的方法将实现在内容查询
Web Part
中显示我们添加的列并使用样式。
1. 为通知列表添加自定义列
在本例中我们为通知添加的自定义栏名称为“显示标题”,多行文本;富文本类型。
* 关键要点:如果自定义栏的名称为非英文,为了避免 SPField.InternalName 属性被编码需要在创建时先用英文名称代替,并须牢记该名称,我们在后面的修改均用该英文名称。创建完成后我们再将栏的名称修改为中文,此时 SPField.InternalName 属性并不会被修改,而维持原命名的英文名称.
2. 将内容查询 WebPart 导出并修改
在页面中加入一个内容查询 WebPart ,将其查询设置为我们刚才所修改的通知列表。通过其上下文菜单将其导出成文件。
我们用记事本打开保存到本地磁盘的 .webpart 文件,找到 <property name="CommonViewFields" /> ,将其修改为:
<property name="CommonViewFields" type="string">
CustomTitle
,
RichText
;</property>
其中的
CustomTitle
为我们上一步中添加的自定义栏的名称(第一次输入的英文名称),
RichText
为该栏目的类型,保存该修改。
3.
修改
XSL
文件
我们用 SharePoint Designer 打开网站 ( 如 http://moss:8000) ,在文件夹列表中找到 \Style Library\XSL Style Sheets 目录,将会看到 ItemStyle.xsl 、 ContentQueryMain.xsl 、 SummaryLinkMain.xsl 三个文件,我们将会对其进行修改
Ø 打开 ContentQueryMain.xsl 找到 <xsl:template name="OuterTemplate.GetTitle"> 将该 template 定义复制,将复本的名称更改为 OuterTemplate.GetCustomTitle ,相应的修改如下:
<xsl:template name="OuterTemplate.GetCustomTitle">
<xsl:param name="CustomTitle" select="@CustomTitle"/>
<xsl:param name="UrlColumnName"/>
<xsl:if test="string-length($CustomTitle) != 0">
<xsl:value-of select="$CustomTitle"/>
</xsl:if>
<xsl:if test="string-length($CustomTitle) = 0">
<xsl:if test="$UseCopyUtil = 'True'">
<xsl:value-of select="$BlankTitle" />
</xsl:if>
<xsl:if test="$UseCopyUtil != 'True'">
<xsl:call-template name="OuterTemplate.GetPageNameFromUrl">
<xsl:with-param name="UrlColumnName" select="$UrlColumnName"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:template>
保存修改。
Ø 打开 SummaryLinkMain.xsl 文件找到 <xsl:template name="OuterTemplate.GetTitle"> 将该 template 复制,将复本的名称更改为 GetCustomTitle ,相应的修改如下:
<xsl:template name="OuterTemplate.GetCustomTitle">
<xsl:param name="CustomTitle" select="@CustomTitle"/>
<xsl:value-of select="$CustomTitle"/>
</xsl:template>
保存修改。
Ø 打开 ItemStyle.xsl 文件,我们需要在该文件中加入一个样式定义
找到 <xsl:template name="Default" match="*" 将这个名为 Default 的 template 复制一份,将 name 属性修改为 AnnouceList , match 属性修改为 Row[@Style=’AnnouceList’] 。并在 variable 中加入在上一步骤中加入的自定义栏的定义,并命名为 CustomTitle (见下文示例)。
修改后的 template 定义为:
<xsl:template name="AnnouceList" match="Row[@Style= AnnouceList]" mode="itemstyle">
<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="SafeImageUrl">
<xsl:call-template name="OuterTemplate.GetSafeStaticUrl">
<xsl:with-param name="UrlColumnName" select="'ImageUrl'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="CustomTitle">
<xsl:call-template name="OuterTemplate.GetCustomTitle">
<xsl:with-param name="Title" select="@CustomTitle"/>
<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 id="linkitem" class="item">
<xsl:if test="string-length($SafeImageUrl) != 0">
<div class="image-area-left">
<a href="{$SafeLinkUrl}" target="{$LinkTarget}">
<img class="image" src="{$SafeImageUrl}" alt="{@ImageUrlAltText}" />
</a>
</div>
</xsl:if>
<div class="link-item">
<xsl:call-template name="OuterTemplate.CallPresenceStatusIconTemplate"/>
<table style="width:100%">
<tr>
<td style="width:100%" class="itemlink-item">
<a href="{$SafeLinkUrl}" mce_href="{$SafeLinkUrl}" target="{$LinkTarget}" title="{@LinkToolTip}">
<xsl:value-of select="$CustomTitle" disable-output-escaping = "yes"/>
</a>
</td>
</tr>
</table>
</div>
</div>
</xsl:template>
保存修改。
打开网站集站点管理 - 》 web 部件,将修改的 .webpart 文件上传 ,将该 webpart 名称设置为“公告栏”.
5. 将新加入的 webpart 重新加入页面,修改其 webpart 属性。
将项目样式设置为我们在上一步的 XSL 定义中的样式" AnnouceList "。点击“确定”按钮。