Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
add id attribute to all article tags
Hi all,
if <txp:permlink />
tag has an id="XX"
attribute that outputs the link to the specified article, couldn’t be useful to have it on other article tags like <txp:title />
?
Very similar to what ied_doArticle does
I must admit I’m not totally sure about requesting this feature, because this could lead to some Frankestein-style blocks, or also, to performance issues, or breaking TxP semantics (although this will depends on the user not being clever at using this).
Offline
Re: add id attribute to all article tags
<txp:article_custom />
has an id
attribute, so with a suitably crafted form you could do something like this: <txp:article_custom id="42" form="just-the-title" />
. In the upcoming 4.0.7 release, we will add container capabilities to several tags, so this would be further simplified (?) to <txp:article_custom id="42"><txp:title /></txp:article_custom>
.
Wouldn’t that suffice?
Offline
Re: add id attribute to all article tags
Hi wet, thanks for your reply.
Yes, I know about the first possibility you mentioned (an article_custom
tag and a form).
And about the second one, it’s good to know about it. (I’ve read about it before, when someone requested it, but can’t find the thread).
But back to the request, the reasoning behind it is: <txp:permlink id="123">Text</txp:permlink>
works without all the article_custom
hassle.
So, the request was more related to consistency between article tags.
Going back to the upcoming feature of article_custom
as a container tag, what else will be able to do if an article ID isn’t specified?
Will it iterate over the contained HTML/Txp tags?
In that case, is it posible to add a wraptag
attribute to the tag? So, for example, it will be possible to iterate thru a list of articles as <li>
and output also the <ul>
wrapping tag (only if the iteration outputs something, because if it returns empty, the ul
shouldn’t be outputted?)
Offline
Re: add id attribute to all article tags
When using article_custom as a container tag, the contained tags will be parsed instead of a form.
Consistency between tags is nice, but you can push it too far and adding an id attribute to all article related tags just causes a lot of code duplication for something that isn’t really needed that often and can be done just as well with article_custom.
Offline
Re: add id attribute to all article tags
ruud wrote:
When using article_custom as a container tag, the contained tags will be parsed instead of a form.
Cool. And will <txp:article />
also be a container tag? If yes, I think it will be very time saver to create article mark-up directly on page templates by just wrapping a bunch of article tags inside a pair of <txp:article></txp:article>
tags…
Consistency between tags is nice, but you can push it too far and adding an id attribute to all article related tags just causes a lot of code duplication for something that isn’t really needed that often and can be done just as well with article_custom.
You are right. Maybe not to all articles, but then it will become more a matter of preferences to which tags could the id attr be extended. I found it very common to do something like this:
<li><txp:permlink id="123">Article Title</txp:permlink></li>
for some custom hand-made navigation menu.
So I was thinking of being able to do this:
<li><txp:permlink id="123"><txp:title id="123" /></txp:permlink></li>
So <txp:title />
would be a candidate for me, but then other will come and have their opinions on which tags should have this attribute.
Offline
Re: add id attribute to all article tags
In that specific example, it may be faster to use article_custom, because that would use 1 query instead of 2 ;)
article and article_custom are mostly handled by the same function internally, so yes, both would work as a container tag.
For <txp:article />
you’d have the following options after this is implemented:
<txp:article> tags for both individual and list context </txp:article>
<txp:article form="individual"> tags for use in list context </txp:article>
<txp:article listform="list"> tags for use in individual context </txp:article>
<txp:article form="both" />
<txp:article form="individual" listform="list" />
<txp:article listform="list" />
<txp:article />
Only the first three are new.
Offline
Re: add id attribute to all article tags
Wow!
My brain exploded.
So, if I’m getting right #2 and #3, this one shouldn’t “work”, right?
<txp:article form="individual" listform="list">some tags</txp:article>
(with “shouldn’t work” i mean it should ignore the inside tags)
Offline
Re: add id attribute to all article tags
Correct.
Offline
Re: add id attribute to all article tags
ruud wrote:
<txp:article form="individual"> tags for use in list context </txp:article>
So, in this case, the tag will iterate (sorry if is not the correct programming word for this) over the fetched list of articles and render them using the contained tags.
I answer myself: yes, that’s the only way for this to work.
And what about the wraptag
request for <txp:article />
. Does it makes sense? I think it does.
Offline
Re: add id attribute to all article tags
r2869, could use some daring testers.
Offline
Re: add id attribute to all article tags
Could <txp:article_custom />
support multiple values for id attribute?
Like this: <txp:article_custom id="3,15,28" />
That would iterate over the form (or the contained thing on upcoming container txp:article/txp:article_custom tags) and output articles with id 3, 15, 28.
Does it make sense?
Offline
Re: add id attribute to all article tags
Would you mind testing…
In publish.php, in the doArticles function, replace:
$id = (!$id) ? '' : " and ID = '".intval($id)."'";
with:
$id = (!$id) ? '' : " and ID IN (".join(',', array_map('intval', do_list($id))).")";
Last edited by ruud (2008-05-18 08:27:27)
Offline