Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Amar 11 posts 41 karma points
    Jul 24, 2009 @ 14:08
    Amar
    0

    How to get ParentPage name in "List Subpages by document type template"

    Hi all,

    Thanks in advance.

    I am using below template to get list of subpages by document types.

     

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
    <xsl:stylesheet
     version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:msxml="urn:schemas-microsoft-com:xslt"
     xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"
     exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">

    <xsl:output method="xml" omit-xml-declaration="yes" />

    <xsl:param name="currentPage"/>

    <!-- Input the documenttype you want here -->
    <xsl:variable name="documentTypeAlias" select="string('weblogItem')"/>

    <xsl:template match="/">
    <link rel="stylesheet" href="/css/home_navigation.css" />
    <!-- The fun starts here -->
    <ul id="list-nav">
    <xsl:for-each select="$currentPage/node [@nodeTypeAlias = 'doc_pages' and string(data [@alias='umbracoNaviHide']) != '1']">
     <li>
      <a href="{umbraco.library:NiceUrl(@id)}">
       <xsl:value-of select="@nodeName"/>
      </a>
     </li>
    </xsl:for-each>
    </ul>

    </xsl:template>

    </xsl:stylesheet>

     

    Now my requirement is ......  I want to descent from parent node of the current page and not the current page. Please copy the require XSLT for me. 

    in for-each loop ... i want parent of currentpage and then descent down.

     

  • Tim 225 posts 690 karma points
    Jul 24, 2009 @ 14:11
    Tim
    100

    This should work:

    $currentPage/../node

    T

     

  • dandrayne 1138 posts 2262 karma points
    Jul 24, 2009 @ 15:14
  • Amar 11 posts 41 karma points
    Jul 24, 2009 @ 17:00
    Amar
    0

    Hi Tim,

    This worked for me. Thanks a lot.

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
    <xsl:stylesheet
     version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:msxml="urn:schemas-microsoft-com:xslt"
     xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"
     exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">

    <xsl:output method="xml" omit-xml-declaration="yes" />

    <xsl:param name="currentPage"/>

    <!-- Input the documenttype you want here -->
    <xsl:variable name="documentTypeAlias" select="string('weblogItem')"/>

    <xsl:template match="/">
    <link rel="stylesheet" href="/css/home_navigation.css" />
    <!-- The fun starts here -->
    <ul id="list-nav">
    <xsl:for-each select="$currentPage/node [@nodeTypeAlias = 'doc_pages' and string(data [@alias='umbracoNaviHide']) != '1']">
     <li>
      <a href="{umbraco.library:NiceUrl(@id)}">
       <xsl:value-of select="@nodeName"/>
      </a>
     </li>
    </xsl:for-each>
    </ul>

    </xsl:template>

    </xsl:stylesheet>

    I have one more question.  Can I set the value for the $currentPage is always the root node of the website.

     

  • Tim 225 posts 690 karma points
    Jul 24, 2009 @ 17:28
    Tim
    0

    Hi,

    You don't need to set $currentPage as the root node of the website you can simply modify the XPATH so that it finds the root node (from the current page) i.e.

    <xsl:for-each select="$currentPage/ancestor::root/node [@nodeTypeAlias = 'doc_pages' and string(data [@alias='umbracoNaviHide']) != '1']">

    This will now always (wherever you are in the site) list out the child pages of the root node.

    I think this is what you are after?

    Why not check out my flexible navigation package for an example of navigation XSLT which does similar to what you are looking for I think.

    Tim

     

  • Amar 11 posts 41 karma points
    Jul 24, 2009 @ 22:46
    Amar
    0

    Hi Tim,

    <xsl:for-each select="$currentPage/ancestor::root/node [@nodeTypeAlias = 'doc_pages' and string(data [@alias='umbracoNaviHide']) != '1']">

    this is not working ....

    Let me tell you the website structure::

    Homesite   ..... template  (Home_page)

         Page 1

     

     

  • Amar 11 posts 41 karma points
    Jul 24, 2009 @ 22:51
    Amar
    0

    Hi Tim

    Website structure :

    Homesite .... (Home_page)

       page1   ...... (docs_pages)

       page 2 ..... (docs_pages)

       tool 1 .... (tools_pages )

      tool2 ... (tools_pages)

     

    Top navigation is devided into two parts ... one displays all doc_pages and one displays tools_pages.

    So I have to use template called list subpages by document types .....

    On homepage everything displays fine ... then if click on page1 .... your first answer worked ... now if I click on page under Page1 (left-panel) ... i wont get the navigation on the page. 

    <xsl:for-each select="$currentPage/ancestor::root/node [@nodeTypeAlias = 'doc_pages' and string(data [@alias='umbracoNaviHide']) != '1']">

    is not working ... is syntax correct.

     

  • Amar 11 posts 41 karma points
    Jul 25, 2009 @ 09:18
    Amar
    0

    HI Tim,

    let me put it in simple way.

    Honesite                  (home_page)

              web1             (doc_pages)                       (web1mweb2,web3 uses a master template)

              web2             (tools_pages)

                      subweb1                                           (subweb1,subweb2,subweb3 also uses same master template)

                      subweb2

                     subweb3

              web3             (content_pages)

    Fo home page navigation I am uing separate macro.

    For other pages using different macro. From homepage when I move to web1 ... web 1 opens in master template ans then as u said $currentpage/../node works fantastic. But the prob is when I click for subweb1 which also uses same masterpage does not display navigation. I tried the xpath $currentpage/ansector::root/node .... this is not working. DO you suggest anything.

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies