首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于PHP的站点如何为不同版本的站点提供服务?

问基于PHP的站点如何为不同版本的站点提供服务?
EN

Stack Overflow用户
提问于 2012-06-13 06:31:57
回答 4查看 298关注 0票数 0

如果我有一个设计用于桌面web应用的网站,但我想创建一个面向移动的设计版本,我该如何在不维护两个逻辑非常相似的页面版本的情况下显示它呢?

我不能只为手机版本使用不同的CSS,因为我计划提供不同的HTML结构,有没有比在每个页面中使用大量if语句更好的方法呢?

EN

回答 4

Stack Overflow用户

发布于 2012-06-13 07:14:49

您的站点将有两个版本,一个用于桌面,另一个用于移动设备。然后,根据$_SERVER['HTTP_USER_AGENT'],您可以重定向用户。

例如:

代码语言:javascript
复制
<?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';
} 
票数 3
EN

Stack Overflow用户

发布于 2012-06-13 06:39:02

一种想法是实现像Smarty或Zend View这样的模板系统(有很多)。在主站点中,控制器代码将为您执行所有逻辑,并为模板变量赋值。然后,根据用于查看站点的版本(桌面/移动),加载适当的模板文件。它们可以有非常不同的HTML/CSS规则和结构,但在呈现视图之前仍然使用相同的PHP逻辑。

票数 2
EN

Stack Overflow用户

发布于 2012-06-13 06:39:34

有没有比在每个页面中使用大量if语句更好的方法?

是的,有一个更好的方法。不幸的是,如果你在设计你的网站时考虑到这一点,事情会容易得多。您可以做的是使用模板引擎将PHP代码和实际内容完全分开。因此,如果您想更改/添加一些新的客户端页面,这将是非常简单的。您只需向模板中添加内容即可。您还可以根据用户的用户代理字符串(包括操作系统信息)选择要加载的模板。PHP本身只负责从数据库/文件/任何获得动态数据的地方获取数据。

看看外面的许多template engines for PHP吧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11005805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档