使用CodeIgniter的移动版网站

时间:2012-12-18 08:02:29

标签: php codeigniter redirect mobile routes

我想要做的是在CodeIgniter中创建我的网站的移动版本。

我想将完整的网站重定向到m.example.com

视图和模型中的控制器都不会发生变化。两者都是一样的。

我不想更改我的.htaccess文件。任何可能的解决方案?

4 个答案:

答案 0 :(得分:8)

用户agent class有一个功能;

$this->agent->is_mobile();

您可以在基本控制器的构造中使用它来测试是否移动。

答案 1 :(得分:5)

您可以只加载不同的视图文件夹,而不是在整个地方重写代码。实质上,只要你使用$ this-> load-> view(“xxx”),你就可以让CodeIgniter从另一个文件夹中加载一个具有相同名称的不同视图。首先,在名为/ mobile的视图文件夹中创建一个新文件夹,只创建具有相同命名约定的视图,并通过扩展Loader.php类来相应地加载视图。

无论您是在做响应式设计,还是要创建一个看起来像移动版网站的iPhone应用程序,有点像facebook所做的那样,那么您只需覆盖核心文件夹中的Loader类。在你的应用程序/核心文件夹中创建一个MY_Loader.php并将其放在该文件中。

我看起来像以下

<?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));
    }
}  

?>

响应式网页设计在我看来是一团糟,但这仍然可以很好地区分代码,同时仍然可以同时使用你的控制器和模型。

希望这会有所帮助。这就是我将要开展的方式:)!

答案 2 :(得分:3)

为什么要重定向?如果一切都一样,为什么不考虑响应式网页设计呢?

24ways.org有一些很好的文章:

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

答案 3 :(得分:0)

好的我找到了另一个解决方案。我使用了钩子预控制器,我将www子域重定向到m子域。