I am exploring how CMS’s in PHP work. I am talking about full-powered, fully developed CMS’s like Drupal, WordPress, and Joomla. What are the main components and systems that are incorporated into something like this.
For example; I know you will need a page loader to handle all page requests (direct all requests to index.php using the .htaccess file), you will need a database class, a templating class, and a hook system to provide user extendability. What else am I missing?
(Also, is there a book that explains the working components of a full-fledged CMS?)
I’d second starting with something like WordPress (not a real CMS I know) to get a feel for the sort of things you want your one to do. From there you could move up to Drupal or if you still feel the need to, look into building one in a framework (Codeigniter is a good one to start with).
Personally after a few years of rebuilding a CMS for each client I wish I’d got into Drupal quicker.