Fork CMS 3.0.0 released

  • Written by Matthias Mullie on Friday 28 October 2011

Today we released Fork 3.0.0. This release marks a new milestone in the life of Fork CMS and makes us get all emo and ponder about the past, present and future of Fork CMS. I'll leave that for another blogpost though and cut right to the chase with an overview of the new features.


For those unfamiliar with previous versions of Fork CMS: the Pages module, which is the heart and soul of Fork CMS, features a simplified representation of the website. It's possible to select different templates for different pages of your website, e.g. it's perfectly possible to have the design of your homepage be completely different than that of any other page, and even have other pages be different from one another.

Each template has its own simplified graphical represention, in which certain blocks were defined. These were to be slots where either editor content or a module or widget could be linked to, which would then be visible on the website. The editor content for all slots could than be entered in the main "content" tab.

Fork CMS 3.0.0 now combines this content-editing and the simplified graphical representation of the website into 1 nifty overview. More importantly however, is that this concept of fixed slots has also been upgraded. A page template new exists out of different fixed positions, where any number of blocks (being editor content, widgets or a module) can be linked to. These blocks can easily be dragged to other positions or set to be either hidden or visible.

A screenshot is worth a thousand words though, so here goes:

Fork CMS positions

For the designer/frontend developer creating these templates, not much has changed. The tools to create a template in the CMS have been upgraded as well, to feature the change to positions, and in the templates themselves, it's really only a matter of replacing the code for you blocks by iterations.

Next to these positions being an incredible usability & functionality improvement, there's also a big bonus for theme developers. Themes can now be portable across multiple Fork CMS setups. When installing a new theme on a website where all pages have already been added and all content has been entered, Fork CMS will automatically link templates of the new theme to pages where a template of the old theme with the same name had been added. And if these templates both happen to have the same position names (e.g. "left", "main", "right"), the content will automatically be assigned to the correct position in the new theme. Existing content that could not be matched will simply be kept apart and can easily be dragged into the right position when editing the page. When switching from one template to another one of the same theme on an existing page, this same logic applies.

And while we're at it, let's agree to a Fork CMS standard to make it easier on ourselves when we have to deal with work from an other. Let's always give the most important position of our template the name "main" (the one where the main content is to be assigned to.) Sidebars should be given the names "left" and "right", while a top-bar should be called "top". Sounds like a plan?

Talking about portable themes inevitably leads me to a second important addition in Fork CMS:

Extensions module: installable modules & themes

A new module has been added to Fork CMS to allow for module and theme installation from within the CMS.

As you can see in the right upper corner of both screenshots, it's possible to simply upload a zip of either a module or a theme straight into the CMS and it'll automatically be installed. For both modules and themes, this will require an info.xml to packaged in a zip alongside the code, to provide the necessary details to the CMS. This info.xml contains general information about the theme/module and it's author(s), and information about the available hooks if applicable (for a module) and the available templates (for a theme.) These info.xml files have been added to all core modules in Fork CMS as well as the default Triton theme already.

Fork CMS module installer

Fork CMS theme installer

3 themes have been created already and are freely available for everyone:

i18n or internationalization

We reached out to the community and they reached back! As a result of their hard work, we're able to add no less then 6 new languages to Fork CMS. These are:

As kind of an easter egg, we have also added translations of 2 languages that were still in progress, though these can not yet be selected as active languages.

If you think you can help us make Fork CMS available to an even broader audience by translating it to your language - or help keep the existing languages up-to-date, I urge you to keep track of Fork CMS on GitHub and submit pull requests with improved translations. Note: not every single message has been translated. There are about 20 translations missing, mainly for the module & themes installer. This is because we were still developing this functionality while they were already translating.

I would like to thank everyone who helped translate Fork CMS to his/her language. I know what an effort it has been. I firmly believe that your efforts will go a long way towards the worldwide adoption of Fork CMS.

Not only are all these translations available, we have also made it possible to use non-alphanumeric characters in urls. Wikipedia-style! Yes, a url can now look like this:博客

Updated folder structure/installer

One more important change brought to the table is the updated folder structure. No longer is it required to have the default_www and library folders lined up on the same level, with library being outside of the document_root. Upon installation of Fork CMS, you can now just unpack all files directly into your document root. If you so desire, you can still manually move the library folder outside of your document_root however.

We have updated this because we noticed a lot of people were having problems getting Fork CMS running on sub-par hosting. Unfortunately, server administrators impose too strict rules on their clients, which in our case made it hard for some people to install Fork CMS. This should now be history. The Fork CMS installer has also been upgraded to check for the possibility of url-rewriting in a correctly configured Apache environment, and we have created a more thourough article on how to install Fork CMS on different webservers.

Full list of improvements

The above-mentionned changes were only just the highlights. Fork CMS 3.0.0 brings along countless bugfixes and a whole bunch of improvements. Here's a more complete list of all additions:

  • Core: completely re-invented the blocks system, it's now position-driven.
  • Core: introduce the concept of positions that can contain an arbitrary number of blocks.
  • Pages: merged tabs "Content" & "Template" to present a more straightforward UI.
  • Pages: added ability to order blocks on a page.
  • Pages: created fallback-system for blocks that were assigned to no-longer-existing positions.
  • Pages: added the posibility to show/hide a block.
  • Pages: edit HTML content in TinyMCE in a dialog.
  • Core: updated installer.
  • Core: updated template creation in backend.
  • Core: updated theme Triton to be position-based.
  • Pages: added the possibility to either completely overwrite or re-use existing blocks when updating a template.
  • Core: removed has_extra and extra_ids from pages database and replaced it with joins resulting in the same result but based upon real data (rather than just relying on the existing scripts.)
  • Installer: added 'getTemplateId' function to easily fetch a template id.
  • Installer: added 'warnings' to warn for less optimal systems but allow installation anyway.
  • Installer: added improved test for mod_rewrite (will produce warning if not enabled.)
  • Installer: refactored code: every step now doublechecks all previous steps and redirects back on error.
  • Core: updated folder structure to prevent installation issues with folders needing to be outside the document root.
  • Core: removed "markup" folder, this is now available at
  • Core: allow for non-standard characters to be used in urls.
  • Core: validate slugs that are being added with javascript whilst typing the title using meta-class.
  • Core: updated default favicon.
  • Pages: updated pages getNavigation; the 'includeChildren' parameter was useless.
  • Core: refactored javascript ajax-calls.
  • Installer: refactored installation of dashboard widgets.
  • Analytics: dashboard widgets are now added for all users upon installation.
  • Profiles: refactored action names to better represent their purpose.
  • Extensions: uploaded modules can be installed.
  • Extensions: uploaded themes can be installed.
  • Extensions: it is now possible to install modules via ZIP upload in the CMS.
  • Extensions: it is now possible to install themes via ZIP upload in the CMS.
  • Core: the active state of modules has been stripped. This is no longer useful.
  • Core: new coding standards have been applied.
  • Locale: added translations for Chinese (by Millie Lin -
  • Locale: added translations for French (by Matthias Budde - & Jeremy Swinnen -
  • Locale: added translations for German (by Philipp Kruft -
  • Locale: added translations for Hungarian (by Bota David -
  • Locale: added translations for Italian (by NebuLab -
  • Locale: added translations for Russian (by Медведев Илья -
  • Locale: added partial translations for Turkish (by Serkan Yildiz -!/GeekOfWeb)
  • Locale: added partial translations for Polish (by Pawel Frankowski - & Konrad Confue PrzydziaÅ‚ -
  • Blog: the blog module now standard has an image field.


Thanks to everyone who has contributed to Fork CMS! If you want to help make a difference, fork Fork CMS on GitHub and help us out.


Thursday November 10th, we'll be having a release party at the Netlash-bSeen offices in Voorhavenlaan 31, 9000 Ghent, Belgium. We'll open at 19:00 and start with a short presentation, discussion the new functionalities of Fork CMS 3.0.0, at 19:30. After that, let's just have a drink and get to know each other.

So, what do you guys think about Fork CMS 3.0.0?


Rafael Trabasso wrote 12 years ago

Hello Fork people.

I'm a webdesigner searching for an option of a Open Source CMS besides Wordpress.

I've been working for some time now with my brother (who is a Science Computer guy) and we use Wordpress for personal sites and blogs. But I think WP is great, but overloaded with needless stuff. As a production engineering student, this annoys me at the highest level.

Fork seems so far a good alternative - I haven't downloaded it yet, just stumbled into here.

My questions are:

1. As a webdesigner used to Wordpress, will I spend a lot of time learning how to create things for Fork?

2. As a back-end developer and programmer, will my brother have a hard time learning how to create thinks for Fork?

Of course I'll download and have a look at it, but I'm halfway with some Wordpress projects so any light you can shed on this matter will be of great help.

Thanks a lot

Rafael (


hans wrote 12 years ago

This CMS is new to me and I will definitely try it out. Seems really fresh and easy to use. Great to have different opportunities to choose from. You guys kick asses!

I,Medvedev wrote 12 years ago

You have an error in the link "1950 (by Xavier Bertels)"

Stefan wrote 12 years ago

I'm in love with the new positions feature. Looks amazing for someone (working one man strong) with a front-end background to have a visual representation of how content will be displayed. Does this come with drag and drop as well? Err.. I'll just try it myself this evening. Hopefully the final step to switch from my dinosaur CMS Textpattern to Fork.

mlitn wrote 12 years ago

@Rafael: The hardest thing to overcome right now will most likely be the lack of extensive documentation, though we're working very hard on it, and Fork CMS comes packed with modules and example themes are available as well, so these could be a great starting point.

I believe the learning curve for both frontend and backend development is not too steep at all, though I may not be the right person to judge. I would love to hear someone else's opinion about this as well :)

@I.Medvedev: thanks for noticing, fixed it!

@Stefan: yes, the blocks can easily be dragged from one position to another.

Brecht Billiet wrote 12 years ago

Nice job guys!

Exited to use it.

Is the release party open for everyone?

Tijs wrote 12 years ago

@Brecht: it is open for everyone.


Uzair wrote 12 years ago

Simply in love with Fork CMS. Discovered it like 2 months ago. And today implementing it for a client.

Need to know how to upgrade from version 2.6.x to 3.0, without breaking down things already implemented? Any help would be very much appreciated.

Secondly, 2 great feature seem missing from the whole thing, i.e., a dynamic Events Calendar and a News Management Module/Widget. Would love to see it included sometime soon.

Keep up the good work guys. Two thumbs up.

Stormbloom wrote 12 years ago

I'm going to give this a try. I have been learning Wordpress and use it with a client. I find that for someone like myself, asking a simple question in the WP codex, usually results in more questions than the answer that I'm looking for. I hope to find this place to be less of a frustrating environment.

Tijs wrote 12 years ago

@Uzair: for news, we mostly use the blog-module. Through the settings-tab you can disable comments.

On github there is a events-branch, but this is still in development. And I don't think it is compatible with 3.0.0 yet.

Upgrading from 2.x.x, to 3.x.x will be a manual process. The pages-module was changed a lot, so it isn't backwards compatible.


walter wrote 12 years ago

I cannot edit and re-publish a blog entry. I keep getting an error:

"This Item does not exist"

But it does exist! i am jus trying to edit out an error and then publish again.

what am i missing?

PS i can create new entries easily.

Tijs wrote 12 years ago

Walter, can you check with the latest version?