Search

Hi guys, I've just signed up as am very interested in getting to know more about Symphony. The documentation and backend are incredibly nicely laid-out and many people have great things to say about how flexible the system is.

I was wondering, coming from a PHP CMS background, what the advantages and differences would be when using a XML based system? The language is completely new to me and am quite interested in learning it.

First silly question: Is it worth learning? Or do most Symphony users already come from an XML background? Or do many learn the language in order to use this system?

The main CMS that I use is Processwire which is an incredibly powerful system built in PHP and started looking around at alternatives as I'm no developer and was looking for an alternative system that had a few more user contributed modules/extensions.

It is however a non-markup system like Symphony so in that respect, switching between the two oughtn't be too tough!

Anyway, thanks for your thoughts in advance.

Welcome André :-)

First up, Symphony is most definitely a PHP CMS. Its core is written with PHP and all of its data is stored in MySQL. However it uses XSLT for the templating layer, so instead of creating .php or .phtml or whatever you might do otherwise, each page is a .xsl file. When a page of your site is requested, Symphony gets the data from MySQL, creates an XML document, and your XSLT transforms this into HTML (or CSV, or XML/RSS/Atom, or JSON or whatever the desired output is).

XSLT is something you either love or hate. Those who love it tend to stick around!

I'd used XML a lot before using Symphony (chomping RSS feeds and so on) but had never tried XSLT. It's a steep learning curve as it's quite a different concept comapred with embedding PHP into your HTML, but very rewarding.

XSLT is something you either love or hate. Those who love it tend to stick around!

Uhh, +1 :) My brain simply isn't wired at generating HTML with PHP. XSLT feels natural.

The thing that i love most about the XML/XSLT approach is that everything you need is in the XML source and you don't have to learn APIs to write silly code like $post->getTitle(). When using XSLT you have everything straight in your face and you can generate the markup you prefer.

Using templates is awesome, but you'll probably enjoy that later in your jurney. Good luck!

Or do most Symphony users already come from an XML background?

I knew what XML was but I never really heard about XSLT before.
I fell in love although it took a moment to grasp the full concept. When I did I was even more convinced that I was doing the right thing.

Symphony was the reason I started learning XSLT. I did find it quite difficult at first (it's certainly initially less easy than pasting in some variable name or whatnot), but once the concept starts to take hold it's fine. I know I'm only starting to scratch the surface of what can be done with it, and am looking forward to using it in more/better ways.

It seems like the content equivalent of CSS to me (selecting and matching, with specificity), and feels good. And it's a transferrable skill, not tied to any particular piece of software.

It's also very powerful and flexible, and I like that you can build up your own personal modular framework of templates (as well as using templates and utilities from the community) that can be applied to multiple projects.

For me the main reason are:

  • XML and XSLT are W3C standards
  • is parsed/translated in C and not with PHP themselves
  • it is not a siloed solution (in german we say "Insellösung" – "island solutions") like Smarty, Twig, …
  • there are many good tools out there (IDEs, Editors, …) to write XML and XSLT

Wow, thanks for the replies, nice to see so many people contributing! I suppose I'm wondering whether there is enough of an advantage to learning XSLT when I'm comparatively happy with Processwire in PHP.

One of the things I was looking for was to add some more powerful functionality to the core quite simply. I'm definitely not trying to look for a WordPress-esque system - I absolutely love having full control over my markup, it's just, having a good many user-contributed extensions could really help a non-developer like me!

One of the things I was looking for was to add some more powerful functionality to the core quite simply

The Delegates system allows you to manipulate the data at every stage in processing a request. Other extension can provide Delegates as well, so you can build a very modular system with fine grained control.

The most valuable extension can be found on the Symphony Extensions companion site.

Symphony's Delegates system is really cool. It took me a while to really grasp the power of it.

You can look at the delegates like sockets to plug into (with your extensions). There are, for example, delegates which are fired when a frontend page is built. By hooking (plugging) into those delegates using PHP code, you can even receive and pass back certain data from/to the Symphony core. So you can manipulate Symphony's behaviour and the page's XML content and parameters.

As @vladG said, this means very fine-grained control over every aspect of the system. In short words: Symphony can do anything. But then, of course, you will have to get your hands dirty with PHP. :-)

BTW: I am one of the XSLT lovers. I can never leave Symphony.

Thanks Vlad and Michael for your feedback

It has been a hassle to provide a bespoke website for my clients until I came across Symphony CMS that use XSLT. It's a beautiful CMS I have ever seen and took months to experiment to see how it can fit in my workflow, well, no CMS are perfect that I would find myself favor MVC architecture more (not very experience in MVC yet). So my second choice would be ProcessWire CMS which has all the featured that I'm looking for.

Create an account or sign in to comment.

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details