Why so many modules?
I frequently see posts on the forums, or direct emails to me asking. 'Why do I need so many modules to implement this site'.... This particularly happens with respect to the e-commerce solutions.
People will say.... with package xyz all I have to do is install the package, and it does everything I want. Or they say.... I download package xyz then all I have to do is style it, and it's done. So why with your stuff is there a seperate module for everything?
Well, the answer is quite simple. It's the way we've chosen to allow flexibility, and hopefully simplicy for the end users (your customers). By separating code into modules, we allow greater flexibility, it becomes more like a 'building block' situation.... you take the various components off of the shelf, plug them together, and build a website. You can use different components for different websites, depending upon what your customer needs.
Given the E-commerce suite as an example, you can install the basic dependencies (CGExtensions,CGSimpleSmarty,FrontEndUsers,CustomContent) and easily configure a basic website with different private and public content. Perfect for a small corporation that wants to display private content to certain people. Next you can install the SelfRegistration module, and allow users to register themselves to your website, and bam! you've got a basic websie suitable for a club where people can register themselves to your site.
Next, if you add the Products module you can display different items to different people, and let them see all of the information about those products. Including images, downloadable files, pretty much anything you can think of.
Installing a cart module (there are currently three to chose from) will allow your 'customer' to select items that they wish to 'buy' or 'inquire about' or whatever.
Next, depending upon your customer needs.... you could install the Formbuilder module, and a couple of simple UDT's to have an email only based ordering system. But if you want to go further, you can install the Orders module which will allow for entering shipping information, and generating an invoice.
If you want to go even further, you can install and configure a shipping module to assist in calculating shipping costs, and a tax module to help in calculating taxes..... and lastly, you can select a payment gateway (there are currently two).... to allow your customer to pay for their purchases online.
All you have to do with these modules is configure them, edit the templates to your hearts content, and style as appropriate. CMS Made Simple makes that process simpler than any package I know of.
And because all of the modules are based on CMS Made Simple... you can still do further things. Maybe provide some team sport scores... provide photo albums, a blog... a membership list, display news information, the possibilities are endless. And when done, your customer should still have a relatively simple, easy to manage web site, that's as complex or as simple as he wants.
Those are the main reasons why we devide everything into seperate modules as much as possible. there are other reasons as well. But mostly for development purposes, deviding things logically into seperate modules allows more re-use. We can put duplicated code, or useful utilties into a base module to be re-used over and over again. This is why the CGExtensions module exists. We can also re-use code for multiple purposes. i.e: The comments module can be used to allow your users to comment on news articles, individual products, as well as individual pages. The uploads module can also work as a simple gallery.... The number of possibilities are limitless.
So, when you ask 'why so many modules'.... the main reason is 'flexibility'..... by providing different packages that fill different needs, we give the website developer the flexibility to build numerous different websites just by selecting the modules that he wants, and arranging them differently. So much power, so simple to use.

