我想做的是在 CodeIgniter 中创建我的网站的移动版本。
我想将我的完整网站重定向到 m.example.com
控制器不会发生变化,视图和模型也不会发生变化。两者都是一样的。
我不想更改我的 .htaccess 文件。有什么可能的解决方案吗?
我想做的是在 CodeIgniter 中创建我的网站的移动版本。
我想将我的完整网站重定向到 m.example.com
控制器不会发生变化,视图和模型也不会发生变化。两者都是一样的。
我不想更改我的 .htaccess 文件。有什么可能的解决方案吗?
无需到处重写代码,您只需加载不同的视图文件夹即可。本质上,您可以让 CodeIgniter 在每次使用 $this->load->view("xxx") 时从另一个文件夹加载具有相同名称的不同视图。首先,在您的视图文件夹中创建一个名为 /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));
}
}
?>
在我看来,响应式网页设计是一团糟,但这仍然可以很好地为您分离代码,同时仍然能够一致地使用您的控制器和模型。
希望这可以帮助。这就是我要做的事情:)!
为什么要重定向?如果一切都一样,为什么不研究响应式网页设计?
24ways.org 有一些很好的文章:
http://24ways.org/2012/responsive-responsive-design/
http://24ways.org/2012/responsive-images-what-we-thought-we-needed/
好的,我找到了另一个解决方案。我使用了钩子预控制器,并将 www 子域重定向到 m 子域。