您的位置:首页> 日志> 动易系统 正文

由于技术支持反馈一个项目中子站数量太多因而使用太多“PE第N级父栏目信息配置”标签导致网站访问数据很慢,因此检查一下说是由于标签使用的是标签内递归原则而获取的数据拖慢响应速度,因此需要改善标签!因此优化了SQL查询语句,从而避免标签内自我嵌套递归循环的问题!初步验证改善后的可以使用!代码如下:

 

<?xml version="1.0" encoding="utf-8"?>
<root>
  <LabelType>改进类</LabelType>
  <LabelIntro>
  </LabelIntro>
  <OutType>sin</OutType>
  <LabelDataType>sql_sysquery</LabelDataType>
  <EnabelAjax>False</EnabelAjax>
  <attributes>
    <name>nodeId</name>
    <datatype>sql.int</datatype>
    <default>3949</default>
    <intro>当前节点ID</intro>
  </attributes>
  <attributes>
    <name>depth</name>
    <datatype>sql.int</datatype>
    <default>1</default>
    <intro>节点深度</intro>
  </attributes>
  <LabelSqlString><![CDATA[
declare @id int
declare @dep int
set @id=@nodeId
set @dep=(@depth - 1)
while (select Depth from PE_Nodes where NodeID=@id) > @dep
begin
set @id=(select ParentID from PE_Nodes where NodeID=@id)
end 
select * from PE_Nodes where NodeID=@id
]]></LabelSqlString>
  <LabelTemplate><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pe="labelproc" exclude-result-prefixes="pe">
<xsl:output method="html" />
<xsl:param name="displayType" />
<xsl:param name="number" />
<xsl:param name="contentLength" />
<xsl:param name="more" />
<xsl:template match="/NewDataSet/Table">
<xsl:choose>
 <xsl:when test="$displayType = 0">
    <xsl:value-of select="NodeID"/>
  </xsl:when>
  <xsl:when test="$displayType = 1">
    <xsl:value-of select="pe:GetNode(NodeID,'name')"/>
  </xsl:when>
  <xsl:when test="$displayType = 2">
    <xsl:value-of select="pe:GetNodeFieldName(NodeID,'MetaKeywords')"/>
  </xsl:when>
  <xsl:when test="$displayType = 3">
    <xsl:value-of select="pe:GetNodeFieldName(NodeID,'MetaDescription')"/>
  </xsl:when>
  <xsl:when test="$displayType = 4">
    <xsl:choose>
      <xsl:when test="pe:GetNodeFieldName(NodeID,'ItemOpenType') = 0">_self</xsl:when>
      <xsl:otherwise>_blank</xsl:otherwise>
    </xsl:choose>
  </xsl:when>
  <xsl:when test="$displayType = 5">
    <xsl:value-of select="pe:GetNodeFieldName(NodeID,'ItemListOrderType')"/>
  </xsl:when>
  <xsl:when test="$displayType = 6">
    <xsl:choose>
      <xsl:when test="pe:GetNodeFieldName(NodeID,'ItemPageSize') = 0">10</xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="pe:GetNodeFieldName(NodeID,'ItemPageSize')"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:when>
  <xsl:when test="$displayType = 7">
    <xsl:value-of select="pe:GetNodeFieldName(NodeID,'HitsOfHot')"/>
  </xsl:when>
  <xsl:when test="$displayType = 8">
    <xsl:value-of select="NodeType"/>
  </xsl:when>
  <xsl:when test="$displayType = 9">
    <xsl:value-of disable-output-escaping="yes" select="Tips"/>
  </xsl:when>
  <xsl:when test="$displayType = 10">
    <xsl:choose>
      <xsl:when test="$contentLength!=0">
        <xsl:value-of  disable-output-escaping="yes" select="pe:CutText(Description,$contentLength,'…')" />
        <xsl:if test=" $more!='' ">
          <a class="more">
            <xsl:attribute name="href">
              <xsl:value-of select="pe:GetNodePath(false,NodeID)"/>
            </xsl:attribute>
            <xsl:value-of select="$more"/>
          </a>
        </xsl:if>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of disable-output-escaping="yes" select="Description"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:when>
  <xsl:when test="$displayType = 11">
    <xsl:choose>
      <xsl:when test="NodePicUrl != ''">{PE.SiteConfig.ApplicationPath /}<xsl:value-of select="NodePicUrl"/>
</xsl:when>
      <xsl:otherwise>
<xsl:value-of select="pe:InstallDir()"/>images/nopic.gif</xsl:otherwise>
    </xsl:choose>
  </xsl:when>
  <xsl:when test="$displayType = 12">
    <xsl:choose>
      <xsl:when test="pe:GetNodeFieldName(NodeID,'OpenType') = 0">_self</xsl:when>
      <xsl:otherwise>_blank</xsl:otherwise>
    </xsl:choose>
  </xsl:when>
  <xsl:when test="$displayType = 13">
    <xsl:value-of select="ItemCount"/>
  </xsl:when>
  <xsl:when test="$displayType = 14">
    <xsl:value-of select="CommentCount"/>
  </xsl:when>
  <xsl:when test="$displayType = 15">
    <xsl:value-of disable-output-escaping="yes" select="pe:GetCustomContent($number,Custom_Content) "/>
  </xsl:when>
  <xsl:when test="$displayType = 16">
    <xsl:value-of select="LinkUrl"/>
  </xsl:when>
  <xsl:when test="$displayType = 17">
    <xsl:value-of select="SubDomain"/>
  </xsl:when>
  <xsl:when test="$displayType = 18">
    <xsl:value-of select="ParentID"/>
  </xsl:when>
  <xsl:when test="$displayType = 19">
    <a>
      <xsl:attribute name="href">
        <xsl:value-of select="pe:GetNodePath(false,ParentID)"/>
      </xsl:attribute>
      <xsl:value-of select="pe:GetNode(ParentID,'name')"/>
    </a>
  </xsl:when>
  <xsl:when test="$displayType = 20">
    <xsl:value-of select="pe:GetRootId(NodeID)"/>
  </xsl:when>
  <xsl:when test="$displayType = 21">
    <xsl:value-of select="pe:GetNode(pe:GetRootId(NodeID),'name')"/>
  </xsl:when>
  <xsl:when test="$displayType = 22">
    <xsl:value-of select="arrChildID"/>
  </xsl:when>
  <xsl:when test="$displayType = 23">
    <xsl:value-of select="ParentPath"/>
  </xsl:when>
  <xsl:when test="$displayType = 24">
    <xsl:value-of select="Depth"/>
  </xsl:when>
  <xsl:when test="$displayType = 25">
    <xsl:value-of select="Child"/>
  </xsl:when>
  <xsl:when test="$displayType = 26">
    <xsl:value-of select="PrevID"/>
  </xsl:when>
  <xsl:when test="$displayType = 27">
    <a>
      <xsl:attribute name="href">
        <xsl:value-of select="pe:GetNodePath(false,PrevID)"/>
      </xsl:attribute>
      <xsl:value-of select="pe:GetNode(PrevID,'name')"/>
    </a>
  </xsl:when>
  <xsl:when test="$displayType = 28">
    <xsl:value-of select="NextID"/>
  </xsl:when>
  <xsl:when test="$displayType = 29">
    <a>
      <xsl:attribute name="href">
        <xsl:value-of select="pe:GetNodePath(false,NextID)"/>
      </xsl:attribute>
      <xsl:value-of select="pe:GetNode(NextID,'name')"/>
    </a>
  </xsl:when>
  <xsl:when test="$displayType = 30">
    <xsl:value-of select="pe:GetNodePath(false,NodeID)"/>
  </xsl:when>
  <xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:transform>]]></LabelTemplate>
  <Version officialVersion="" modifiedVersions="5603" compatibleVersion="" />
  <IsXsltSql>false</IsXsltSql>
  <IsXsltCountSql>false</IsXsltCountSql>
  <attributes>
    <name>displayType</name>
    <datatype>int</datatype>
    <default>1</default>
    <intro>输出类型{节点ID:0,名称:1,META关键词:2,META描述语:3,内容打开方式:4,内容排序方式:5,内容分页大小:6,热门最小点击数:7,类型:8,提示:9,说明:10,图片:11,打开方式:12,项目数:13,评论数:14,自设内容:15,外部链接地址:16,子域名:17,父栏目ID:18,父栏目名称:19,根栏目ID:20,根栏目名称:21,所有子节点:22,父路径:23,深度值:24,子节点数:25,上一节点ID:26,上一节点名称:27,下一节点ID:28,下一节点名称:29}</intro>
  </attributes>
  <attributes>
    <name>number</name>
    <datatype>int</datatype>
    <default>1</default>
    <intro>自设内容序号,注意仅当输出类型为自设内容时有效</intro>
  </attributes>
  <attributes>
    <name>contentLength</name>
    <datatype>int</datatype>
    <default>0</default>
    <intro>当displayType=10,即输出节点说明的时候启动</intro>
  </attributes>
  <attributes>
    <name>more</name>
    <datatype>string</datatype>
    <default>
    </default>
    <intro>当displayType=10,即输出节点说明的时候启动,并且contentLength不等于0时有效,空为没有“更多”,可以设置“[详细]”等。</intro>
  </attributes>
</root>