Developing PHP CMS from Scratch Tutorials Series

Hello All,

How are you all today? Hope every body is fine just like me.

Today, I am starting a tutorials series on creating PHP based content management system from scratch.
Honestly speaking, I had no intention of creating a new CMS at all. I have found most of web designing freelancers have to deal with PHP and many of them are obessed with PHP and want to know how to develop in PHP.I have realized the fact and now I want to help begginers or intermediate level web designers who want to know the workings of a PHP application from scratch.

This series is also intended for web designers who work with CMS’s like Joomla / WordPress etc and have not extensive knowledge of PHP.

Please be advised this tutorial series is not for Advance PHP application coders and software engineers. This is for those who want to know workings of PHP based CMS. I will lead you from complete begining to Advance level.

At the time of writing this post, I just have started to develop this CMS. It is not pre-made. We will be going togather in step-by-step fashion.

So without waiting further let’s begin just right now!

Let’s begin it with a scenario suppose you have a client who wants you to develop a website with complete administration control. I will lead you through this scenario upto complete development of CMS.


I need to have you develop a website system which enables me to create, edit, delete as many web pages as possible with easy to administrate dashboard.Website system should also have ability to protect some of web pages to show to only accessible users.Additionaly, I will also need ability to manage widgets that apears on sidebar areas of website.Abilty to change the theme of website at anytime.


Based on problem statement of client, we need to develop a complete content management system which enables the client to manage website.

  1. Management of Webpages Content. (Main Requirment of Client)
  2. Access control on content
  3. Widgets at sidebar of website.
  4. Theming/Templating capability


We will use object-oriented programing(OOP) techniques to develop this CMS. Object-oriented programing helps to create stable, modular and manageble code.When an architect creates a building, he will make sure to have is base. Every building in the world stands on its base. Likewise we need to have a base of our CMS.The rest of CMS will be stand upon that base.So, in short we have four modules and one base.

CMS Modules

  1. Webpages Content Management (This is the module for the Main Requirement of Client)
  2. Access Control
  3. Widgets Management
  4. Templating/Theming Management
  5. CMS Base

The Base of website will contain objects which will be common for all of the modules like accessing database.Since “Access Control” module has functionality which will be required by all of other modules so instead of putting it seperately. It should be part of Base of our CMS.

So “Access Control” module should be merged into Base of CMS. Now 5 CMS modules have striped to 4 modules which are as fellows.

CMS Modules Revised

  1. Webpages Content Management (This is the module for the Main Requirement of Client)
  2. Widgets Management
  3. Templating/Theming Management
  4. CMS Base

Below is the abstract diagram of our current CMS structure.

PHP CMS structure diagram

In the next post, We will  start coding.


Experts teach you how to earn higher with developing websites in less time.

Experts teach you how to earn higher with developing websites in less time.

6 thoughts on “Developing PHP CMS from Scratch Tutorials Series

  1. Thanks, i have been googling around for this type of lesson, and now i found it, i really love this tutorial and it is very useful for me and for those who know php and don’t know how to start CMS. So thanks you so much for you hard work.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">