Posted on 22/9/08 by Felix Geisendörfer
This is a guest post by Róbert "klevo" Starší, developer of the open source CakePHP CMS wildflower. I came across the project a few weeks ago and really liked what I saw. So I contacted Róbert to see if he was interested in writing a little post about it. He said yes, and here is what I think will be an excellent read for anybody working on CMS systems in CakePHP.
-- Felix Geisendörfer aka the_undefined
Wildflower, a CakePHP CMS
There are hundreds of PHP Content Management Systems. Why would a decently earning freelancer, hacking Wordpress to fit any clients need decide to write one from scratch? The reason is CakePHP. When I picked up CakePHP it was a little revolution. The quality of my apps got better, I growed a lot as a coder thanks to it and I did stuff faster. But when the time to build a relative simple client site came, I always resorted to Wordpress. You know the classic requirements: content managed pages, some news section. Every client also throws something specific into the mix, like a booking form, availability calendar a page pulling RSS from somewhere... I always had a hard time coming back from happy baking to plugin fixing and hacking together procedural PHP. Don't get me wrong, Wordpress is great and it has and will have it's huge user base. But we Cakers know better, don't we?
So what does a programmer do when he's not comfortable with the tool he uses? He programs a new one. It's slightly more than a year that I started a project called Wildflower. The tag line is A CakePHP CMS.
What's in the box?
The currently released version is 1.2 Beta. It has many similarities to the status of CakePHP 1.2 branch. It's not finished, but I use it in production and with success. Stuff gets fixed along the way, depending on the real world requirements. You get the classic components that you would expect in a CMS:
- Content managed pages
- Blog (or posts) with categories and comments
- Contact form with messages archive
- File manager
- User accounts
Under the hood runs CakePHP 1.2 and I permanently update it with the latest revision. A picture is worth a thousand words:
The user interface
I think the user interface is the most important part from your clients perspective. You don't want to explain how to post a page. I actually prefer zero explanation. So it must be very intuitive. When designing it my inspiration was the stuff from Apple and 37signals. So far, I've got very positive reactions. We'll see as the user base grows. As everything, it will constantly get better based on the input.
The developer experience
Since I was building this tool for myself, I wanted it to help me with my work as much as possible. So I baked in a few things to help with some less exciting aspects of developing.
When you move your site from the development machine to a real domain or from a folder to a sub-folder, etc., there's zero work involved. No running trough a SQL dump and replacing localhost with mysite.com. This is also true for the database config. You can define all the configurations for all the machines the app runs on and they are switched automatically based on the current domain name. By uncommenting one line in the root .htaccess file you switch your site to 'offline' mode, so you can safely deploy a new version.
These are details. But together they can save time.
jQuery Light MVC [JLM]
Another feature of the assets_controller is the ability to use Cakes internalization function
<l18n> tag. This works globaly for all the JLM files.
If this sound a little crazy to you, don't be afraid. You're not locked into this. You can do your JS on your Wildflower powered sites the way you want.
The bad news is there is zero documentatio for this at the moment. With the exception of code documentation, which I try to write as much as possible in the whole project.
The current goal is to polish the 1.2 version and make a great stable release. This includes the move to a CakePHP plugin architecture. Currently I am using the Cake's additional MVC paths feature, defined in bootstrap.php. This approach makes it a little trickier to merge Wildflower with an existing CakePHP application.
Internalization could or could not make it to the final 1.2 release. There is one company working on this with me, but I haven't seen any code from them yet. The documentation also needs to be looked at as soon as possible.
My name is Róbert "klevo" Starší and I am freelance web developer from a small European country - Slovakia. I do this for a few years and I really enjoy the ride. Along the way I've touched the dark side of ASP.NET, been riding Rails and deployed a million Wordpress sites. Currently I am exploring (thanks to this project) the often forgotten database alternative - PostgreSQL and I am really starting to wonder why we use MySQL all the time.
Help is welcome. Critique is welcome too. The easiest way to help this project is to try the CMS for yourself and report any bugs or enhancements you find along the way. You can also join the core team, which currently consist of me. But first make your homework and submit some great patches. Then I'll gladly give you the SVN access. The point is however, to keep the code quality at least at the current level. Another important thing is to follow the projects coding style.
- Wildflower home page
- Google Code project page, including the SVN repository and bug reporting
Thanks to Felix for making this guest post happen.
You can skip to the end and add a comment.
This post is too old. We do not allow comments here anymore in order to fight spam. If you have real feedback or questions for the post, please contact us.