When I was learning how to use Magento back in 2010, everything was taught to be placed in a separate module. This made sense. You want your code to be modular so that you can easily move it from one installation to another and most of the people implementing Magento probably are doing work for multiple instances of Magento.
However, I work for a single company and we run a single instance of Magento. Does that mean that my modules must be neatly organized in separate modules so that they could be packaged for distribution? Do I need all the overhead for having everything separate?
I answer that question with a resounding “Hell no!”
For me, 90% of the time all I needed to do what add small pieces of functionality to the website that was specific to our business. Some examples of this was creating a custom contract form that drops the content into our custom built customer service platform, a form to handle catalog requests (that again dumped into our customer service platform), custom landing pages and finally a page that allows customers to check the status of their order from our backend system.
These things all were small tasks that added a lot of value to the website. Almost all of them were one or two pages connected by a form post. To me it seemed like a waste of time to have everything separated out. They were absolutely specific to our store and we are not in the business of distributing modules so we opted for the time savings.
I call this module Custompage.
Having everything in a single module has saved me many hours of development time because I don’t have to spend the time worrying about the different XML files or figuring out if my file structure is correct. That work has been done already so I just have to add on to what is already there.
Each individual thing that Custompage does is contained within it’s own controller so that there still is a clear separation between the things that it does.
The functionality is the same to the end user; they don’t know that everything is contained together (and really, why would they care?).
The one argument against this could be that you’ll see URLs that start with /custompage all over the place. I have a workaround for that too! I just place the URL I want into the URL index and I move on.
It is just so much simpler this way. Am I crazy?