Symphony is a PHP
& MySQL
based CMS that utilises XML
and XSLT
as its core technologies. This repository is a fork of the official Symphony CMS 2.7.10 and includes various quality of life improvements and changes.
This build of Symphony CMS requires PHP 7.4 or newer.
It is also assumed that the server has Composer pre-installed. Unlike official builds that come with the composer depencies baked in, you will need to run composer in order to load all the reqired libraries. See the Composer "Getting Started" documentation for instructions.
There are 2 main branches to the Symphony CMS (Extended) repository master
and essentials
. Each follow a slightly different installation pathway.
This is the main branch is a drop-in replacement and can be installed/updated like any other official 2.x release (including migrating from older versions). To clone from git, use the following
$ git clone --depth 1 https://github.com/pointybeard/symphonycms.git symphonycms
$ composer update -vv --no-dev --profile -d ./symphonycms
Then, follow the instructions contained in the official 2.7.x release README doc.
This branch removes files such as the install and update scripts, index.php, and a few other things, in order to make it installable as a composer dependency in other projects. Notable examples being Symphony CMS: Section Builder and Orchestra.
Add the following to your project's composer.json
file
"repositories": [
{
"type": "vcs",
"url": "https://github.com/pointybeard/symphonycms.git"
}
],
"require": {
"symphonycms/symphonycms": "dev-essentials"
}
This build of Symphony CMS makes some substantial changes which would be unlikely to be accepted back into the official repository.
The key reason this particular build was created was to support the development of Orchestra which is a meta package for scaffolding and rapidly deploying Symphony CMS builds. Orchestra drastically changes the folder structure of Symphony and provides additional features that wouldn't have been possible without this fork of Symphony CMS.
This build of Symphony also makes extensions like Saxon/C possible, giving long overdue support for XSLT 3.0.
Here are the most notable changes provided by this build of Symphony CMS:
Pre-boot scripts are run prior to the core Symphony engine being instanciated.
Symphony will looks for the symphony_preboot_config
path environment variable, which is a JSON file describing the scripts to include. Currently it only supports including additional files but in future it might include other tasks.
To use the pre-boot behaviour, follow these steps:
- Set
symphony_enable_preboot
to1
either via apache envvars or.htaccess
- Set the path to the pre-boot JSON file with the
symphony_preboot_config
environment variable. E.g.
SetEnv symphony_enable_preboot 1
SetEnv symphony_preboot_config "/some/path/to/preboot.json"
- Create the file specified by
symphony_preboot_config
and list files to include. Here is an example of a pre-boot config:
{
"includes": [
"manifest/preboot/01_test.php",
"/var/www/html/symphony/manifest/preboot/02_test.php"
]
}
Note, when pre-boot scripts are run, the Symphony core has not been initialised, i.e. there is no database connection and the main autoloader has not been included.
It is now expected that config will be a JSON file. Using JSON instead of an autogenerated PHP file makes loading, parsing, and saving the config much easier. Not to mention more readable.
In effort to remove clutter and give developers the option of streamlining their builds even further, all of the built-in fields (Date, Input, Textarea, Select, Taglist, Author, Checkbox, and Upload) have been removed.
To add these fields back in, download and install the Classic Fields Extension. This extension lets you selectively install/uninstall any or all of these core fields as required.
This feature allows extensions to provide additional XSLT processor libaries which are then registered with Symphony and selectable in System Preferences. For example, Saxon/C adds support for XSLT 3.0.
By default, Symphony writes log messages to manifest/logs/main
. This feature allows an extension to provide a different logger which can be selected, in favour of the default logger, via the System Preferences. For example, Monolog Logger Extension for Symphony CMS.
If you believe you have found a bug, please report it using the GitHub issue tracker, or submit a fix by forking this library and sending a pull request.
To contribute to this project, please see CONTRIBUTING.md for guidelines about how to get involved.
- Alannah Kearney - hi@alannahkearney.com - http://alannahkearney.com
- Symphony CMS Community - https://github.com/symphonycms/symphonycms/graphs/contributors
- See also the list of [contributors][ext-contributor] who participated in this specific fork
"Symphony CMS (Extended)" is released under the MIT License. See LICENCE.md for full copyright and license information.