I believe that most of the developers who are using modular separation are attempting to create a CMF-like (content management framework) set of extensions for CI. This is the framework style used by most CMS or portal systems. In a CMF, modules, blocks, and templates are usually separate entities stored in their own directory structures like so.
module/
modules/modulename/controllers/
modules/modulename/models/
modules/modulename/views/
blocks/
blocks/blockname/controllers/
blocks/blockname/models/
blocks/blockname/views/
templates/
templates/templatename/index.php
templates/templatename/js/template.js
templates/templatename/css/template.css
templates/templatename/images/image.png
CI treats module-specific views, block views, component views (widgets like trees or grids), and templates as a single entity called a view. Loader simply loads views from whatever search paths are supported by the view method. Part of the solution to this problem (which might not be a problem for all) is to make a distinction between module, block and template views in Loader and load the views from separate directory paths. This is fairly easy to do by adding additional search paths to the Loader’s view method.
Modular separation solves the problem of storing module resources in their own directory structures but does not solve the problems of storing blocks and/or templates in separate directory structures.
A block in a CMF is an independent entity with its own controller and model code. For example, you might have a login block appearing within the left column of a template. (Actually, you would also want to have a corresponding login module for redirects from other modules.) This login block could contain its own independent code for handling login operations or it could use methods from an accompanying module or library. Before MVC, this was fairly easy to do using procedural approaches—the controller, model, and view code was encapsulated in one or more files. To do this with MVC and provide proper code separation, this is usually handled by loading a block view and calling functions from a dedicated helper. The helper could contain the business logic code if required.
The reasoning for storing templates in separate directory structures is because in a CMF, you might need to use separate templates and/or themes for certain purposes. There are many reasons for this. One is customizing a site for a particular user by allowing the end user to select a specific template from a block. This is a popular thing on gaiming sites and community sites. Another issue is WAG compliance where certain colors might need to be displayed on a template to allow someone with color blindness to see template areas better. Or you might want to display a custom template for someone who was using a touch screen pointing device (e.g., a parapalegic or quadraplegic). Another issue is providing different template layouts for selected modules. For example, you might want to have some module controllers load templates with a menu block in a right or left columns, but use a separate horizontal menu block without left or right columns for a template designed for a forum where a wider screen display is preferred. In these cases, the preferred template for a specific module could be loaded from the module’s controllers.
You designed modular separation to meet your own needs, but some users are attempting to extend the approach to do the above. It’s not a big deal to modify the existing modular separation code to meet the above objectives. It’s more a matter of showing some examples as to how to do it. Modifying MY_Loader’s view methods is the best place to handle the above, thus the conversation you see in the original thread and this thread about handling those needs.