Children + Siblings


#1

Hi,

I’m trying to show a side-menu with a section, so, for example:

  • Welcome
  • Items Intro
    ++ Item A
    ++ Item B

I’d like to show a list with “Items Intro, Item A, and Item B” on the
Items Intro, Item A, and Item B pages- with my current page highlighted.

At present, I’m doing something similar to:

<r:children:each>
<li <r:if_self> class=“selected”</r:if_self><r:unless_self>
class=“item”</r:unless_self>>
<r:title />

</r:children:each>

But, as soon as I click on Item A, or Item B, they lose the items
(because those are obviously now siblings of the current page). Is
there anyway to attempt to find both children and perhaps siblings, or
a clever way to avoid having to duplicate the items for each page?

Thanks!

Paul


#2

On Mon, Jan 12, 2009 at 2:43 PM, Paul I. removed_email_address@domain.invalid wrote:

Intro, Item A, and Item B pages- with my current page highlighted.

I believe that if you wrap that snippet with <r:find
url="/items-intro/">…</r:find> you should be good.

~Nate


#3

Yep, worked perfectly. Thank you!


#4

On 12 Jan 2009, at 20:43, Paul I. wrote:

<r:children:each>

<li class="selected" class="item">

I think what you need to do is wrap the above section of code in a
<r:find/> tag. If the “Items Intro” has the url: /items you would do
something like:

<r:find url="/items">
<r:children:each>
<li <r:if_self> class=“selected”</r:if_self><r:unless_self>
class=“item”</r:unless_self>>
<r:title />

</r:children:each>
</r:find>

That way, it will always find the children of the “Items intro” page,
even if the page you are on is a child of “Items intro”.

You might need to tinker with the if/unless_self conditions to apply
the appropriate classes.

If you find yourself wanting to work with sibling pages, instead of
child pages, then check out the sibling_tags extension:

http://github.com/nelstrom/radiant-sibling-tags-extension/tree/master

This is useful, for example, if you want to provide “Next” and
“Previous” links.

Hope this helps,
Drew