Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
#1 2011-11-01 23:42:56
- gomedia
- Plugin Author
- Registered: 2008-06-01
- Posts: 1,373
adi_join - Join stuff together
Summary
adi_join is a simple little thing to join stuff together. Useful for creating comma-separated lists of data.
See the help supplied with the plugin, or have a look online. You can download the latest version from here.
Usage
Simply put the adi_join tag around the output you need joined:
<txp:adi_join>
...statement 1...
...statement 2...
...statement 3...
</txp:adi_join>
and, by default, the result will be:
statement 1 output, statement 2 output, statement 3 output
adi_join takes the hassle out of worrying about if there’s some data & whether a comma is needed.
Examples
To output article categories as a list:
<txp:adi_join>
<txp:category1 />
<txp:category2 />
</txp:adi_join>
If both categories are set, then the output is:
category 1 value, category 2 value
To output a series of variables separated by commas but with an ampersand at the end:
<txp:adi_join last_separator=" & ">
<txp:variable name="var1" />
<txp:variable name="var2" />
<txp:variable name="var3" />
</txp:adi_join>
If all variable are non-blank then the output will be:
var1 value, var2 value & var3 value
And even if you just want to prevent a widow on something:
<txp:adi_join no_widow="1">
<txp:site_slogan />
</txp:adi_join>
will output:
My pithy slogan
Requirements
Simple enough to work in most versions of Textpattern.
Version history
- 0.3
- new attributes: ‘delimiter’, ‘ignore’ (for pieman)
- new attribute: ‘unique’
- TXP 4.6 tag registration
- 0.2
- new attributes: prefix, suffix, itemtag (for jakob)
- new attribute: sort (for milosevic)
- new attributes: ‘label’, ‘labeltag’, ‘label_class’, ‘label_id’
- 0.1
- initial release
Feedback
Comments are most welcome.
Spread the love
If you find this plugin useful and would like a warm and fuzzy feeling to go with it, please consider donating to the Textpattern development team.
Last edited by gomedia (2015-06-15 12:38:17)
Offline
Re: adi_join - Join stuff together
Handy! That cuts out a lot of the if_first / smd_counter / nested if_category gymnastics. Nice that you can define a custom normal and end separators, e.g. for chaining &urlvars or outputting csv syntax or for using “or” instead of “and” or “, and” with a comma to please our US colleagues :-)
What about an option to wrap each contained item in something, e.g. “quotes”, (brackets) or <xml>
open and closing tags </xml>
? Currently I use rah_repeat or smd_each for this.
TXP Builders – finely-crafted code, design and txp
Offline
#3 2011-11-02 11:37:41
- gomedia
- Plugin Author
- Registered: 2008-06-01
- Posts: 1,373
Re: adi_join - Join stuff together
jakob wrote:
Handy!
Yes, it’s one of those simple things that’s fiddly to achieve.
What about an option to wrap each contained item in something, e.g. “quotes”, (brackets) or
<xml>
open and closing tags</xml>
? Currently I use rah_repeat or smd_each for this.
Yep, that can be done. WRT wrap tags, do you want <xml>(item)</xml>
or (<xml>item</xml>)
?
Offline
Re: adi_join - Join stuff together
gomedia wrote:
Yep, that can be done. WRT wrap tags, do you want
<xml>(item)</xml>
or(<xml>item</xml>)
?
Gulp, not sure I follow. I just meant wrap the individual items with something that could conceivably have a different opening and closing forms. I guess if you those are user-definable, you can determine the order yourself if you need double wrappers…
TXP Builders – finely-crafted code, design and txp
Offline
#5 2011-11-02 19:41:33
- milosevic
- Member
- From: Madrid, Spain
- Registered: 2005-09-19
- Posts: 390
Re: adi_join - Join stuff together
Congrats, nice and simple! I will love to see a “sort” param for sorting de output (asc, desc)
<txp:rocks/>
Offline
#6 2011-11-02 20:14:18
- gomedia
- Plugin Author
- Registered: 2008-06-01
- Posts: 1,373
Re: adi_join - Join stuff together
jakob wrote:
Gulp, not sure I follow.
I was wondering if you wanted any wrapping brackets or quotes, inside or outside the wrapping <xml></xml> tags.
Offline
#7 2011-11-02 20:14:53
- gomedia
- Plugin Author
- Registered: 2008-06-01
- Posts: 1,373
Re: adi_join - Join stuff together
milosevic wrote:
Congrats, nice and simple! I will love to see a “sort” param for sorting de output (asc, desc)
I’ll look into it.
Offline
Re: adi_join - Join stuff together
jakob wrote:
Gulp, not sure I follow.
gomedia wrote:
I was wondering if you wanted any wrapping brackets or quotes, inside or outside the wrapping <xml></xml> tags.
I am sure Jabob would like to have the Common Presentational Attributes. Not sure what else could be added :)
Get all online mentions of Textpattern via OPML subscription: TXP Info Sources: Textpattern RSS feeds as dynamic OPML
Offline
Re: adi_join - Join stuff together
<txp:adi_join separator="">
very useful for working with display=inline-block
css mode and <txp:variables>
in if_data mode
Thanks Adi
Offline
#10 2011-12-12 22:27:05
- gomedia
- Plugin Author
- Registered: 2008-06-01
- Posts: 1,373
Re: adi_join - Join stuff together
Version 0.2 ready for download:
- new attributes: prefix, suffix, itemtag (for jakob)
- new attribute: sort (for milosevic)
- new attributes: ‘label’, ‘labeltag’, ‘label_class’, ‘label_id’
Offline
Re: adi_join - Join stuff together
Neat idea Adi
Here’s a snag I just got caught on on:
I want to return a comma separated list of permlinks, but the link text could be either the txp:title
or a txp:custom_field
value (if it exists) – meaning I can’t just use <txp:permlink />
.
So, after resolving the link text into a variable I’m trying to join instances of <a href="<txp:permlink />"><txp:variable name="book_title" /></a>
using <txp:adi_join last_separator=" & ">
.
From what I get back it seems like the plugin is treating each <txp:tag />
as an item. So there are commas where they shouldn’t be:
<a href="/permlink">, Title, </a>, <a href="/permlink">, Title, </a> & <a href="/permlink">, Title, </a>
.
I guess this is a fairly common use case. Would it be possible to add attributes to specify what kind of element constitutes an item. eg. itemtype="html/text" item="a"
? Or something…
Offline
Re: adi_join - Join stuff together
pieman wrote:
From what I get back it seems like the plugin is treating each
<txp:tag />
as an item.
Not exactly. Adi_join doesn’t split items based on tags, but line breaks (single LF, CRs do not matter). I would make sure every item is written to single line, and that <txp:variable name="book_title" />
(and title, used custom field) doesn’t contain any line breaks (LF).
Last edited by Gocom (2011-12-21 22:19:47)
Offline