Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
smd_wrap: conditionally wrap stuff with tags and labels
Have you ever been in any of the following Textpattern situations:
- Wanted to use
wraptag
/label
on a tag that didn’t have it. - Wished you could only wrap a tag around the content if the entire tag block returned some data.
- Would love to display some alternative
<txp:else />
message if the content didn’t exist. - Regularly use plugins such as chh_if_data, adi_wrap, rah_function, pax_grep, upm_textile, smd_each, or rah_repeat.
- Tried to parse data from a feed or inject stuff into the database only to find its format needed to be altered.
If the answer to one or more of the above is yes, then you may like to open the door to this velociraptor in wolf’s clothing that does all the above (and more) in a compact footprint. Spawned from the idea behind the excellent adi_wrap, this plugin goes a step further and allows you to chain transforms together that alter the contained data. Built-in transforms include:
- trim / append
- change case
- linkify
- sanitize / escape
- format date & time
- strip tags
- split / combine
- find / replace
- process with Textile
And if those aren’t enough you can create your own by telling the plugin to pass your data through any number of Forms. At any time, if the content you want to wrap returns nothing, the plugin does nothing so it’s ideal for wrapping round {replacement}
tags for other smd plugins like smd_bio, smd_xml, and smd_query to transform data prior to input / output.
Download the plugin and send any feedback, good or bad, my way. Happy clappy wrappy.
Revision history
————————
All available versions and changes are listed here. Each entry indexes the relevant post(s) in the thread to learn about the features.
- 22 Nov 2011 | 0.1.0 | Initial release
- 21 Mar 2012 | 0.2.0 | Works like chh_if_data by default. Use
<txp:smd_wrap_all>
for v0.10 behaviour ; Add form /<txp:yield />
support ; safer<txp:smd_wrap_info />
tag instead of{smd_wrap_it}
; Add time transform as a convenience (same as date) ; Add raw and encode sanitization transforms (thanks, maniqui) ; Add currency, round and number transforms (thanks, jakob, milosevic) - 22 Jan 2020 | 0.3.0 | Register tags ; Add multi-byte support (Thanks, summer) ; Use more intelligent title case transform (Thanks, Kroc Camen) ; Silence has_data warning
Last edited by Bloke (2011-11-24 10:44:42)
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
Online
Re: smd_wrap: conditionally wrap stuff with tags and labels
Just in case anyone should have any doubts, this is the bees knees!
TXP Builders – finely-crafted code, design and txp
Offline
#3 2011-11-23 20:34:49
- uli
- Moderator
- From: Cologne
- Registered: 2006-08-15
- Posts: 4,310
Re: smd_wrap: conditionally wrap stuff with tags and labels
Oh-oh, off to the sandbox with my new smd mould :)
In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links
Offline
Re: smd_wrap: conditionally wrap stuff with tags and labels
Still getting my head around this one Stef, but have realized that it’s a game changer, in’it.
Offline
Re: smd_wrap: conditionally wrap stuff with tags and labels
About to test this baby.
Consider setting an smd_warp
alias to the main function, could be helpful in case of typos. Unless you have already decided to develop smd_warp
, the plugin that will help us all to bend space-time as you do.
Offline
Re: smd_wrap: conditionally wrap stuff with tags and labels
Oh please let smd_warp be a different plugin
Offline
#7 2011-11-24 21:58:31
- net-carver
- Archived Plugin Author
- Registered: 2006-03-08
- Posts: 1,648
Re: smd_wrap: conditionally wrap stuff with tags and labels
smd_warp
is, apparently, already in use on Stef’s site.
— Steve
Offline
Re: smd_wrap: conditionally wrap stuff with tags and labels
Rats, you’ve stumbled upon my secret. smd_warp is indeed regularly used in my life. It sports tags such as <txp:infinite_improbability drive=‘128’ />, which of course takes me out for a spot of lunch at Milliways. And back in time for tea and medals.
Last edited by Bloke (2011-11-24 23:21:47)
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
Online
Re: smd_wrap: conditionally wrap stuff with tags and labels
I test this plugin in production. It accelerates the development. Very convenient. thank you Steph
A sorry observation, If I write directly.
<txp:smd_wrap wraptag="div" class="col1 bloc" transform="textile">
h1. Image of the day
<txp:image id="3"/>
_Image caption_
</txp:smd_wrap>
Parsing for <txp:image />
ok
But If I write this content in a custom field :
<txp:smd_wrap wraptag="div" class="col1 bloc" transform="textile">
<txp:custom_field name="my_custom"/>
</txp:smd_wrap>
No parsing for <txp:image />
or Textpattern tag. sniff’
I thought I found a behavior similar to <txp:body /> which analyzes textile and Textpattern tags.
Last edited by sacripant (2011-11-30 11:59:43)
Offline
Re: smd_wrap: conditionally wrap stuff with tags and labels
sacripant wrote:
No parsing for
<txp:image />
or Textpattern tag. sniff’
Try this:
<txp:custom_field name="my_custom" escape="" />
It’s probably just converting the <
and >
into entities, thus the parser doesn’t recognise it as a tag.
Last edited by Bloke (2011-11-30 12:04:09)
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
Online
Re: smd_wrap: conditionally wrap stuff with tags and labels
Incredible. replaces about six plugins I’m using and countless lines of code.
Offline
Re: smd_wrap: conditionally wrap stuff with tags and labels
Care to share some examples? I’ve used smd_wrap
in one instance only (under the guidance of Bloke) but I think that says more about my lack of imagination than anything else.
Offline