我想要做的是在CodeIgniter中创建我的网站的移动版本。
我想将完整的网站重定向到m.example.com
视图和模型中的控制器都不会发生变化。两者都是一样的。
我不想更改我的.htaccess文件。任何可能的解决方案?
答案 0 :(得分:8)
答案 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子域。