我想要做的是在CodeIgniter中创建我的网站的移动版本。使用CodeIgniter的移动版网站
我想重定向我的完整的网站m.example.com上
不会有任何变化,控制器,无论是在视图和模型。两者都是一样的。
我不想更改我的.htaccess文件。任何可能的解决方案?
我想要做的是在CodeIgniter中创建我的网站的移动版本。使用CodeIgniter的移动版网站
我想重定向我的完整的网站m.example.com上
不会有任何变化,控制器,无论是在视图和模型。两者都是一样的。
我不想更改我的.htaccess文件。任何可能的解决方案?
好的,我找到了另一种解决方案。我使用钩子预控制器,并将www子域名重定向到m子域。
为什么重定向?如果一切都一样,为什么不看响应网页设计?
24ways.org有它的一些好文章:
http://24ways.org/2012/responsive-responsive-design/
http://24ways.org/2012/responsive-images-what-we-thought-we-needed/
+1:这个问题不是一个很好的答案,但是这是正确的做法。 –
而不是重写你的代码遍布整个地方,你可以加载一个不同的视图文件夹。实质上,如果每次使用$ 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));
}
}
?>
自适应网页设计在我看来是一个烂摊子,但仍分开的代码对你非常漂亮,同时仍然能够使用你的控制器和模型一致。
希望这会有所帮助。这就是我将要这样做的方式:)!
+1:在我看来,这个解决方案非常完美和简单。只改变观点,保留所有其他内容。 – butters
我用了一个非常类似的解决方案。唯一不同的是,因为我不需要将每个视图都更改为移动设备,所以我会首先执行file_exists检查,如果没有,则返回到桌面版本 –
检查控制器中的移动检测并重定向它。在我看来很直接。你有什么问题? – itachi
如果控制器,型号或视图没有变化,您为什么需要移动网站? – Rooneyl
现在让Google为移动领域编制索引。我以后会把它们分开。 –