|
View:
New views
5 Messages
—
Rating Filter:
Alert me
|
|
|
Yeilding SnippetsI would like to share an idea that I thought would make snippets even
more useful. Rather than always calling a snippet as a single, self-closing tag: <r:snippet name="my-snip"/> You could call it as a pair of tags, with content in between: <r:snippet name="my-snip"> <p>Lorem ipsum dolor sit amet...</p> </r:snippet> The snippet itself could optionally call <r:yeild/>. If this tag occurs anywhere in the snippet, it would be replaced with the content appearing between the open/close tags which call the snippet. An example: <div class="top-left"> <div class="top-right"> <div class="bottom-left"> <div class="bottom-right"> <r:yeild/> </div> </div> </div> </div> In this case, the `<r:snippet>` opening tag would correspond to the four opening div tags, and the `</r:snippet>` closing tag would correspond to the four closing div tags. I have thought about achieving the same markup by writing two separate snippets, and calling from my layout: <r:snippet name="open-four-divs"> <p>Lorem ipsum dolor sit amet...</p> <r:snippet name="close-four-divs"> But it just looks and feels so wrong! I'd like to hear what you think about the idea. Could you see a use for it? Would it be difficult to implement? Does Radiant already do this, and I just didn't realise? Cheers, Drew _______________________________________________ Radiant mailing list Post: Radiant@... Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant |
|
|
Re: Yeilding SnippetsAndrew,
You would need to capture the contents of the <r:snippet /> tag before rendering the snippet, either using tag.block or tag.expand and saving it in a local. Then your <r:yield /> tag would emit that local. Sean Andrew Neil wrote: > I would like to share an idea that I thought would make snippets even > more useful. > > Rather than always calling a snippet as a single, self-closing tag: > > <r:snippet name="my-snip"/> > > You could call it as a pair of tags, with content in between: > > <r:snippet name="my-snip"> > <p>Lorem ipsum dolor sit amet...</p> > </r:snippet> > > The snippet itself could optionally call <r:yeild/>. If this tag > occurs anywhere in the snippet, it would be replaced with the content > appearing between the open/close tags which call the snippet. > > An example: > > <div class="top-left"> > <div class="top-right"> > <div class="bottom-left"> > <div class="bottom-right"> > <r:yeild/> > </div> > </div> > </div> > </div> > > In this case, the `<r:snippet>` opening tag would correspond to the > four opening div tags, and the `</r:snippet>` closing tag would > correspond to the four closing div tags. > > I have thought about achieving the same markup by writing two separate > snippets, and calling from my layout: > > <r:snippet name="open-four-divs"> > <p>Lorem ipsum dolor sit amet...</p> > <r:snippet name="close-four-divs"> > > But it just looks and feels so wrong! > > I'd like to hear what you think about the idea. Could you see a use > for it? Would it be difficult to implement? Does Radiant already do > this, and I just didn't realise? > > Cheers, > > Drew > _______________________________________________ > Radiant mailing list > Post: Radiant@... > Search: http://radiantcms.org/mailing-list/search/ > Site: http://lists.radiantcms.org/mailman/listinfo/radiant > > _______________________________________________ Radiant mailing list Post: Radiant@... Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant |
|
|
Re: Yeilding SnippetsSean, thanks for your reply. I thought there would be more to it than
that, but you made it sound easy, so I gave it a go. Here is the ticket: http://dev.radiantcms.org/radiant/ticket/611 http://dev.radiantcms.org/radiant/attachment/ticket/611/enable_snippets_as_double_tag_with_yield.diff > You would need to capture the contents of the <r:snippet /> tag before > rendering the snippet, either using tag.block or tag.expand and saving > it in a local. Then your <r:yield /> tag would emit that local. I wasn't sure how to save tag.expand in a local so that it was accessible from <r:yield/>, so I've cheated a little: snippet.content.gsub!(%r{<r\:yield\s?/?>}, tag.expand) and making <r:yield/> output nothing. It's not exactly idiomatic, but it passes the tests! Cheers, Drew _______________________________________________ Radiant mailing list Post: Radiant@... Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant |
|
|
Re: Yeilding SnippetsSomething like this:
(in your snippet tag) tag.locals.yield = tag.expand tag 'yield' do |tag| tag.locals.yield end Andrew Neil wrote: > Sean, thanks for your reply. I thought there would be more to it than > that, but you made it sound easy, so I gave it a go. Here is the ticket: > > http://dev.radiantcms.org/radiant/ticket/611 > http://dev.radiantcms.org/radiant/attachment/ticket/611/enable_snippets_as_double_tag_with_yield.diff > > >> You would need to capture the contents of the <r:snippet /> tag before >> rendering the snippet, either using tag.block or tag.expand and saving >> it in a local. Then your <r:yield /> tag would emit that local. >> > > I wasn't sure how to save tag.expand in a local so that it was > accessible from <r:yield/>, so I've cheated a little: > > snippet.content.gsub!(%r{<r\:yield\s?/?>}, tag.expand) > > and making <r:yield/> output nothing. It's not exactly idiomatic, but > it passes the tests! > > Cheers, > > Drew > _______________________________________________ > Radiant mailing list > Post: Radiant@... > Search: http://radiantcms.org/mailing-list/search/ > Site: http://lists.radiantcms.org/mailman/listinfo/radiant > > _______________________________________________ Radiant mailing list Post: Radiant@... Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant |
|
|
Re: Yeilding SnippetsThanks Sean, updated my patch:
http://dev.radiantcms.org/radiant/attachment/ticket/611/enable_snippets_as_double_tag_with_yield.2.diff Cheers, Drew On 14 Feb 2008, at 14:21, Sean Cribbs wrote: > Something like this: > > (in your snippet tag) > > tag.locals.yield = tag.expand > > > tag 'yield' do |tag| > tag.locals.yield > end > > Andrew Neil wrote: >> Sean, thanks for your reply. I thought there would be more to it than >> that, but you made it sound easy, so I gave it a go. Here is the >> ticket: >> >> http://dev.radiantcms.org/radiant/ticket/611 >> http://dev.radiantcms.org/radiant/attachment/ticket/611/enable_snippets_as_double_tag_with_yield.diff >> >> >>> You would need to capture the contents of the <r:snippet /> tag >>> before >>> rendering the snippet, either using tag.block or tag.expand and >>> saving >>> it in a local. Then your <r:yield /> tag would emit that local. >>> >> >> I wasn't sure how to save tag.expand in a local so that it was >> accessible from <r:yield/>, so I've cheated a little: >> >> snippet.content.gsub!(%r{<r\:yield\s?/?>}, tag.expand) >> >> and making <r:yield/> output nothing. It's not exactly idiomatic, but >> it passes the tests! >> >> Cheers, >> >> Drew >> _______________________________________________ >> Radiant mailing list >> Post: Radiant@... >> Search: http://radiantcms.org/mailing-list/search/ >> Site: http://lists.radiantcms.org/mailman/listinfo/radiant >> >> > > _______________________________________________ > Radiant mailing list > Post: Radiant@... > Search: http://radiantcms.org/mailing-list/search/ > Site: http://lists.radiantcms.org/mailman/listinfo/radiant _______________________________________________ Radiant mailing list Post: Radiant@... Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant |
| Free Forum Powered by Nabble | Forum Help |