Textpattern CMS support forum

You are not logged in. Register | Login | Help

#21 2016-07-26 12:32:58

gomedia
Plugin Author
Registered: 2008-06-01
Posts: 1,225
Website

Re: RFC: <txp:if_body> tag

Bloke wrote #300405:

Just an idea.

Sounds like a great idea to me … code readability, consistency between tags and the provision of basic tools of the trade, and to carry on the conversation from Variable trim attribute? – global attributes: trim, class, html_id, wraptag etc etc.

Offline

#22 2016-07-26 12:57:43

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 8,611
Website

Re: RFC: <txp:if_body> tag

gomedia wrote #300407:

global attributes: trim, class, html_id, wraptag etc etc.

Without trying to sideline this thread too much, remember that at the parser level these proposed attributes would apply equally to conditional tags as they do to regular tags. The notion of wraptag, class, html_id, etc. throws up some interesting situations on conditionals:

<txp:images>
   <txp:if_first txp:wraptag="div" txp:class="first-image">
      <txp:image />
   <txp:else />
      <txp:thumbnail />
   </txp:if_first>
</txp:images>

Would that only apply the wraptag and class around the image (i.e. the true branch) or to the thumbnail in the false branch as well? It could be argued that it’s a logic error to apply it to anything but the true condition.

Ponder…


The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#23 2016-07-26 13:15:49

gomedia
Plugin Author
Registered: 2008-06-01
Posts: 1,225
Website

Re: RFC: <txp:if_body> tag

Bloke wrote #300410:

It could be argued that it’s a logic error to apply it to anything but the true condition.

I would say that it should apply to anything that’s generated inside <txp:if_first>...</txp:if_first>. If you just want to wrap the TRUE content – put a wraptag on the <txp:image /> tag.

If the conditional was called test_first we wouldn’t be pondering at all!

Offline

#24 2016-07-26 13:35:50

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 8,611
Website

Re: RFC: <txp:if_body> tag

gomedia wrote #300412:

I would say that it should apply to anything that’s generated inside <txp:if_first>...</txp:if_first>. If you just want to wrap the TRUE content – put a wraptag on the <txp:image /> tag.

True dat. It’s just something to be aware of as we explore the notion of global attributes.


The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#25 2016-07-26 21:44:06

NicolasGraph
Plugin Author
From: France
Registered: 2008-07-24
Posts: 860
Website

Re: RFC: <txp:if_body> tag

Bloke wrote #300405:

Shortening if_custom_field to if_field would be fine by me, obviously retaining the old tag for backwards compatibility. But replacing all the other conditionals with it? I don’t know. If nothing else, it’s a lot of upheaval in terms of documentation to update everything to use the proposed tag.

That would require changes but I think it would be easier to document in the future and would avoid eternal requests about if_title, if_body, both, or about any future field. When a bug is as handy as the one told about <txp:if_custom_field>, it should become a feature… If <txp:if_field> would be more than just a bug, we could have only one tag for all fileds; we could deprecate <txp:if_article_image>, <txp:if_excerpt> and others and remove them in a future version.

We’ve introduced more if_first_* and if_last_* tags in 4.6 to align them with other things. A good idea? Not sure. But I’m not feeling positive about etc’s proposed if_position tag. However, I would be in favour of a pair of tags instead:

  • <txp:if_first> ... </txp:if_first>
  • <txp:if_last> ... </txp:if_last>

Those could default to the current context, e.g. if inside an images tag it would perform the same action as if_first_image / if_last_image. For nested conditionals or where you wanted to break out of the default context, a suitable attribute could allow you to do so, e.g.:

<txp:images>…

Just an idea.

Sure, <txp:if_first> and <txp:if_last> could be great; <txp:if_position> would be interesting if we could check for any position like <txp:if_position position="3">.
I also agree about the current context by default, and I’m not even sure that it is necessary to add an attribute to change that; I’m ok with the following (and it seems more clear too me — for now at least):

Your code:

<txp:images>

   <txp:if_first>
      First image: <txp:image />
   </txp:if_first>

   <txp:if_first type="article">
      <txp:excerpt />
   <txp:else />
      <txp:image_info />
   </txp:if_first>

</txp:images>

Mine:

(<txp:article>)

    <txp:images>
        <txp:if_first>
            First image: <txp:image />
        </txp:if_first>
    </txp:images>

    <txp:if_first>
        <txp:excerpt />
    <txp:else />
        <txp:images>
            <txp:image_info />
        <txp:images>
    </txp:if_first>

(</txp:article>)
gomedia wrote #300412:

I would say that it should apply to anything that’s generated inside <txp:if_first>...</txp:if_first>. If you just want to wrap the TRUE content – put a wraptag on the <txp:image /> tag.

Seems logical to me too, even it was not obvious at the first read.

Last edited by NicolasGraph (2016-07-28 07:37:52)


Nicolas
Follow me on Twitter and GitHub!
Multiple edits are usually to correct my frenglish…

Offline

#26 2016-07-27 07:08:36

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 8,611
Website

Re: RFC: <txp:if_body> tag

NicolasGraph wrote #300418:

<txp:if_position> would interesting if we could check for any position like <txp:if_position position="3">.

Absolutely. Very handy.

I’m not even sure that it is necessary to add an attribute to change [context]; I’m ok with the following <snip>

OK, but your code doesn’t do the same as mine. Yours repeats the first image caption in the second block, and, crucially, isn’t as efficient as it requires repeating the images call. In this case it probably doesn’t require a second trip to the database but with other tags it might. There’d be no requirement to use the context attribute as it’d do what you expect most of the time, but it’d be there if you need it.


The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#27 2016-07-27 09:38:40

NicolasGraph
Plugin Author
From: France
Registered: 2008-07-24
Posts: 860
Website

Re: RFC: <txp:if_body> tag

Bloke wrote #300420:

OK, but your code doesn’t do the same as mine. Yours repeats the first image caption in the second block…

Right! :-/

…and, crucially, isn’t as efficient as it requires repeating the images call. In this case it probably doesn’t require a second trip to the database but with other tags it might. There’d be no requirement to use the context attribute as it’d do what you expect most of the time, but it’d be there if you need it.

Yes, that’s a good argument.
This context attribute just changes the way I see contexts (as something defined by Txp), I probably need to change my mind.


Nicolas
Follow me on Twitter and GitHub!
Multiple edits are usually to correct my frenglish…

Offline

Board footer

Powered by FluxBB