Official website of the Textpattern project.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
package.json website

Greenkeeper badge Build Status

Official 2017+ website of the Textpattern project. Requires Textpattern 4.7dev.

Supported web browsers

  • Internet Explorer 11.
  • Chrome, Edge, Firefox, Safari and Opera the last two recent stable releases.

Older versions of the above and other browsers may work, but these are the ones we verify.


Building this repository requires:


Installing required tools

The project uses Grunt to run tasks and Sass for CSS pre-processing. First make sure you have base dependencies installed: Node.js and Grunt. You can install Node using the installer, Composer using the installer, and Grunt with npm:

$ npm install -g grunt-cli

Consult the Grunt documentation for more instructions if necessary.

Installing dependencies

After you have the base dependencies taken care of, you can install the project's dependencies. Navigate to the project's directory, and run the dependency manager:

$ cd textpattern-com-website
$ npm install
$ composer install

npm installs Node modules for Grunt and composer installs PHP libraries.


This repository hosts sources and needs to be built before it can be used. After you have installed all dependencies, you will be able to run tasks using Grunt, including building:

$ grunt @task@

Where the @task@ is either build or watch.

  • The build task builds the project.
  • The watch task will launch a task that watches for file changes; the project is then automatically built if a source file is modified.


Textpattern 4.7 introduced support for user-definable <txp:output_form /> attributes (and also the short tags syntax <txp::...>), allowing for our own version of 'shortcodes' within articles (note: remember to also use notextile. when within Textile content). This site uses the following tags:


To create a HTML5 image snippet:

<txp::media_image id="" />

id accepts either a single image ID, or comma separated image IDs if you want multiple images. For blogs/articles the ideal image width is 832 pixels for the standard resolution version and 1664 pixels for the double resolution version (which is optional, but should be provided if possible).

For example:

<txp::media_image id="41, 42, 50" />


To create a HTML5 video snippet:

<txp::media_video width="" height="" mp4-url="" webm-url="" poster-url="" name="" description="" duration-seconds=""/>

poster-url, name, description and duration-seconds are optional, but should be provided if possible to provide valid microdata. If not used, remove those attributes from your shortcode.

For example:

<txp::media_video width="640" height="480" mp4-url="/video/video1.mp4" webm-url="/video/video1.webm" poster-url="/video/video1-poster.png" name="Cat video" description="My great video of cats." duration-seconds="20" />


To create a file download snippet:

<txp::media_file category="" filename="" sha256="" />

category and filename are interchangeable (use one or the other, where appropriate) - if both are provided then category is used in preference and filename is ignored. sha256 (SHA256 checksum hash) is optional, but should be provided if possible. If not used, remove this attribute from your shortcode.

For example:

<txp::media_file category="current-release-zip" sha256="a868c05fc37108f2bb5e878cfbcdc61a82ce2646c4676cccb8105a6c6277be7a" />

Plugins used

All plugins we use are installed via Composer: