# Using a dynamic sub-navigation

**URL:** <https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758>\
**Category:** Radiant CMS\
**Created:** [August 22, 2007, 10:20pm UTC](https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758 "2007-08-22T22:20:09Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![travisbell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/96bed5/32.png) [@travisbell](https://www.ruby-forum.com/u/travisbell)\
**Post date:** [August 22, 2007, 10:20pm UTC](https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758/1 "2007-08-22T22:20:09Z")

</div>

Hey guys,

I have some pages with sub pages. What I’d like is to have one  
snippet that I can use on the top-level pages and sub pages for a  
single dynamic sub navigation.

The general functionality works with \<r:children:each\> but once I go  
2 pages deep, there are no sub pages so it breaks (obviously).

Is there either another tag OR some way of telling \<r:children:each\>  
to only look based off of the parent folder?

Basic page functionality would be like so:

Thanks!!

–  
Travis B.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![travisbell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/96bed5/32.png) [@travisbell](https://www.ruby-forum.com/u/travisbell)\
**Post date:** [August 22, 2007, 10:32pm UTC](https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758/2 "2007-08-22T22:32:09Z")

</div>

> -----Original Message-----  
> From: Travis B.  
> Sent: Wednesday, August 22, 2007 4:18 PM  
> Subject: [Radiant] Using a dynamic sub-navigation…
> 
> The general functionality works with \<r:children:each\> but once I go  
> 2 pages deep, there are no sub pages so it breaks (obviously).

\<r:find url="/articles/"\>

- 

That builds a menu of all of the children of the /articles/ page.

Damien McKenna  
Web D.  
The LIMU Company

---

<div class="post-metadata">

**Author:** ![travisbell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/96bed5/32.png) [@travisbell](https://www.ruby-forum.com/u/travisbell)\
**Post date:** [August 23, 2007, 12:28am UTC](https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758/3 "2007-08-23T00:28:26Z")

</div>

Heh, FYI in my last email, the hardcoded page should have been  
“articles” not “about” 😉 My bad.

–  
Travis B.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![travisbell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/96bed5/32.png) [@travisbell](https://www.ruby-forum.com/u/travisbell)\
**Post date:** [August 23, 2007, 12:15am UTC](https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758/4 "2007-08-23T00:15:25Z")

</div>

What if, instead of having to hardcode the “about” page, it was  
possible for it to just pick up it’s parent? Therefore making it  
truly dynamic instead of making it only dynamic for the “about” page?

Any ideas?

–  
Travis B.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![travisbell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/96bed5/32.png) [@travisbell](https://www.ruby-forum.com/u/travisbell)\
**Post date:** [August 23, 2007, 7:22pm UTC](https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758/5 "2007-08-23T19:22:18Z")

</div>

OK, let’s take a slightly different approach.

Seems the best way I can get a dynamic sub-nav is by creating a new  
\<r:if\_url\> for each section like this:

\<r:if\_url matches="/team/"\>  
\<r:find url="/team/"\>

- 

This work, albeit a little lame, but it’s the best I can it seems we  
can do… here’s one last question though…

Is there a way I could add a way to detect if I’m on a selected page,  
then to say, add class=“selected” just like the \<r:navigation\> tag  
(the \<r:here\> option)?

At first I thought it would be sweet to essentially embed the  
\<r:children\> tag inside the \<r:navigation\> tag (this would create a  
truly dynamic navigation) but it’s not built to do this.

Any other ideas out there?

Thanks guys!

–  
Travis B.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![travisbell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/96bed5/32.png) [@travisbell](https://www.ruby-forum.com/u/travisbell)\
**Post date:** [August 24, 2007, 12:35am UTC](https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758/6 "2007-08-24T00:35:14Z")

</div>

Hey Ryan, thanks for the link.

Let’s say I have this rendering sub-pages for a nav…

- 

How could I employ your code to render something with the

- which  
page is loaded gets,

```
  <li><r:link class="selected" /></li>

```

appended to it? This is what I am not sure about…

–  
Travis B.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![travisbell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/96bed5/32.png) [@travisbell](https://www.ruby-forum.com/u/travisbell)\
**Post date:** [August 24, 2007, 2:17am UTC](https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758/7 "2007-08-24T02:17:23Z")

</div>

Travis,

\<r:nav /\> will automatically attach the class “current” to the

-   
tag of the current page in the hierarchy:

> - [A Sub Page](https://www.ruby-forum.com/a_page/a_sub_page/)

Or, you could use \<r:if\_self /\> like this:

\<r:children:each\>  
\<li\<r:if\_self\> class=“current”\</r:if\_self\>\>\<r:link /\>

  
\</r:children:each\>

On Aug 23, 2007, at 5:33 PM, Travis B. wrote:

> Travis B. \> navigation\_tags/ \> 
> \> \>\> \>\> 
> \>\> (the option)? \>\> Travis B. \>\>\>\> Sent: Wednesday, August 22, 2007 4:18 PM \>\>\> \>\>\> Radiant mailing list \> \> Post: removed\_email\_address@domain.invalid Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant

* * *

Ryan H.  
Art of Mission, Inc.  
3720 Gattis School Rd #800 PMB 245  
Round Rock, TX 78664

800-722-1492

[www.artofmission.com](http://www.artofmission.com)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![travisbell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/96bed5/32.png) [@travisbell](https://www.ruby-forum.com/u/travisbell)\
**Post date:** [August 23, 2007, 11:43pm UTC](https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758/8 "2007-08-23T23:43:10Z")

</div>

I made an extension that might work for you:  
[http://svn.artofmission.com/svn/plugins/radiant/extensions/](http://svn.artofmission.com/svn/plugins/radiant/extensions/)  
navigation\_tags/

This tag:  
\<r:nav /\>

Outputs something like this:

- [About](https://www.ruby-forum.com/about/)
- [A Page](https://www.ruby-forum.com/a_page/)
  - [A Sub Page](https://www.ruby-forum.com/a_page/a_sub_page/)
  - [Another Sub Page](https://www.ruby-forum.com/a_page/another_sub_page)
[](https://www.ruby-forum.com/a_page/another_sub_page)
[](https://www.ruby-forum.com/a_page/another_sub_page)
[](https://www.ruby-forum.com/a_page/another_sub_page)
[](https://www.ruby-forum.com/a_page/another_sub_page)
[ 

Or you can build your own using the tags:  
\<if\_children /\>  
\<if\_self /\>  
\<if\_ancestor\_or\_self /\>

 ](https://www.ruby-forum.com/a_page/another_sub_page)

[See](https://www.ruby-forum.com/a_page/another_sub_page)[http://svn.artofmission.com/svn/plugins/radiant/extensions/](http://svn.artofmission.com/svn/plugins/radiant/extensions/)  
navigation\_tags/lib/navigation\_tags.rb for details.

On Aug 23, 2007, at 12:20 PM, Travis B. wrote:

> ```
> <li><r:link/></li>
> 
> ```
> 
> ## then to say, add class=“selected” just like the \<r:navigation\> tag
> 
> > > From: Travis B.  
> > > \</r:children:each\>  
> > > Radiant mailing list  
> > > Post: removed\_email\_address@domain.invalid  
> > > Search: [http://radiantcms.org/mailing-list/search/](http://radiantcms.org/mailing-list/search/)  
> > > Site: [http://lists.radiantcms.org/mailman/listinfo/radiant](http://lists.radiantcms.org/mailman/listinfo/radiant)
> 
> * * *
> 
> Radiant mailing list  
> Post: removed\_email\_address@domain.invalid  
> Search: [http://radiantcms.org/mailing-list/search/](http://radiantcms.org/mailing-list/search/)  
> Site: [http://lists.radiantcms.org/mailman/listinfo/radiant](http://lists.radiantcms.org/mailman/listinfo/radiant)

* * *

Ryan H.  
Art of Mission, Inc.  
3720 Gattis School Rd #800 PMB 245  
Round Rock, TX 78664

800-722-1492

[www.artofmission.com](http://www.artofmission.com)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![travisbell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/96bed5/32.png) [@travisbell](https://www.ruby-forum.com/u/travisbell)\
**Post date:** [August 24, 2007, 5:58pm UTC](https://www.ruby-forum.com/t/using-a-dynamic-sub-navigation/112758/9 "2007-08-24T17:58:22Z")

</div>

Hot shit!

😛

–  
Travis B.  
removed\_email\_address@domain.invalid
