PhpRiot
News Archive
PhpRiot Newsletter
Your Email Address:

More information

Microsoft Certified Applications: SilverStripe

Note: This article was originally published at Planet PHP on 24 November 2010.
Planet PHP

Microsoft recently certified the first open source web application to run on Windows Server 2008 R2. That application was SilverStripe, a Content Management System (CMS) originally developed by a team in New Zealand. There are many excellent CMS and other open source web projects but Microsoft saw something they liked in SilverStripe. Ibuildings are certified SilverStripe partners and have been working with it for quite some time, so I thought this was a great time to shed some light on this excellent product.

SilverStripe has put a lot of work into achieving good performance on Windows and IIS, but it also works well on Linux or Mac Servers running open source web server software. There is also a wide variety of databases which SilverStripe supports including SQLServer, MySQL, Postgres and SQLite.

What SilverStripe Offers

Every web site has different requirements, but a CMS application aims to provide a lot of the features needed while at the same time being easy to customise and extend. Database abstraction is particularly suited to a CMS since the schema is fairly simple and based around a page. SilverStripe has an advanced abstraction layer with an elegant syntax that effectively frees you from defining the database schema and instead lets you define models. In this article, I will show you how to define a new page type with custom fields by extending the Page model, and we'll also take a look at some of the areas that are particularly nicely done by Silverstripe.

Caching is another area that is particularly relevant to CMS systems since viewing of content is hopefully much more common than editing. In SilverStripe, caching can be done on specific areas of a page, or if a page is entirely static, whole pages can be pre-generated. Through the use of static page caching, very high-performance sites can be built.

Undoubtedly, one of SilverStripe's key strengths from an end user's perspective is that it offers an easy-to-understand and user-friendly administration interface. The focus of the backend is on editing and publishing content in a clear manner.

Developers who have to extend SilverStripe will find code that is mostly clean Object Oriented PHP that is a pleasure to work with. The core code can be extended in a variety of ways, including inheritance and decorator patterns, as well as by custom widgets and themes. The code base is well tested with a PHPUnit integration that can be used to test any custom code alongside the core.

Installing SilverStripe

Installing SilverStripe on Windows is particularly easy as it is available via the Microsoft Web Platform Installer. If you are on Windows this is a good choice since it will not only install and configure your selection of database, PHP and web server, but it will also install and setup wincache. This PHP extension dramatically improves the performance of PHP applications on Windows, similar to the way APC and other opcode caches improve PHP performance on Linux. Last year techportal published an article by Ivo benchmarking the speed boost provided by wincache looking specifically at SilverStripe and WordPress. The Web Platform installer is available from Microsoft and linked as a download option on silverstripe.org.

If you are not on Windows or don't wish to use the Platform Installer, you can simply download and extract the latest release from silverstripe.org. The web-based install script will then check the application's requirements and walk you through the process of configuring your installation.

The SilverStripe User Interface

SilverStripe has a user interface which is similar to modx, which you might be familiar with. If not, it is still fairly easy to familiarise yourself with, as it is designed to be approachable and easy to use.

1. The Site Tree

The site tree lists all the pages currently in the CMS, whether they are published or not. Different colours are used to indicate the current status of a page. As you can see, Pages can be nested into a hierarchy. By default, the top level of the hierarchy is shown in the menu although any page can be excluded from the menu.

2. The Content Edit Section

Content editing is through a tin

Truncated by Planet PHP, read more at the original (another 19275 bytes)