SilverStripe 2.4 beta release brings hierarchical URLs, SQL Server support, and much more

Posted by Sigurd Magnusson on 5 February 2010

Screenshot of SilverStripe 2.4We're extremely excited to announce SilverStripe v2.4 is now at beta release stage!

This means it's ready for testing by our community. We've made a number of changes since the 2.4 alpha release in November, and we're continuing to polish the intended features in preparation for the stable version. We do not recommend using this version of SilverStripe for production sites yet unless extensive testing is done.

Regular readers of our blog may want to read the changelog for a full list of recent changes, the highlights of which are detailed below.

The SilverStripe 2.4 release is all about using SilverStripe in bigger and more complex production environments and it brings a wealth of great features.

Hierarchical URLs

If your website contains hundreds or thousands of pages, you may find the default way SilverStripe handles friendly URLs a little limiting. For instance:

With hierarchical URLs, the address for such a page might be:

One of the principles of this feature is that it provides a logical "bread crumb" for a page. Each segment in the URL (as separated by a slash symbol) is a page in itself that can be visited. Hierarchical URLs also reduce the problem of "running out" of URLs, where you might be forced to have URLs like SilverStripe will allow you to run the website in either simple or hierarchical URL mode, so that for simple websites you can retain short, memorable website addresses.

Huge thanks go to Andrew Short, a member of our developer community based in Australia, who is responsible for writing most of this feature.

Microsoft SQL Server Database support

There is strong demand for SilverStripe to run on the Microsoft platform—in recent months there have been more than 36,000 downloads via the web application gallery alone. We have therefore worked hard to allow SilverStripe to natively run on a SQL Server 2008 database, eliminating the requirement to run SilverStripe on MySQL (though, of course, it still runs great on MySQL). We're really happy with the results, and we have government websites like already running on this platform.

Running SilverStripe on SQL Server requires the installation of the SilverStripe SQL Server module.

PostgreSQL database support

SilverStripe 2.4 can also run on a PostgreSQL 8.3 or later database. Our testing of this is not as extensive as it has been for Microsoft SQL Server, so we'd love people to install this version of SilverStripe with the PostgreSQL Database Support module and let us know how it goes.

Performance and memory use optimisations

  • Memory use optimisations mean that the CMS back-end interface for the "Site Content" section easily scales to well over 10,000 pages.
  • Performance improvements around Object and ViewableData property access.
  • Improved unit test execution speed.
  • Decreased memory usage in "Files & Images" section.
  • Tested that SilverStripe is compatible with Microsoft's new WinCache PHP bytecode cache. Anecdotal tests show that WinCache provides a 50% speed improvement in generating SilverStripe webpages.
  • Ability to cache parts of templates, providing a middle ground between the speed of fully cached pages and the richness of fully dynamic database-driven pages.
  • Batch action handling handles larger tree structures, provides better visual feedback, and respects permissions on individual pages.

Introducing roles

SilverStripe has long had support for setting granular security permissions on pages. Users can be a member of one or more groups, and groups can be configured to have various system rights, and various view and edit permissions on a page-by-page basis. This provides a great deal of flexibility, but in complex organisations the task of setting up the permission structures can mean spending a lot of time creating security groups.

Managing more complex security configurations has been eased in SilverStripe 2.4 with the introduction of roles. Roles allow groupings of people to be:

  • Assigned the same system rights (e.g. access to create pages but not create users.)
  • Assigned those rights to different sections of a website (e.g. news section, product catalogue, corporate profile, etc.)

This simplifies maintenance of the rights and users for large organisations. It makes permissions less repetitive to set up. Roles may be overkill in simple situations, and therefore their use is optional.

Other security features

  • A group can be limited to only edit a certain language in the CMS.
  • Team members can get permissions to see the draft version of a page in preview mode without requiring CMS access.
  • Pages of type "Virtual Page" have improved stability in regards to their permission control, translation and publication.
  • More fine-grained permission control for translators
  • Better XSS security of the autologin token by using HTTPOnly cookies
  • More secure against brute force login attempts

Other key improvements

  • A "SiteConfig" record stores site-wide settings and default permissions and author groups for pages. Such settings can be set differently for different languages used on your website. A example setting is the theme your site uses, although this still be set at the code level.
  • The CMS now searches for broken internal links to other pages and broken file references, and highlights them in the WYSIWYG editor. A report can be used to show broken links across the website.
  • Improved API to allow custom tags to be parsed within CMS content before being presented on webpages.
  • Improved reporting API to unify the CMS sidebar reports and full-page reports on their own section. It's easier to add custom filters to reports.
  • Added dropdown to choose from existing anchor links when inserting a link from the CMS sidebar.
  • Improved broken link detection
  • Removed the jsparty/ toplevel folder, and moved all its dependencies into sapphire/thirdparty and cms/thirdparty
  • More than 350 bugfix and enhancement commits, plus over 200 minor changes

Full changelog

Want to help out?

We'd love for you to download this release, test it, and raise articulate bug reports. In particular, we are interested in:

  • Testing that upgrades from older versions of SilverStripe go smoothly.
  • Testing the new features, like hierarchical URLs, SQL Server, and PostgreSQL.
  • Manually testing that all CMS features work as intended.
  • Testing across various hosting environments, operating systems, PHP versions, and web browsers.

To raise a bug, log in at and create a new ticket. When adding a ticket, be sure to specify the version as 2.4.0 beta.

Post your comment

Note: Comments are moderated and won't show until they are approved


  • Great news! I look forward to employ some 2.4 final installations soon.

    Is it possible to install 2.4 beta over 2.3.6 stable, and to update that 2.4 beta later with 2.4 final?

    Thanks a lot and kind regards!

    Posted by Naturkost-Versand, 4 years ago

  • I think the new hierarchical URLs are very helpful. Thanks for adding them :)

    Posted by Joe Smith, 5 years ago

  • Could you please get rid of the blue background in the admin section. The color blue is evil. Also, black just annoys me. I would prefer a green. I'd appreciate if you could fix it right away.

    (I hope you're getting my sarcasm here)

    Posted by Plz get rid of the Blue background, 5 years ago

  • @Plz get rid of the ID numbers

    I think you may have OCD if you're worried about the ordering of page IDs that only an admin can see. You may want to concentrate on getting some help with your affliction instead of wasting everybody's time here.

    Posted by Anonymous, 5 years ago

  • "Yes, URLs have to be unique, but you *can* change them..." I said, when I do edit it, the old one 301's to the new, where do I edit/delete those automatic redirects?

    "Ids are just ids"...OK, so can they just make it so I can edit the ID? would still get an automatic value, but I could force a different value if I feel like it?...even some type of "re-number database" option would be good...

    "varchar vs int"...then make it a random number (not alpha numeric) or a timestamp, still int, not sequential...

    "Go write your own CMS if you have such a problem with them."...I think I'll have too...

    I think the "Home" page on the Demo being 86 is really weird, it's like..."What happened to pages 1 (or 0) thru 85? They created/deleted 85 pages before settling on page 86 for the Demo's Home page?

    Are you a dev (of SilverStripe) or just someone replying to comments?

    Posted by Plz get rid of the ID numbers, 5 years ago

  • Yes, URLs have to be unique, but you *can* change them: they are not static. (And you have some interesting issues with the new hierarchical URLs). You would incur all sorts of database overhead by using them as the primary key which would result in things running slower as the database gets bigger (varchar vs int). 666 is not evil. It's just a number. Ids are just ids. Go write your own CMS if you have such a problem with them.

    Posted by Get rid of id numbers, 5 years ago

  • "using auto incrementing integer primary keys is pretty standard"...yes, it is standard, which is why I can't use Drupal or Joomla! or anything else (SilverStripe)...

    Random IDs, for some reason, don't bother me (like YouTube IDs)...sequential numbers (Firefox AMO Addon/Author IDs) bother me cuz there's always too many 6's...666 is evil & no matter what I can't stand it...plz it keeps track of everytime you create & delete something...

    It would be 100 times easier for any of the CMS authors to do this, than for me to read the code, understand the code, find what to change & then change it...

    I agree the IDs are pretty hidden in SilverStripe, except for the admin panel, maybe they could just hide em more?

    But why does everything need an ID?...can't something else be used? For example the url coming into SilverStripe HAS to be unique, so let that be the ID or make a hash of the url (& update the hash if the url is edited)...

    Posted by Plz get rid of the ID numbers, 5 years ago

  • Why? Other than in URLs in the admin you never see them. It's irrelevant what structure goes on behind the scenes and using auto incrementing integer primary keys is pretty standard.

    Posted by Get rid of id numbers?, 5 years ago

  • Plz get rid of the ID numbers...I don't like when I create a page & it gets ID 1, create another page it gets ID 2, create another page, ID 3, delete page 2, create another page, get ID can never re-use ID 2...just use a random ID like df7sdf9s7d8 or an md5...

    Case-in-point on the demo site the "Home" page is ID 86...

    ...plz use random IDs (alpha numeric) or use no IDs at all (use the url or page title as the unique ID)...

    Also, on the demo site I created "New Page" & it got ID 6664, which is evil, but also it got the url...

    ...I tried to rename that to...

    ...& without any error msg it saved & published the change, but actually didn't change anything, you need a conflict msg if the url already exists, clearly showing you what is already using the url & allowing you to change it (the old url or new url), then I edited it to...

    ...& that worked, but then the old url was silently 301'ing to the new url, which is good, but where do I edit/delete those automatic redirects?...(I tried searching for 'redi' but it didn't find anything/anyway to list/edit/delete automatic redirects)...

    SilverStripe looks excellent, but this ever increasing ID thing really is a showstopper...if you won't get rid of it in the default SilverStripe, can you point me where in the code you generate IDs, so I can edit it?

    Also, I just found SilverStripe, but I can't believe "Hierarchical URL" is a "new feature" only in beta?...that should've been version 0.0.1...SilverStripe's admin interface is really good, but some of the other things like numbered IDs & not being able to have any url you want, would make it unbearable...nothing should not be it created the auto-redirect & seems to have no way to delete it...I didn't get a chance to test this yet, but if you can't, you should be able to delete any past revisions...omg it looks like versions of pages are numbered too...

    ...the version of a page should be a timestamp: 20100217191919...also it doesn't look like there is a way to delete a revision...

    I assume comments are numbered too, so get rid of ALL numbering, use a random unique ID or timestamp...& let the user (admin) edit the ID if they feel like it...

    Non-time-sensitive things, like a New Page, should get a random ID or MD5/SHA hash...time-sensitive things like comments, should get a timestamp (or random ID/MD5/SHA...just to make it all the same) know how Mercurial (hg) works?...they have Changeset IDs...

    Posted by Plz get rid of the ID numbers, 5 years ago

  • Cheers for the release guys, can't wait til this comes out of beta and we can role it out on the new SaleHoo site :)

    Posted by Simon - SaleHoo , 5 years ago

RSS feed for comments on this page | RSS feed for all comments

Want to know more about the company that brought you SilverStripe? Then check out

Comments on this website? Please give feedback.