2013-02-19 15 views
6

Sadece seçili Kök öğelerini ve genişletilecek alt düğümünü görüntülemek için DotNetNuke için DDR Treeview menüsünde çalışıyorum. İşte yapmaya çalıştığım şey bu. (Sol dikey menü) Herhangi bir öneri lütfen? DDR Treeview Menüsü seçilen kök ve alt düğümünü görüntüler

enter image description here

Bu

xslt kodudur ve şu anda tüm kök öğeleri görüntülüyor.

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html"/> 
    <xsl:param name="ControlID" /> 
    <xsl:param name="Options" /> 
    <xsl:template match="/*"> 
    <xsl:apply-templates select="root" /> 
    </xsl:template> 
    <xsl:template match="root"> 
    <xsl:if test="node"> 
     <ul class="treeview filetree" id="{$ControlID}"> 
     <xsl:apply-templates select="node" /> 
     </ul> 
     <script type="text/javascript"> 
     jQuery(function($) { 
      $("#<xsl:value-of select="$ControlID" />").treeview(
      <xsl:value-of select="$Options" disable-output-escaping="yes" /> 
     ); 
     }); 
     </script> 
    </xsl:if> 
    </xsl:template> 
    <xsl:template match="node"> 
    <li> 
     <xsl:if test="node and (@depth != 0 or @breadcrumb = 1)"> 
     <xsl:attribute name="class">open</xsl:attribute> 
     </xsl:if> 
     <xsl:choose> 
     <xsl:when test="@enabled = 0"> 
      <xsl:value-of select="@text" /> 
     </xsl:when> 
     <xsl:otherwise> 
      <a href="{@url}"> 
      <xsl:choose> 
       <xsl:when test="@selected=1"> 
       <xsl:attribute name="class">selected breadcrumb</xsl:attribute> 
       </xsl:when> 
       <xsl:when test="@breadcrumb=1"> 
       <xsl:attribute name="class">breadcrumb</xsl:attribute> 
       </xsl:when> 
      </xsl:choose> 
      <xsl:value-of select="@text" /> 
      </a> 
     </xsl:otherwise> 
     </xsl:choose> 
     <xsl:if test="node"> 
     <ul style="list-item-style:none"> 
      <xsl:apply-templates select="node" /> 
     </ul> 
     </xsl:if> 
    </li> 
    </xsl:template> 
</xsl:stylesheet> 
+5

Soruya xml eklemelisiniz. – Sandro

+1

Alt öğelerdeki tüm satırları (Ana, Hakkında, Servis/Konum ve İletişim sütunları dahil) veya yalnızca en soldaki sütunu gizlemeye mi çalışıyorsunuz? – dlp

cevap

0

Yalnızca kök öğeleri alıyorsanız, menü için tanımlanan NodeSelector değerini değiştirmek isteyeceksiniz. Ben RootChildren shorthand değeri size istediğinizi verecek inanıyorum.

+0

bu sorunu çözdüm. Ancak, cevabınız da yardımcı oldu. – user1781367

1
Eğer dönüştürmek istiyoruz giriş kodu örneği verilen yardımcı olurdu

.

Böyle onun temelde bir şey varsayalım:

<root> 
    <node enabled="1" depth="1" text="Service" selected="true" breadcrumb="0"/> 
    <node> 
    <node> 
     <node/> 
    </node> 
    </node> 
    <node> 
    <node/> 
    </node> 
    <node/> 
</root> 

İlk şablon maçı ve o ilk if-eleman atlayarak doğrudan, test olmadan ilgilendiğiniz neler sadece böyle bir şey eşleşebilir. Eğer burada yapmaya çalıştığımız şey çalışmak gerçekten zor kaynak XML olmadan

<!-- ... --> 
<!-- process only "root" elements that have at least one "node" element --> 
<xsl:template match="/root[node]"> 
    <ul class="treeview filetree" id="{$ControlID}"> 
    <xsl:apply-templates select="node" /> 
    </ul> 
    <!-- ... --> 
</xsl:template> 
<xsl:template match="node"> 
    <!-- ... --> 
</xsl:template> 
1

, ama tüm düğümleri alıyoruz ana nedeni olduğunu söyleyebilirim: hile yapmak gerekir 012 ile eşleşecek şablonöğesi özyinelemeli ve torunları gizlemez. özniteliğine özniteliğine ul özniteliğine node şablonunun sonuna eklerseniz (veya list-item-style - display olarak değiştirin), istediğiniz şeyi alabilirsiniz.

İlgili konular