Ok, I think I have it here. Not as elegant as John's, but for some reason current.siblings returns an empty array. I simply found the page's parent  and then the children, those are siblings, right? I am sure there is a better way to do this, but here is the code:

    tag "next_page" do |tag|
      current = tag.locals.page
      parent = tag.locals.page.parent
      by = tag.attr['by'] || 'title'
      siblings = parent.children.sort_by { |page| page.attributes[by] }
      index = siblings.index(current)
      next_page = siblings[index + 1]
      if next_page
        tag.locals.page = next_page
        tag.expand
      end
    end
   
    tag "prev_page" do |tag|
      current = tag.locals.page
      parent = tag.locals.page.parent
      by = tag.attr['by'] || 'title'
      siblings = parent.children.sort_by { |page| page.attributes[by] }
      index = siblings.index(current)
      prev_page = siblings[index - 1]
      if prev_page
        tag.locals.page = prev_page
        tag.expand
      end
    end

Still has a few problems, like showing the last link on the first page, but these are easily overcome.

Keith Bingman

On Aug 23, 2006, at 9:04 AM, Keith Bingman wrote:

John, 

I am having a few problems with this. First of all, 'next' is a reserved word. Changed that to 'next_link', but I am still getting a nil object for siblings. For some reason it is not finding any. This is with Radiant 0.5.2, any help appreiciated.

Keith Bingman

On Aug 22, 2006, at 10:46 PM, John W. Long wrote:

    tag "next" do |tag|
      current = tag.locals.page
      by = tag.attr['by'] || 'title'
      siblings = current.siblings.sort_by { |page| page.attributes[by] }
      index = siblings.index(current)
      next = siblings[index + 1]
      if next
        tag.locals.page = next
        tag.expand
      end
    end

_______________________________________________
Radiant mailing list

_______________________________________________
Radiant mailing list
Radiant@lists.radiantcms.org
http://lists.radiantcms.org/mailman/listinfo/radiant

Reply via email to