Welcome Guest, Not a member yet? Register   Sign In
Theming support in CI - Dirty Hack
#1

[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 !!!!




Theme © iAndrew 2016 - Forum software by © MyBB