Mobile version of site using CodeIgniter

倾然丶 夕夏残阳落幕 提交于 2019-12-22 08:31:13

问题


What I want to do is to create a mobile version of my web site in CodeIgniter.

I want to redirect my complete web site to m.example.com

There will be no change in controllers, neither in views and models. Both will be the same.

I don't want to change my .htaccess file. Any possible solutions for this?


回答1:


The user agent class has a function;

$this->agent->is_mobile();

You could use this in the construct of your base controller(s) to test if mobile.




回答2:


Instead of rewriting your code all over the place, you can just load a different view folder. In essence what will happen is you can just have CodeIgniter load a different view with the same name from another folder everytime you use $this->load->view("xxx"). First, create a new folder in your view folder called /mobile and just create views with the same exact naming conventions and it will load the the view accordingly by extending the Loader.php class.

Whether you are doing a responsive design or if you are going to create an iPhone app looking mobile version of your site, kind of like what facebook does, then you can just override the Loader class in the core folder. In your application/core folder create a MY_Loader.php and put it in that file.

Mine looks like the following

<?php  if (! defined('BASEPATH')) exit('No direct script access allowed');


class MY_Loader extends CI_Loader
{
    //overides existing view function    
    function view($view, $vars = array(), $return = FALSE)
    {
        $CI =& get_instance();

        $CI->load->library("user_agent");

        if($CI->agent->is_mobile()){
            $view = 'mobile/'.$view;
        }

        return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
    }
}  

?>

Responsive web design is a mess in my opinion, but this still separates the code for you very nicely, while still being able to use your controllers and models in unison.

Hope this helps. This is the way I will be going about it :) !




回答3:


Why a redirection? If everything is the same, why not look into Responsive webdesign?

24ways.org has some good articles for it:

http://24ways.org/2012/responsive-responsive-design/
http://24ways.org/2012/responsive-images-what-we-thought-we-needed/



回答4:


Ok I found another solution. I used hooks pre controller and I redirect www subdomain to m subdomain.



来源:https://stackoverflow.com/questions/13928677/mobile-version-of-site-using-codeigniter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!