Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Is txp:if_plugin version attribute semver compatible?
Hi!
I’m thinking about packaged themes now that the theme support is close to being rolled into Textpattern 4.7. Specifically how themes can be enhanced with plugins.
What I don’t want to do is force the WordPress-like behaviour of making users install copious plugins in oder to get a theme to work – that behaviour leads to broken themes and security holes when plugins aren’t kept up-to-date or aren’t well written in the first place. In fact I’m keen that Textpattern themes work on a basic level without any plugins at all.
However, I am in favour of progressively enhancing themes depending on if certain plugins are installed. Which rather ramblingly leads me to my question:
We have the tag <txp:if_plug>
which allows for checking whether a plugin is installed and can do stuff conditionally when the plugin is indeed install – which is great. However, the version
attribute for that tag; does it support semantic versioning? For example if I use…
<txp:if_plugin name="etc_pagination" version="0.5">
...stuff here...
</txp:if_plugin>
…then does that recognise 0.5.2
for example as meeting that criteria, or does it try to look for exact 0.5
only and flip out when it sees 0.5.2
? That is quite fundamental to themes working as I intend – we need it to be semver compatible.
Let me know. If it does then I can simply update the tag doc page to document that fact. If not then I’d really like it to be fixed.
Offline
Re: Is txp:if_plugin version attribute semver compatible?
The tag uses version_compare which is pretty much semver compliant (although it doesn’t state so in the PHP docs, so maybe there are corner cases). We should be good to go here. Try it out with any installed plugin by specifying any lower version number and see what happens.
However, I doubt it’s clever enough to figure major/minor dependencies. If you say that a plugin must be “1.2” it’ll render contained content if the plugin is 1.2, 1.2.1, 1.2.2, 1.2.3-beta, 1.3, 1.4, 1.5, 2.0, 2.1, 3.0, … The point is, it won’t stop at the “current stable branch” but will dutifully allow you to show content if the version is anything greater than or equal to the version specified in the tag.
Last edited by Bloke (2017-10-31 11:22:18)
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
Re: Is txp:if_plugin version attribute semver compatible?
Bloke wrote #307582:
However, I doubt it’s clever enough to figure major/minor dependencies. If you say that a plugin must be “1.2” it’ll render contained content if the plugin is 1.2, 1.2.1, 1.2.2, 1.2.3-beta, 1.3, 1.4, 1.5, 2.0, 2.1, … The point is, it won’t stop at the “current stable branch” but will dutifully allow you to show content if the version is anything greater than the version specified in the tag.
That’s fine, as long as it’s >= 0.5
that works for me. If plugin authors introduce breaking changes between versions (hopefully not, but does happen sometimes) then the theme can be updated for that.
Offline
Re: Is txp:if_plugin version attribute semver compatible?
Yep, it works. Just tried 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
Re: Is txp:if_plugin version attribute semver compatible?
philwareham wrote #307581:
[…] I am in favour of progressively enhancing themes depending on if certain plugins are installed […]
That’s also my way of thinking about themes.
Bloke wrote #307582:
The tag uses version_compare which is pretty much semver compliant (although it doesn’t state so in the PHP docs, so maybe there are corner cases). We should be good to go here.
Good to know!
Offline
Re: Is txp:if_plugin version attribute semver compatible?
OK, I’ve updated the if_plugin tag doc to reflect this.
Offline