如果我有一个设计用于桌面web应用的网站,但我想创建一个面向移动的设计版本,我该如何在不维护两个逻辑非常相似的页面版本的情况下显示它呢?
我不能只为手机版本使用不同的CSS,因为我计划提供不同的HTML结构,有没有比在每个页面中使用大量if语句更好的方法呢?
发布于 2012-06-13 07:14:49
您的站点将有两个版本,一个用于桌面,另一个用于移动设备。然后,根据$_SERVER['HTTP_USER_AGENT'],您可以重定向用户。
例如:
<?php
// Let's define a function to make it easier to read
function is_mobile(){
$list = array('Android', 'Iphone'); // Add more yourself
foreach ($mobile as $agent) {
if (stripos($agent, $_SERVER['HTTP_USER_AGENT']) {
// Looks like mobile
return true;
}
}
// Assuming desktop by default
return false;
}
// Then before rendering a template, you'd it approach like this:
if (is_mobile()) {
require 'mobile.php';
} else {
require 'desktop.php';
} 发布于 2012-06-13 06:39:02
一种想法是实现像Smarty或Zend View这样的模板系统(有很多)。在主站点中,控制器代码将为您执行所有逻辑,并为模板变量赋值。然后,根据用于查看站点的版本(桌面/移动),加载适当的模板文件。它们可以有非常不同的HTML/CSS规则和结构,但在呈现视图之前仍然使用相同的PHP逻辑。
发布于 2012-06-13 06:39:34
有没有比在每个页面中使用大量if语句更好的方法?
是的,有一个更好的方法。不幸的是,如果你在设计你的网站时考虑到这一点,事情会容易得多。您可以做的是使用模板引擎将PHP代码和实际内容完全分开。因此,如果您想更改/添加一些新的客户端页面,这将是非常简单的。您只需向模板中添加内容即可。您还可以根据用户的用户代理字符串(包括操作系统信息)选择要加载的模板。PHP本身只负责从数据库/文件/任何获得动态数据的地方获取数据。
看看外面的许多template engines for PHP吧。
https://stackoverflow.com/questions/11005805
复制相似问题