Theming support in CI - Dirty Hack |
[eluser]vukasin0[/eluser]
Theming - Dirty Hack Hi All, I want to share with you about my Dirty Hack for theming support in CI. It is simple and working just fine - I like simple things :-) Here is my folder structure: /application/controllers/main.php /application/views/main_view.php /static/themes/default/ ----------------------mobile/ -----------------------------js/ -----------------------------css/ -----------------------------images/ -----------------------------views/ -----------------------------------main_view.php ----------------------ie/ ------------------------js/ ------------------------css/ ------------------------images/ ------------------------views/ -----------------------------main_view.php ----------------------html5/ ---------------------------js/ ---------------------------css/ ---------------------------images/ ---------------------------views/ --------------------------------main_view.php /static/themes/custom/ ----------------------mobile/ -----------------------------js/ -----------------------------css/ -----------------------------images/ -----------------------------views/ -----------------------------------main_view.php ----------------------ie/ ------------------------js/ ------------------------css/ ------------------------images/ ------------------------views/ -----------------------------main_view.php ----------------------html5/ ---------------------------js/ ---------------------------css/ ---------------------------images/ ---------------------------views/ --------------------------------main_view.php Where is HACK ? Into: /application/views/main_view.php (access url: http://localhost/main) Include: Code: include_once "./static/themes/".$theme."/".$agent."/views/main_view.php" $theme: default, custom $agent: mobile, ie, html5 $theme & $agent are passed from controller where I do check for user's theme and for used agent (mobile, internet explorer and all others html5 compatible). So all the time "Main" controller will call /application/views/main_view.php view. Depend on theme users settings and agent used - appropriate View will be loaded from "themes" extended location (/static/themes/). Additionally restrict access to VIEW folders inside of THEMES for security reason. I use NGINX so here is syntax: location /var/www/html/project_name/static/themes/default/html5/views { deny all; } location /var/www/html/project_name/static/themes/default/mobile/views { deny all; } location /var/www/html/project_name/static/themes/default/ie/views { deny all; } location /var/www/html/project_name/static/themes/custom/html5/views { deny all; } location /var/www/html/project_name/static/themes/custom/mobile/views { deny all; } location /var/www/html/project_name/static/themes/custom/ie/views { deny all; } I you use Apache, .htaccess will do job. What do you think about this approach ? Cheers !!!! |
Welcome Guest, Not a member yet? Register Sign In |