博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在MOSS中如何限制标题在首页上显示的长度?

Posted on 2008-03-15 12:59  风中的舞蹈  阅读(652)  评论(1编辑  收藏  举报

      在MOSS相关的项目中,我们经常要将内容聚合到首页:比方说新闻、通知、文档等内容,由于首页内容相对较多,因此要对各部分内容显示的区域加以限制,才能保证整个页面布局的和谐与统一,限制标题显示的字符数,就成了一个必须的要求。MOSS的文档库和列表本身的试图并不提供本身的功能,所以要实现这样的功能就必须自己动手,一是写自己的webpart,取出库和列表的内容,然后按照自己的要求去展示内容,这种方法的优点是通用性强,并且可以将webpart写的更加通用些,一次投入就一直受益,适合有开发能力的公司或个人;这种方法在SPS2003下就有人做了相应的工作。
      那么,对于像我这样的专注于系统而没有开发经验的人来说,是不是就没有办法了呢?答案当然是否定的!在Sharepoint designer中,有一项神奇的功能,可以将MOSS的库和列表转换成XSLT数据视图,借助于XSLT,我们可以灵活的控制内容展示的形式。
      比如,我们想对这个列表的标题的字数加以限制,当字数<=12时,则显示全部的标题,如果字数>12,则截取前面的9个字,并在后面加上...
      在SPD中找到我们插入页面的库或列表,右键,选择转换成XSLT试图。
      对于列表,选择列表的标题,对应的XSL代码为:
        <xsl:value-of disable-output-escaping="no" select="@Title" />
      将代码替换为:
      <xsl:if test="string-length(@Title)&lt;=12">    判断如果标题的字符串长度是否<=12
               <xsl:value-of disable-output-escaping="no" select="@Title" />    显示完整标题:select="@Title"
      </xsl:if>
      <xsl:if test="string-length(@Title)&gt;12">    判断如果标题的字符串长度是否>12
               <xsl:value-of select="substring(string(@Title),1,9)" />...         显示标题的前9个字符,并在后面加上 ...
      </xsl:if>
      对于文档库,select的值不是标题,而是将文件名处理后的标题,代码如下:
      <xsl:value-of select="ddwrt:UrlBaseName(string(@LinkFilename))" />
      我们需要将对应的代码修改如下:
        <xsl:if test="string-length(@LinkFilename)&lt;=12">
               <xsl:value-of select="ddwrt:UrlBaseName(string(@LinkFilename))" />
        </xsl:if>
        <xsl:if test="string-length(@LinkFilename)&gt;12">
               <xsl:value-of select="substring(ddwrt:UrlBaseName(string(@LinkFilename)),1,9)" />...
        </xsl:if>

       美中不足的是,我发现代码中对于字符串的计数是不分全角半角的,统统按照一个计算,这样的话,如果标题或文件名中如果包含了半角的字母或数字,所显示的结果就不会如我们的想象一样,是一个固定的长度,不过,对于标题过长从而换行导致的布局问题,总算是解决了!
       注:文中标题部分的代码,参考了西安huahua同学在MOSS群中的讨论,才使得我对这个问题有了一个完整的认识,在此表示感谢!