Download the PHP package restruct/silverstripe-shortcodable without Composer

On this page you can find all versions of the php package restruct/silverstripe-shortcodable. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package silverstripe-shortcodable

Silverstripe shortcode module

Maintained by Restruct. If this module saves you time, you can support ongoing maintenance.

Adds a button to HTMLEditorField for CMS users to insert Shortcodes in page content.
Shortcodes can optionally be represented in TinyMCE with a placeholder image.

This module is a partial-to-largely rewrite of sheadawson/silverstripe-shortcodable.
It depends on Silverstripe Simpler for some non-react UI functionalities (mainly the modal dialog).

Requirements

Installation

Version Compatibility

Branch Module Version Silverstripe PHP
main 5.x (from 5.1.0) ^5 \|\| ^6 ^8.1
v4 4.x ^4 \|\| ^5 ^7.4 \|\| ^8.0

main is the maintained line and supports every Silverstripe version this module still targets. Silverstripe 4 reached end of life in April 2025 and is no longer supported or tested here; projects still on it can stay on the 4.x tags, which remain available. The 5.0.x tags declared Silverstripe 6 only, and could not be installed from Packagist (see CHANGELOG.md); use ^5.1.

Note: composer.json is the source of truth for exact version constraints.

Configuration

Register DataObjects or classes as shortcodable via Yaml config:

Configuration options

Option Default What it does
Shortcodable\Shortcodable.shortcodable_classes [] Classes to register with the shortcode parser and offer in the dialog.
Shortcodable\Shortcodable.htmleditor_names [cms] HTMLEditor configs that get the shortcode button. Only TinyMCE configs are changed; others are skipped.
Shortcodable\Controllers\ShortcodableAdminController.default_placeholder see class Size, font and colours of the default SVG placeholder (width, height, full_width, full_height, font, fontsize, fg, bg).

Per shortcodable class (as private static or YAML on that class):

Option Default What it does
shortcode short class name The shortcode tag, eg currentyear for [currentyear].
shortcode_callback parse_shortcode Name of the parser method.
shortcode_close_parent false Block-level output: close the wrapping element before the shortcode and reopen it after (see below). Also gives the default placeholder the full size.
placeholder_settings none width/height overriding the default placeholder size for this shortcode.

Required methods on shortcodable objects/classes

Implement these methods on your shortcodable classes (may also be added via an Extension):

(Required) shortcode parser callback:
public static function parse_shortcode(...)
OR:
public function MyCustomParser(...) combined with:
private static $shortcode_callback = 'MyCustomParser'

Parser method arguments: (see shortcode documentation)
($attrs, $content=null, $parser=null, $shortcode, $info)

NOTE: the parser method gets called on a singleton object instance.
(So there's no $this->ID or $this->owner->ID etc.)

Optional:

Wrapping (optional): In this module, $shortcodable_is_block and $disable_wrapper have been replaced with $shortcode_close_parent:

If you set $shortcode_close_parent to true, the parent node will be closed before your shortcode output and reopened after.
Eg <p>Some [shortcode] content</p> would become <p>Some </p>[shortcode]<p> content</p>; If the shortcode sits inside inline elements (eg <p><strong>Some [shortcode]</strong></p>), those are closed as well, up to the block element holding them, and reopened after the shortcode. A bare element (no attributes) that would be left empty on either side is dropped instead.

Only elements that cannot hold block content are closed: <p>, <h1>-<h6>, <pre> and <summary> (plus inline elements). Containers that can already hold block content, such as <div>, <li>, <td>, <dt>, <dd>, <address>, <blockquote> and <section>, are left whole: <li>[shortcode]</li> stays a list item with the shortcode output inside it. Inline elements inside such a container are still closed and reopened around the shortcode. A shortcode nested inside more than 10 inline elements, or inside inline elements whose opening tags add up to more than 8 KB, is left untouched (a guard against pathological markup). Up to 5.1.0 a container on the same line was closed too, so <div>[shortcode]</div> lost its <div>; since 5.2.0 it is kept.

Shortcode placeholder images

To display a nice image instead of the raw shortcode in the CMS editor, implement a getShortcodePlaceHolder method on your shortcodable object:

Default placeholder image

Without getShortcodePlaceHolder(), the editor shows an SVG generated by admin/shortcodable/placehold.img (CMS access required). It takes w and h (a positive number of pixels, or 100%), bg and fg (3 or 6 hex digits, no #), ff (font family), txtsize and txt. Invalid values fall back to the default_placeholder config.

Running the tests

The module cannot be tested on its own: it needs a host Silverstripe project. Require it there through a Composer path repository with symlink: true - /tests is export-ignore, so a dist or mirrored install contains no tests - add "Shortcodable\\Tests\\": "vendor/restruct/silverstripe-shortcodable/tests/" to the host's autoload-dev, then:

On Silverstripe 6 the host also needs silverstripe/htmleditor-tinymce, or the TinyMCE button test is skipped. CI runs the suite against Silverstripe 5 and 6 on every push; see .github/workflows/ci.yml.

Status

Refs:


All versions of silverstripe-shortcodable with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
silverstripe/vendor-plugin Version ^2 || ^3
silverstripe/framework Version ^5 || ^6
silverstripe/admin Version ^2 || ^3
restruct/silverstripe-simpler Version ~0.2 || ^1
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package restruct/silverstripe-shortcodable contains the following files

Loading the files please wait ...