Use a CSS selector to wrap your content with HTML tags.
echo Selecta::wrap('h1.welcome', 'Hello, world');
will output:
<h1 class="welcome">Hello, world</h1>
Sometimes you need to output a quick bit of HTML at a point where it's really inconvenient to use a full template. Creating strings of HTML in your code is horrible, so this something a bit more humane.
Currently supports IDs, classes and attribute selectors.
echo Selecta::wrap('ul.list li', 'So listy');
will output:
<ul class="list"><li>So listy</li></ul>
echo Selecta::wrap('div#contact', 'Call me');
will output:
<div id="contact">Call me</div>
echo Selecta::build('input[type=radio][name=color][value=blue]:checked');
will output:
<input type="radio" name="color" value="blue" checked>
Currently supports :checked
and :disabled
pseudo-classes.
All these can be combined and stacked:
echo Selecta::build('form#contact div.field input[type=text][required]');
will output (indented for clarity):
<form id="contact">
<div class="field">
<input type="text" required>
</div>
</form>
The following methods are available:
Selecta::wrap(selector, contents)
will wrap the contents with the tags created by the selector.
Selecta::open(selector)
will open the tags created by the selector.
Selecta::close(selector)
will close the tags created by the selector. Note that the order of tags is reversed - you can use the same selector string with open()
and close()
to get valid tag pairs.
Selecta::build(selector, contents, open, close)
will do everything - build the tags, optionally wrap the contents, optionally open and optionally close the tags.
Don't have a template to hand but need to output some structural markup?
echo Selecta::open('section.sidebar div');
echo $CMS->display_all_my_weird_sidebar_junk();
echo Selecta::close('section div');