For new software, the awareness machine is cranked even harder. Videos. Social media campaigns. Billboards. Search Ads. Embedded video ads. The works.
Twenty years ago, the landscape was very different. There was advertising, sure, but nowhere near the scale of today. And, perhaps to celebrate the fact that Dean Allen’s newly created CMS was so small, nimble, lightweight, yet powerful – or perhaps because its creator was an eccentric genius – the fanfare surrounding the official birth of Textpattern was this:
Public Gamma 1.10 is up. I’m going to bed.
That was it; the extent of the marketing campaign. Nothing more. Nothing less. A factual statement and an indicator that the road to reach it from the numerous alpha and beta releases throughout 2001 until its naming in 2003 and public release in 2004 had been arduous, yet worth it.
Since then, Textpattern has gone from strength to strength, and still we’re innovating. True to the form of Dean’s creation, we might not release a new version every few weeks like other CMSs, and we might not make as big a deal out of them. But each release is carefully crafted, built and tested for compatibility and performance. Even upgrades from fifteen-year-old versions go smoothly.
Pages are served lightning fast. Content and its presentation are still generally separated to make long-term maintenance and design refreshes a breeze. Alongside this, we have some truly unique and world-beating features to aid iterative site changes. And the clean and snappy administration interface still remains accessible to users of assistive technology – something we’re expanding with each successive version.
As Textpattern enters its twenty-first year and we’re gearing up for the 4.9.0 release – slated to be the last of the 4.x series – we all wish it a bright future and hope it continues to be the content management system of choice for enthusiasts, developers and lovers of the written word that it’s always been.
Happy Birthday, Textpattern.
]]>If you have a Textpattern website, we recommend upgrading to Textpattern 4.8.8 to fix a reported security issue. Many thanks to Paul Ritchie at Pentest Ltd for responsibly reporting an issue relating to article preview and plugin upload functionality. We are grateful for Paul’s thorough report in outlining the issue, which allowed Textpattern developers to efficiently reproduce the issue, isolate a fix and resolve it. Versions of Textpattern prior to 4.8.8 are affected by this issue, and upgrading is highly recommended.
Pentest will be publishing an article on their site detailing the issue, we will update this post with further details when we have them.
Update: Pentest have published an article outlining the issue in more detail – Leveraging XSS to get RCE in Textpattern 4.8.7
As with all Textpattern upgrades, refer to the current Textpattern system requirements and ensure you have known-good backups of your site files and database, including all uploaded content such as images & files. Before you make any changes, please refer to the accompanying release notes in HISTORY.txt to ensure you understand what has changed in this release, along with any versions released beforehand that may have been skipped. You can check your current Textpattern version from the bottom of any page on the admin-side.
Thank you to everyone who contributed to this patch release with reporting & resolving bugs, providing & improving language translations and overall improvements to the Textpattern ecosystem. We’re grateful to all contributors offering us their expertise, time, attention, words, donations, signal boosting, evangelism, cheerleading and all other activities that fuel our progress.
Textpattern’s infrastructure and continued development is kindly supported by DigitalOcean, 1Password and BrowserStack. We are grateful for their ongoing involvement & support for Textpattern, and our global community of authors, publishers, designers and administrators. Thank you!
There is no spyware, adware, user tracking or other junk in Textpattern. We work to keep things fast, nimble, secure and ready for pretty much anything you can throw at it. You can show your appreciation by sponsoring Textpattern on GitHub or supporting Textpattern on Open Collective. Alternatively, you can donate to Team Textpattern with PayPal.
We have a friendly forum for a Textpattern sites showcase – tell us what you’ve made with Textpattern, we’d love to hear from you. Even a ‘hello!’ or ‘thanks!’ helps us to gauge how far Textpattern has travelled, so don’t be a stranger.
You can download Textpattern from textpattern.com using the following links, or from Textpattern v4.8.8 on GitHub. Please take a moment to ‘star’ Textpattern’s repositories on GitHub if they are of interest to you. This really helps us out.
Please note: to fully utilise Textpattern’s multi-site capabilities, please download the .tar.gz
archive as it includes the multi-site scaffold.
The Textpattern demo has been updated to offer Textpattern test drives in complete safety. The demo sites are rebuilt every few hours using the Textpattern auto-installer.
Textpattern 4.8 requires a minimum of PHP 5.5 as part of the system requirements, though a vendor-supported PHP version is highly recommended. At the time of writing, PHP 8.0 & PHP 8.1 have active and ongoing support. PHP 7.4 has extended security support until 28 November 2022. All PHP versions before PHP 7.4 are no longer supported by the vendor. Please refer to PHP Supported Versions for up-to-date schedules.
If you are upgrading Textpattern from a version prior to 4.8.0, please note the SimpleXML PHP extension is now required. Most PHP instances have this built-in and enabled already. Check with your web host if you have any doubts.
Please note: we will increase the minimum PHP and MySQL version requirements for Textpattern 4.9. More details will be provided in due course.
Please ensure you log out of the admin side prior to upgrade, perform and verify a full site backup (database and files, including any file/image uploads), and refer to the README.txt
file in the download archives for detailed instructions. The vast majority of Textpattern upgrades are smooth sailing and happen without incident, but on the rare occasion something does go astray it’s preferable to safely restore the known-good version from your full site backup and troubleshoot any issues while your site continues to be available.
The Textpattern 4.8.8 HISTORY.txt
outlines changes for this and previous Textpattern releases, along with their respective release dates. We recommend you read the list of changes to understand how this may affect your current sites, especially if you’re upgrading from older versions. Please note that while upgrades from very old releases of Textpattern are possible, you may need to perform a multi-stage upgrade.
If you require clarification on any aspect of the release notes, we recommend you seek advice before starting a site upgrade. The Textpattern support forum is an excellent place to start, and the Textpattern user documentation is regularly updated with examples, explanations and background information.
We have a forum thread dedicated to Textpattern 4.8.8 feedback. We gather field reports from fellow Textpattern administrators and users that may assist or guide you with upgrading.
<txp:items_count />
tag.limit
, offset
and sort
attributes.url_title
attribute to <txp:article />
and <txp:article_custom />
.range
attribute to <txp:article_image />
.date
and time
attributes to <txp:if_expired />
.calendar
attribute to <txp:posted />
and similar tags.escape
attribute.match
attribute with comparison operators.<txp:category_list />
with children
>1 attribute behaviour.escape
attribute operates at the items level in lists.UTC
is now a permitted time zone.site/admin/plugins
.aria-label
attributes for some internal links.FOUND_ROWS()
which is deprecated in MySQL 8.0.17.is_readable()
and is_file()
to file_exists()
.upgraded
and downgraded
.If you find anything not working correctly or wish to propose improvements, please file a report on GitHub. There are templates for feature requests and bug reports.
We hope you enjoy this release and it serves you, your sites and clients well!
]]>Beta releases are made available for testing as we approach the production-grade release of Textpattern. We do not currently anticipate much deviation from the changes listed below, but we are keen to receive real-world feedback from Textpattern testers, hackers, and enthusiasts before we make Textpattern 4.8.8 generally available as a production release.
We expect to make Textpattern 4.8.8 available in Q1 of 2022, pending feedback from beta release(s). This is a little later than we anticipated, and we thank you for your patience.
As with any software update, please ensure you retain file + database backups of any Textpattern instances you are upgrading, either via your hosting organisation’s control panel, or from your own recipe.
You can download Textpattern from textpattern.com or GitHub. Both locations provide the same files, along with checksums for validating your download.
To take advantage of Textpattern’s multi-site capabilities, please download the .tar.gz
archive as it includes the multi-site scaffold.
You can download Textpattern 4.8.8 beta from textpattern.com using the following links,
Please take a moment to ‘star’ Textpattern’s repositories on GitHub if they are of interest to you. This really helps us out.
Headline changes include:
limit
, offset
and sort
attributes.url_title
attribute to <txp:article />
& <txp:article_custom />
.range
attribute to <txp:article_image />
.date
and time
attributes to <txp:if_expired />
.calendar
attribute to <txp:posted />
and similar tags.escape
attribute.<txp:items_count />
tag.match
attribute with comparison operators.UTC
is now a permitted time zone.<txp:category_list />
with children
>1 attribute behaviour.escape
attribute operates at the items level in lists.We are especially interested in feedback on these areas:
We have a dedicated support thread for Textpattern 4.8.8 beta feedback where Textpattern users, experts and developers will collate and address feedback. We are grateful for all feedback, even a confirmation that your upgrade went smoothly and no issues arose. We maintain Textpattern issues at GitHub if you would like further insight into where we’re heading with this release and future work.
Thank you for your interest in Textpattern!
]]>v4.8.8-beta.1
) for public testing. Based on beta feedback and further testing, we will either release another beta (i.e. v4.8.8-beta.2
), or move to the Textpattern 4.8.8 production release (i.e. v4.8.8
). We expect Textpattern 4.8.8 to be generally available in December 2021.
This article outlines our release plan for Textpattern 4.8.8, the next instalment in the Textpattern 4.8 series.
Textpattern’s development is currently focussed on two upcoming milestones: releasing Textpattern 4.8.8 in Q4 2021, and the Textpattern 4.9 series of releases. Development work on Textpattern 4.9 is ongoing, while the flight plan for Textpattern 4.8.8 is much clearer.
Since PHP 7.0, a new minor release of PHP appears in Q4. In recent years, we’ve had:
PHP releases follow a defined roadmap of alpha, beta and release candidates. After the initial minor release (e.g. PHP 7.4.0), a patch release (e.g. PHP 7.4.1) is typically made available every 4 weeks thereafter. This provides the Textpattern development team with a schedule & framework on which we can develop, iterate, optimise and test against the changes made in PHP releases. The changes often include performance enhancements and optimisations, while maintaining backward compatibility for supported versions.
Textpattern 4.8.8 is primarily aimed at adding support for PHP 8.1.0. The PHP 8.1.0 timetable lists late November 2021 for the production release. We expect to release a beta version of Textpattern 4.8.8 around the same time. Depending on the feedback of the beta testing, we will then opt to release another beta for further examination, or move straight to the production release of Textpattern 4.8.8. This release – a second beta or the production release – be made available during December 2021.
We will announce the Textpattern beta release here on our blog, along with a call for testers to put it through the wringer. The more bugs we can squash before the production release, the better everyone’s experience will be overall. Which leads nicely onto…
We endeavour to do as much of our release planning publicly, such is the nature of collaborative open source projects like Textpattern. Accordingly, we have a Textpattern 4.8.8 release flight plan over at GitHub. This is a living document which is updated regularly, especially as we approach and start the release process. The first post in the flight plan includes our up-to-date release schedule for Textpattern 4.8.8.
As much as Textpattern 4.8.8 is focussed on adding support for the next PHP release, there are additional changes to consider. You can always see what has changed in each release by referring to to the Textpattern release notes.
Please note: the changes outlined for each release relate to what changed since the previous release. If the Textpattern instance has missed one or more updates, be sure to check all the versions in between to gauge how the sites will be affected. We aim to make upgrading Textpattern as smooth and painless as possible, but it’s important to allot time to reading release notes and making a backup of your site before embarking on any changes.
After Textpattern 4.8.8 is released, we turn our development attention to the next release. Whether this next-but-one Textpattern release will be a patch (i.e. Textpattern 4.8.9) or a minor (i.e. Textpattern 4.9.0) is not yet decided. Every Textpattern release is a big deal for us, but the minor releases are the closest we get to ‘big’ in Textpattern terms. Minor releases typically include new functionality, overhauled features and stuff to really get your teeth into.
The good news is we have been working on Textpattern 4.9 development for some time already. If we need to make Textpattern 4.8.9 to address bugs, we will. When we’re sure that Textpattern 4.8 has grown up and flown the nest, we will switch to the Textpattern 4.9 series and we’ll make it as great as it can be. Regardless of whether we need to cut a patch release – or we aim squarely at big things for a minor release – we will communicate our plans here when we know. Thank you for your continued interest in Textpattern!
]]>From v4.7.0, reliance on that resource was designed out of Textpattern completely: language Textpacks (i.e. the translated text for supported languages) ship with Textpattern in its lang
directory. This has a number of important ramifications:
Thus, the strings you have in your database when you download and install Textpattern are the only ones you’ll get. You may think that’s a bad thing… a regression in functionality. Well, yes and no. You’ll still be able to get language pack updates between releases if you wish, but there’s no real need to do so, since all the strings Textpattern needs are shipped with each release.
If you do wish to update the language pack (for example, to bring down new or altered strings in response to a change or bug fix), you perform a three-step process:
lang
directoryFar from being a regression, this gives you greater control over the process than relying on the server telling you that updates have been made; updates that may have not applied to the version you have installed, or that may adversely affect the user experience.
Bundling the strings directly in core does mean that the overall size of the uncompressed Textpattern distribution has increased significantly – almost double – because all languages are present instead of just en-gb
. But the benefit of having all languages instantly available to install without any external server involvement outweighs the file size bump.
We continue to prune legacy strings. To put this in context, a typical lang table in Textpattern 4.6.2 had over 1300 core strings per language. Each string takes up a database row. Install a couple of additional well-represented languages and you’re looking at almost 4000 rows. That’s a lot of data. Since many of the strings simply weren’t necessary – merely there to support legacy versions – we’ve removed a few hundred strings per language from the out-of-the-box installation.
We haven’t yet taken the step of forcibly removing old strings from your database on upgrade because we don’t wish to risk deleting plugin strings by mistake, but new installations (and those people that delete and reinstall an entire language pack) will benefit from a leaner database. It’s a step that’s well worth taking if you know there aren’t any custom strings you wish to keep.
Taken in isolation, the above changes might seem unnecessary or a backwards step, but they’re part of a broader spectrum of alterations.
One major change from 4.7.0 onward is that we no longer use en-gb
as the default language. It’s now en
, or Oxford English, which is an international standard mashup of en-gb
and en-us
.
We have also opted for reducing how opinionated our languages are. So instead of the full language designators such as fr-fr
or ja-jp
, we have used the simpler language identifier where appropriate (fr
, ja
, etc). Plugins and code that use the old identifiers will be seamlessly converted to the new ones, though we encourage plugin authors to start using the new designators in code going forward.
To make things simpler for Textpack management, language designators may be listed in a pack. So if strings in your plugin can apply equally to a bunch of languages, you can define them once and benefit from the same strings being loaded for any of the given languages:
#@owner your-name-or-plugin
#@language en, en-gb, en-us
#@your-plugin-name
english_key1 => value1
english_key2 => value2
...
#@language fr
french_key1 => value1
french_key2 => value2
The number of languages continues to increase, taking our official supported tally to 54 as of this writing, including the latest addition to the flock: Fulah. Our translators work behind the scenes on Textpattern translations at CrowdIn, and we welcome contributions from anyone for our current languages or new ones. Please get involved if you can to help the majority of these bar charts near 100%. Every translation helps countless administrators and users around the world.
As of this article, Textattern supports a single front-end website language, chosen from any of those installed. There are techniques you can employ via plugins or code snippets to deliver content in multiple languages but it’s not a core feature yet. We’re actively working towards true multi-lingual content.
On the back-end, however, authors and administrators can select the language in which to display the admin panels. Each user can choose any language that suits them, selected from those that an administrator has installed. Administrators also get to see how many authors are using each language via a counter alongside the language designator. This is a handy visual aid if you wish to remove a language, as you can gauge its reach among your user base.
Two additional features are:
In an effort to reduce the memory load on each page, all language strings are represented according to their events. That means we have strings that only appear on the Preferences panel in a [prefs]
group. Strings that only appear on the Files panel are in a [files]
group, and so on. The group is the name of the panel given in the URL after ?event=
.
On any given panel, only the strings that are required for that panel are loaded, plus the [common]
ones (see below for an overview). This system extends to plugins, so if you want strings to appear on your own plugin panel, make sure they are assigned to a group that matches [abc_your_plugin_event]
.
There are several special groups of string:
[admin-side]
strings are loaded on every admin-side panel. So anything that appears in the menu (such as your plugin panel’s name), header or footer goes here.[public]
strings are loaded only on the public website.[common]
strings are loaded on both the public website and every admin-side panel.So if your plugin is rendering abc_plugin_string
instead of the correct translation, check it’s in the correct group. The smd_babel plugin is a handy back-end tool for checking, altering and applying language translations to any language for any string.
It may seem tempting to stuff all your strings in [common]
for simplicity, but please don’t do this as it’ll increase the memory footprint of the public site too, and every admin-side panel. Instead, if you need access to strings from another group that’s not one of the special groups mentioned above, employ code like this:
// Fetch a reference to the language class if you don't already have one.
$langObject = \Txp::get('\Textpattern\L10n\Lang');
// Extract strings from the given groups in an installed pack.
$strings = $langObject->extract('<langDesignator>', array('article', 'image', 'prefs', ...));
// Set the internal strings to use them.
// true = append to what's already loaded, false = replace entirely.
$langObject->setPack($strings, true);
Textpacks are handled seamlessly in plugins. Previously, Textpacks were only installed for the current language when a plugin was installed. If you subsequently installed a different language—even if it was represented in the plugin—tough.
When you install plugins in Textpattern 4.7.0+, you are shown its language pack(s) at the Plugin Preview step, and all these packs are stored along with the plugin itself in the database. This means that if you have French and English languages available in Textpattern at plugin installation time, you get the plugin’s French and English strings installed. But if you later install German and the plugin had a bundled German Textpack, it will be installed as well at that time.
This is a massive help for plugin authors as you can embed all relevant strings in any languages in your plugins and have Textpattern automatically install them for any language. If an administrator removes a language and reinstalls it, the plugin strings come along for the ride and are automatically reinstalled.
Further, if a language is missing from a plugin Textpack, or only partially translated, the strings from the default language will be used to fill the gaps. This is known as your fallback language and it’s set by default to en
. It can be changed in your config.php
by setting the constant TEXTPATTERN_DEFAULT_LANG
but it’s probably not advisable unless you know what you’re doing: you should certainly choose one that is well-represented, preferably one that has 100% of its strings translated or you’ll get untranslated strings in your interface.
The above language segregation means it is imperative that you designate the #@language
in your Textpacks for correct language assignment. You can no longer rely on the ‘default’ (current) language being the first one in the list if it doesn’t have a designator. Language strings in a pack without one or more designators will always be assigned to the default fallback language (en
in most cases), which may not be desired.
This also applies to plugins loaded from the plugin cache directory. Any strings for the currently-used admin-side language of the user, or the language for the public site, will be loaded on-the-fly from the plugin file.
As we progressively add features, we’re working towards bringing a full multi-lingual experience to Textpattern. We’ve already made iterative steps in that direction by:
As it stands, a combination of plugin code and a little clever form processing can get you most of the way. There are a few wrinkles around the edges, such as implementing a mechanism for natively tying content that differs only by language, and syndicating it. That’s all less than optimal right now and requires planned database table changes and a tweaked UI workflow to tie everything together.
But with some ingenuity, it’s possible to deliver a multi-lingual front-end experience in the latest version of Textpattern; at least for two or three languages before it becomes unwieldy to manage. There have been various discussions around multi-linguality including one on language handling at the tag level, and a full proposal document (Google Doc).
As with any proposal, community members form a key part of the process. So if anyone has any questions, comments or ideas, please raise them here, on the forum or in the proposal document (whichever medium is most appropriate) so it can be considered. We are especially interested in the views of people who routinely make (or who have tried to make) multi-lingual content websites in Textpattern.
Being able to adapt the interface and content management goals for the most flexibility using suitable conventions to simplify the process is the aim. Thank you in advance for any thoughts you may have.
]]>Please ensure your web servers are running at least these versions to ensure Textpattern continues to work as expected when you upgrade to Textpattern 4.9.
We are changing the system requirements to streamline development work, remove legacy code, and further improve everyone’s experience of Textpattern.
Textpattern runs on a supported web server running the PHP scripting language and a connected MySQL database. We – Team Textpattern – make Textpattern (i.e. the content management system), PHP is made by The PHP Development Team, and MySQL development is handled by Oracle. While we can follow the development of new versions, especially with PHP where it all happens in the open, it is often more viable for us to wait until the beta or release candidate stage of development to ensure we have something nearing a finished product to check Textpattern against.
Textpattern, PHP and MySQL all use semantic versioning for releases. In real terms, this means when the first number increases, this is a major update. These major updates often involve a significant code overhaul internally, including different ways to perform tasks. As Textpattern stewards, we work towards compatibility with new releases of PHP and MySQL while maintaining support for the majority of web servers where older versions are deployed.
Textpattern includes code that checks for a PHP version and responds accordingly, like this:
We also have further considerations for minor releases (i.e. PHP 5.6, PHP 7.4, PHP 8.0 etc) behind the scenes, too. This part is where the overall size and complexity of Textpattern grows, and with that comes performance considerations – whether you’re running a current or legacy PHP. When we are able to safely remove these checks for code checks that handle very old PHP versions, we all benefit:
At the time of writing, PHP 5 is still used by around 1 in 4 websites where PHP is deployed , according to W3Techs PHP 5 market share. If you are still running PHP 5 on your web server, please consider updating to a newer version. If your current web hosting environment does not offer a newer, actively-supported version of PHP, we recommend looking elsewhere for an organisation that can.
Vendor support for PHP 5.6 ended on 31 December 2018. PHP 7.0, PHP 7.1 and PHP 7.2 are also end-of-life’d by The PHP Development Team, with vendor support for PHP 7.3 due to end in December 2021. There are multiple vulnerabilities with older, unsupported PHP versions that will not be fixed by The PHP Development Team since those versions are considered ‘done’.
Bluntly, your own Textpattern website may be at risk if the underlying software can be compromised by a bad actor. We do everything we can to ensure Textpattern is as safe and robust as possible, but we can’t do anything about PHP vulnerabilities.
Textpattern administrators & users are providing feedback on their experiences with various hosting organisations in this forum thread: Who Does Your Textpattern Hosting?: July 2021 Edition. You are warmly invited to get involved and add your feedback, or query respondents.
If you are tied to PHP 5.5 and cannot upgrade for any reason, please stay on Textpattern 4.8 as that will be the most recent Textpattern release series with support for that version.
Edit: the original release of this article referred to “PHP 5 is still used by around 1 in 4 websites where PHP is deployed”, which is incorrect. We have changed the reference: PHP 5 is still used by around 1 in 4 websites.
]]>The mission was clear: turn Textpattern supporter donations into a significantly greater amount by way of a $75,000 match funding piggy bank provided by Sustain OSS, GitCoin, Synthetix and others. The equation used to top-up donations favoured smaller donation amounts; $5 in the tip jar turned into nearly $50, a massive uplift from the original pledge.
After 14 days of jar-rattling, attention-grabbing appeals for a few coins – and ultimately the generosity of those donors plus the piggy bank – over $3,500 was raised and contributed to Textpattern on Open Collective.
We are immensely grateful, humbled and appreciative of this incredible amount. We operate a transparent budget for our project, the details of which can be found at the Open Collective above, and you can be assured that we will extract every last iota of value from your contributions. We are continuing to further improve Textpattern and make it as good as it can be, and these funds will help us hugely.
Thank you FundOSS, your pilot program funding partners, and each of the 52 Textpattern supporters. You are amazing.
]]>FundOSS have raised a $75,000 matching fund. Support us and they’ll back you up by multiplying your kind donation based on how much support we receive before the deadline on June 24, 2021. If you’ve ever considered supporting us financially then today’s the day to put that thought in action. The match funding pool will be allocated primarily on the frequency rather than the volume of support for Textpattern, so please consider donating an amount – however small – before June 24th so our project, users and community can all benefit from this incredible opportunity.
Details of how to donate can be found on the Textpattern FundOSS page. We’ve already had some very generous sponsors and the devs have chipped in too, so thank you very much to everyone who has contributed so far. Any and all noise you can make on your social and web channels to support this drive will be a huge win for the project. Being in such a small pool of projects in a campaign like this is a fantastic opportunity and will provide valuable exposure for our CMS.
At the time of writing, a $5 donation attracts an estimated $43 match from FundOSS – over 7 times the original pledge value. Matching for larger donations is also currently available, but the pilot piggy bank is finite so time is of the essence.
The multipliers are changing as more people get involved. Over $16,000 of the fund has been allotted already in just the first day of the campaign, so please don’t delay. Even a small contribution will be amplified and make a tangible difference to the way we can promote, support and continue to evolve Textpattern to help you build engaging websites for your clients and communities.
Thank you for your interest in Textpattern, and for your considerations in supporting us.
]]>Textpattern 4.8.7 resolves a regression reported in Textpattern 4.8.5, and offers further minor improvements to the user interface. If you have an existing Textpattern 4.8 site, consider upgrading to Textpattern 4.8.7 for a more refined ride, particularly if you make creative or extensive use of Textpattern’s forms functionality.
Please note: Textpattern 4.8.6 was released earlier this week, and very early adopters discovered some issues which we’d missed in testing. Given the nature of the issues – which we have diagnosed and addressed in Textpattern 4.8.7 – we chose to not publicise the release of Textpattern 4.8.6. Textpattern 4.8.6 should not be used in a production environment.
As with all Textpattern upgrades, refer to the current Textpattern system requirements and ensure you have known-good backups of your site files and database, including any uploaded content such as images & files. Before you make any changes, please refer to the accompanying release notes in HISTORY.txt to ensure you understand what has changed in this release, along with any skipped versions released beforehand. You can check your current Textpattern version from the bottom of any page on the admin-side.
We are continuing to work on the Textpattern 4.9 series, as well as anticipating at least one further release in the Textpattern 4.8 series to account for any changes required for PHP 8.1 compatibility. We expect PHP 8.1 to arrive in late November 2021, and we will be tracking pre-release candidates along the way.
Thank you to everyone who contributed to this patch release with reporting & resolving bugs, providing & improving language translations and overall improvements to the Textpattern ecosystem. We’re grateful to all contributors offering us their expertise, time, attention, words, donations, signal boosting, evangelism, cheerleading and all other activities that fuel our progress.
We owe a special thank you to our early adopter crew who discovered and reported issues to us in a clear and timely fashion.
Textpattern’s infrastructure and continued development is kindly supported by DigitalOcean, 1Password and BrowserStack. We are grateful for their ongoing involvement and support for Textpattern and its global community of authors, publishers, designers and administrators. Thank you.
There is no spyware, adware, user tracking or other junk in Textpattern. We consciously work to keep things fast, nimble and ready for pretty much anything you can throw at it. We have a friendly forum for a Textpattern sites showcase – tell us what you’ve made with Textpattern, we’d love to hear from you. Even a ‘hello!’ or ‘thanks!’ helps us to gauge how far Textpattern has travelled, so don’t be a stranger.
You can also show your appreciation by sponsoring Textpattern on GitHub or supporting Textpattern on Open Collective. Alternatively, you can donate to Textpattern developers with PayPal.
You can download Textpattern from textpattern.com using the following links, or from Textpattern v4.8.7 on GitHub. Please take a moment to ‘star’ Textpattern’s repositories on GitHub if they are of interest to you. This really helps us out.
To take advantage of Textpattern’s multi-site capabilities, please download the .tar.gz
archive as it includes the multi-site scaffold.
Textpattern 4.8 requires a minimum of PHP 5.5 as part of the system requirements, though a vendor-supported PHP version is highly recommended. At the time of writing, PHP 7.4 & PHP 8.0 have active and ongoing support. PHP 7.3 has extended security support until 6 December 2021. Please refer to PHP Supported Versions for up-to-date schedules.
If you are upgrading Textpattern from a version prior to 4.8.0, please note the SimpleXML PHP extension is now required. Most PHP web servers have this built-in and enabled already. Check with your web host if you have any doubts.
Please note: we will increase the minimum PHP and MySQL version requirements for Textpattern 4.9. More details will be provided in due course.
Please ensure you log out of the admin side prior to upgrade, perform and verify a full site backup (database and files, including any file/image uploads), and refer to the README.txt
file in the download archives for detailed instructions. The vast majority of Textpattern upgrades are smooth sailing and happen without incident, but on the rare occasion something does go astray it’s preferable to safely restore the known-good version from your full site backup and troubleshoot any issues while your site continues to be available.
The Textpattern 4.8.7 HISTORY.txt
outlines changes for this and previous Textpattern releases, along with their respective release dates. We recommend you read the list of changes to understand how this may affect your current sites, especially if you’re upgrading from older versions. Please note that while upgrades from very old releases of Textpattern are possible, you may need to perform a multi-stage upgrade.
If you require clarification on any aspect of the release notes, we recommend you seek advice before starting a site upgrade. The Textpattern support forum is an excellent place to start, and the Textpattern user documentation is regularly updated with examples, explanations and background information.
We have a forum thread dedicated to Textpattern 4.8.7 feedback. We gather field reports from fellow Textpattern administrators and users that may assist or guide you with upgrading.
Changes made in Textpattern 4.8.7 include everything that changed in Textpattern 4.8.6, and we fixed a few more bugs. Textpattern 4.8.7 has the following changes that addressed broken functionality in Textpattern 4.8.6…:
GRANT
check during initial setup, which broke some installations.…and the changes made in Textpattern 4.8.6 include:
$article
warning when accessing non-existent articles.id
attribute to <txp:if_different />
tag.db
option to the global escape
attribute.<txp:variable trim>
trims its own output (thanks, cara-tm).<txp:link_to_next/prev>
can return URL or container.<txp:page_url>
and <txp:if_request>
tags are more flexible.<txp:search_result_date />
. Use <txp:posted />
instead.step=false
to hook into explicit empty step callbacks and step=null
to indicate ‘any step’.$pre
to be any text. Opens up arbitrary callback grouping.articles>multi_edit.$method
callback on Articles list panel.user>fields
and user>from
to manipulate the queryuser>controls
to affect the button areauser_ui>list.row
(pluggable_ui) for adding table datauser>steps
for plugins to register custom panel-level functionalitydiag>steps
and diag_ui>level
for custom plugin steps and functionality.If you find anything not working correctly or wish to propose improvements, please file a report on GitHub. There are templates for feature requests and bug reports.
We hope you enjoy this release and it serves you, your sites and clients well!
]]>Textpattern 4.8.5 arrives with compatibility enhancements for PHP 8.0, including bug fixes for reported issues in Textpattern 4.8.4. Some of the resolved issues appeared with new installations of Textpattern on a subset of servers, while others affected existing Textpattern instances. If you have Textpattern 4.8.4 installed, consider upgrading to Textpattern 4.8.5 for a more refined ride, especially if you’re running on PHP 8.0.
As with any Textpattern upgrade, check the current Textpattern system requirements and confirm you have known-good backups of your files and database. Before you make any changes, please refer to the accompanying release notes in HISTORY.txt to ensure you understand the changes included in this release, plus any skipped versions before it. You can find your current Textpattern version from the bottom of any page on the admin-side.
One note of particular importance with Textpattern 4.8.5 is a change to <txp:header />
, specifically with the name
attribute. From Textpattern 4.8.5, the name
attribute is no longer set by default. Ensure any instances of <txp:header />
explicitly have their corresponding name
attribute set before upgrading to Textpattern to avoid any mishaps.
We are continuing to work toward the Textpattern 4.9 series, which focuses on overhauling & optimising existing functionality, along with requested enhancements and other finishing touches. We’ll bring you more information about what’s included in Textpattern 4.9 as we firm up release plans.
Thank you to everyone who contributed to this patch release with reporting & resolving bugs, providing & improving language translations and overall improvements to the Textpattern ecosystem. We’re grateful to all contributors offering us their expertise, time, attention, words, donations, signal boosting, evangelism, cheerleading and all other activities that fuel our progress.
Textpattern’s infrastructure and continued development is kindly supported by DigitalOcean, 1Password and BrowserStack. We are grateful for their ongoing involvement and support for Textpattern and its global community of authors, publishers, designers and administrators. Thank you.
There is no spyware, adware, user tracking or other junk in Textpattern. We consciously work to keep it fast, nimble and ready for pretty much anything you can throw at it. Tell us what you’ve made Textpattern do, we’d love to hear from you. A ‘hello!’ or ‘thanks!’ helps us to gauge how far Textpattern has travelled.
You can show your appreciation by sponsoring Textpattern on GitHub or supporting Textpattern on Open Collective. Alternatively, you can donate to Textpattern developers with PayPal.
If you are involved with a service, platform or technology that can help Textpattern’s web presence, development or user community, please contact us and we can discuss further.
You can download Textpattern from textpattern.com using the following links, or from the GitHub repository. Please take a moment to ‘star’ Textpattern’s repositories on GitHub if they are of interest to you.
To take advantage of Textpattern’s multi-site capabilities, please download the .tar.gz
archive as it includes the multi-site scaffold.
The Textpattern demo has been updated to offer Textpattern test drives in complete safety. The demo sites are rebuilt every few hours using the Textpattern auto-installer.
Textpattern 4.8 requires a minimum of PHP 5.5 as part of the system requirements, though a vendor-supported PHP version is highly recommended. At the time of writing, PHP 7.4 & PHP 8.0 have active and ongoing support. PHP 7.3 entered extended security support 7 December 2020. Refer to PHP Supported Versions for up-to-date schedules.
If you are upgrading Textpattern from a version prior to 4.8.0, note the SimpleXML PHP extension is now required. Most PHP web servers have this built-in and enabled already so you should be good to go. Check with your web host if you have any doubts.
Please note: we will increase the minimum PHP and MySQL version requirements for Textpattern 4.9. More details will be provided in due course.
Please ensure you log out of the admin side prior to upgrade, perform and verify a full site backup (database and files, including any file/image uploads), and refer to the README.txt
file in the download archives for detailed instructions. The vast majority of Textpattern upgrades are smooth sailing and happen without incident, but on the rare occasion something does go astray it’s preferable to safely restore the known-good version from your backup and troubleshoot any issues while your site continues to be available.
The Textpattern 4.8.5 HISTORY.txt
outlines changes for this and previous Textpattern releases, along with their respective release dates. We recommend you read the list of changes to understand how this may affect your current sites, especially if you’re upgrading from older versions. Please note that while upgrades from very old releases of Textpattern are possible, you may need to perform a multi-stage upgrade.
If you require clarification on any aspect of the release notes, we recommend you seek advice before starting a site upgrade. The Textpattern support forum is an excellent place to start, and the Textpattern user documentation is regularly updated with examples, explanations and background information.
We have a forum thread dedicated to Textpattern 4.8.5 feedback. We gather field reports from fellow Textpattern administrators and users that may assist or guide you with upgrading.
Changes made in Textpattern 4.8.5 include:
<txp:header />
attributes are unset by default. Ensure any name
attributes are set before updating to avoid issues with custom headers.libxml_disable_entity_loader()
deprecation warning on PHP 8.0.<txp:image_info type="mime" />
.<txp:article />
fields
attribute.break
, replace
and trim
attributes.breakby
and breakform
attributes for all content types.<txp:php />
as PHP variables.root
attribute of <txp:page_url />
to create relative URLs.<txp:article_custom />
can paginate content using pageby
attribute.<txp:images />
outputs full-size images if thumbs don’t exist and <txp:images thumbnail="0" />
displays full-size images as expected.<txp:images>
accepts <txp:else />
.<txp:variable>
default attribute can be used during assignment (thanks, cara-tm).404 Not Found
status as they should.<txp:php />
is processed in forms even in article body.<txp:php />
(they were able to do it in forms anyway).pretext_end
callback.pre-pretext_end
callback.txp.image>types
callback.If you find anything not working correctly or wish to propose improvements, please file a report on GitHub. There are templates for feature requests and bug reports.
We hope you enjoy this release and it serves you, your sites and clients well!
]]>