用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1350|回复: 3
收起左侧

[HELP] 路由适配H5站

[复制链接]
发表于 2014-11-3 17:04:15 | 显示全部楼层 |阅读模式
我现在需要在用户访问pc版的每个页面时候 自动适配到对应的手机站地址,用的kohana 但是那个我不知道如何下手。我也用ci ,ci如果解决了应该能互通吧,
发表于 2014-11-3 19:03:39 | 显示全部楼层
1,前台做成相应式的
2,user_agent类中有方法判断是不是移动端 is_mobile(),然后根据情况输出试图
 楼主| 发表于 2014-11-3 19:58:43 | 显示全部楼层
一叶扁舟 发表于 2014-11-3 19:03
1,前台做成相应式的
2,user_agent类中有方法判断是不是移动端 is_mobile(),然后根据情况输出试图 ...

我的意思是找到一个合理的主入口,像我有一个base类 不过他是继承了底层的template类 ,如果编码方式不统一,有的入口就不一定能加载到匹配的代码,不过我现在还是先试试在base里面加上 慢慢调整吧,
在此谢过了。
发表于 2014-11-3 23:14:09 | 显示全部楼层
MY_Router.PHP



PHP复制代码
<?php
if (!defined('BASEPATH')) {
        exit ('No direct script access allowed');
}
class MY_Router extends CI_Router {
        public function __construct() {
                parent :: __construct();
                if ((isset ($_GET['app']) && $_GET['app'] == 'mobile') || ($this->is_mobile())) {
                        $this->directory = 'mobile/';
                }
        }
       
        function is_mobile() {
                $user_agent = $_SERVER['HTTP_USER_AGENT'];
                $mobile_agents = Array (
                        "240x320",
                        "acer",
                        "acoon",
                        "acs-",
                        "abacho",
                        "ahong",
                        "airness",
                        "alcatel",
                        "amoi",
                        "android",
                        "anywhereyougo.com",
                        "applewebkit/525",
                        "applewebkit/532",
                        "asus",
                        "audio",
                        "au-mic",
                        "avantogo",
                        "becker",
                        "benq",
                        "bilbo",
                        "bird",
                        "blackberry",
                        "blazer",
                        "bleu",
                        "cdm-",
                        "compal",
                        "coolpad",
                        "danger",
                        "dbtel",
                        "dopod",
                        "elaine",
                        "eric",
                        "etouch",
                        "fly ",
                        "fly_",
                        "fly-",
                        "go.web",
                        "goodaccess",
                        "gradiente",
                        "grundig",
                        "haier",
                        "hedy",
                        "hitachi",
                        "htc",
                        "huawei",
                        "hutchison",
                        "inno",
                        "ipad",
                        "ipaq",
                        "ipod",
                        "jbrowser",
                        "kddi",
                        "kgt",
                        "kwc",
                        "lenovo",
                        "lg ",
                        "lg2",
                        "lg3",
                        "lg4",
                        "lg5",
                        "lg7",
                        "lg8",
                        "lg9",
                        "lg-",
                        "lge-",
                        "lge9",
                        "longcos",
                        "maemo",
                        "mercator",
                        "meridian",
                        "micromax",
                        "midp",
                        "mini",
                        "mitsu",
                        "mmm",
                        "mmp",
                        "mobi",
                        "mot-",
                        "moto",
                        "nec-",
                        "netfront",
                        "newgen",
                        "nexian",
                        "nf-browser",
                        "nintendo",
                        "nitro",
                        "nokia",
                        "nook",
                        "novarra",
                        "obigo",
                        "palm",
                        "panasonic",
                        "pantech",
                        "philips",
                        "phone",
                        "pg-",
                        "playstation",
                        "pocket",
                        "pt-",
                        "qc-",
                        "qtek",
                        "rover",
                        "sagem",
                        "sama",
                        "samu",
                        "sanyo",
                        "samsung",
                        "sch-",
                        "scooter",
                        "sec-",
                        "sendo",
                        "sgh-",
                        "sharp",
                        "siemens",
                        "sie-",
                        "softbank",
                        "sony",
                        "spice",
                        "sprint",
                        "spv",
                        "symbian",
                        "tablet",
                        "talkabout",
                        "tcl-",
                        "teleca",
                        "telit",
                        "tianyu",
                        "tim-",
                        "toshiba",
                        "tsm",
                        "up.browser",
                        "utec",
                        "utstar",
                        "verykool",
                        "virgin",
                        "vk-",
                        "voda",
                        "voxtel",
                        "vx",
                        "wap",
                        "wellco",
                        "wig browser",
                        "wii",
                        "windows ce",
                        "wireless",
                        "xda",
                        "xde",
                        "zte"
                );
                $is_mobile = false;
                foreach ($mobile_agents as $device) {
                        if (stristr($user_agent, $device)) {
                                $is_mobile = true;
                                break;
                        }
                }
                return $is_mobile;
        }
        function set_directory($dir) {
                $this->directory =  $dir . '/';
        }
        function _validate_request($segments) {
                if (count($segments) == 0) {
                        return $segments;
                }
               
                if($this->fetch_directory()==$segments[0].'/'){
                        $this->set_directory('');
                }
               
                if (file_exists(APPPATH . 'controllers/' . $this->fetch_directory() . $segments[0] . '.php')) {
                        return $segments;
                }
                if (is_dir(APPPATH . 'controllers/' . $this->fetch_directory() . $segments[0])) {
                        $temp = array (
                                'dir' => '',
                                'number' => 0,
                                'path' => ''
                        );
                        $temp['number'] = count($segments) - 1;
 
                        for ($i = 0; $i <= $temp['number']; $i++) {
                                $temp['path'] .= $segments[$i] . '/';
 
                                if (is_dir(APPPATH . 'controllers/' . $temp['path'])) {
                                        $temp['dir'][] = str_replace(array (
                                                '/',
                                                '.'
                                        ), '', $segments[$i]);
                                }
                        }
                        $this->set_directory(implode('/', $temp['dir']));
                        $segments = array_diff($segments, $temp['dir']);
                        $segments = array_values($segments);
                        unset ($temp);
 
                        if (count($segments) > 0) {
                                if (!file_exists(APPPATH . 'controllers/' . $this->fetch_directory() . $segments[0] . '.php')) {
                                        if (!empty ($this->routes['404_override'])) {
                                                $x = explode('/', $this->routes['404_override']);
                                                $this->set_directory('');
                                                $this->set_class($x[0]);
                                                $this->set_method(isset ($x[1]) ? $x[1] : 'index');
                                                return $x;
                                        } else {
                                                show_404($this->fetch_directory() . $segments[0]);
                                        }
                                }
                        } else {
                                if (strpos($this->default_controller, '/') !== FALSE) {
                                        $x = explode('/', $this->default_controller);
                                        $this->set_class($x[0]);
                                        $this->set_method($x[1]);
                                } else {
                                        $this->set_class($this->default_controller);
                                        $this->set_method('index');
                                }
                                if (!file_exists(APPPATH . 'controllers/' . $this->fetch_directory() . $this->default_controller . '.php')) {
                                        $this->directory = '';
                                        return array ();
                                }
 
                        }
                        return $segments;
                }
                if (!empty ($this->routes['404_override'])) {
                        $x = explode('/', $this->routes['404_override']);
                        $this->set_class($x[0]);
                        $this->set_method(isset ($x[1]) ? $x[1] : 'index');
                        return $x;
                }
                show_404($segments[0]);
        }
}
复制代码

本版积分规则