2016-10-26 3 views
0

m.project_name 대신에 다른보기 폴더 m.view을로드하려고 생각했습니다. 내 footer.php에서CodeIgniter : 모바일 버전을 만드는 대신 화면 너비에 따라 다른보기를로드 하시겠습니까?

function load_views($view, $data = []) { 
    // load m.view for mobile 
    $this->load->view('templates/header'. $data); 
    $this->load->view($view, $data); 
    $this->load->view('templates/footer', $data); 
} 

:

$this->load_views('home/index.php', $data); 

그리고 My_Controller.php에서 :

<script> 
    if (screen.width < 937) { 
     window.location('http://localhost/m.project_name'); 
    } 
</script> 

그러나 인 생각 나는 템플릿 내가 단지 컨트롤러에서 다음을 그래서 "자동 로딩"하고 http://localhost/project_name/controller/method/p1에서 기본 페이지로 리디렉션됩니다.

+0

모바일 페이지를 모바일 장치로 보내려면 전송하기 전에이를 감지해야합니다 모든 페이지에서 클라이언트에서 리디렉션을 시작하는 이상한 물건을 막을 수 있습니다. 요청이 서버로 전송되면 요청의 헤더에 사용자가 사용중인 장치/브라우저에 대한 정보가 포함됩니다. 그 정보를 바탕으로 당신이하고 싶은 것을 결정할 수 있습니다. – Glubus

+0

네, 아마도 쿼리 문자열을 통해 너비를 보냅니다. 그러나 그것은 내가 깨끗한 URL을 가지지 않고 모든 링크에 질의 문자열을 설정해야한다는 것을 의미합니다. – mzcoxfde

+1

심각하게 -이를 위해 프론트 엔드 프레임 워크를 사용하십시오. 세 가지 주요 항목은 부트 스트랩 3입니다. http://getbootstrap.com Foundation : http://foundation.zurb.com 및 Jquery Mobile https://jquerymobile.com – cartalot

답변

1

당신은 실제로 ... 난 당신이 찾고 있던,하지만 어쩌면이 도움이 될 것입니다 모르겠어요 그래서 질문을하지 않았다

클라이언트가있는 경우를 결정할 컨트롤러에서 이것을 사용할 수 있습니다 모바일 브라우저를 사용하고 올바른 UI를 처음 보내면 모바일 브라우저가 정식 버전이로드 될 때까지 기다린 다음 모바일 버전이 다시로드 될 때까지 기다리는 것이 좋습니다.

$useragent=$_SERVER['HTTP_USER_AGENT']; 
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm(os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(|\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(|\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg(g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|)|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))){ 
    // load mobile view 
}else{ 
    // load regular view 
} 

이 점은 here입니다.

그러나이 방법은 다소 구형입니다. 최신 웹 사이트는 Bootstrap과 같은 반응 형 테마를 사용하여 CSS media queries을 사용하여 모든 크기의 브라우저 창에 맞게 단일 테마를 조정해야합니다.

+1

와우, 나는 그것에 대해 생각해 보지 않았습니다. 감사. 그러나 여전히 이것은 사용자 에이전트를 기반으로 할 것입니다. 여전히 생각할 너비가 다양합니다. 예를 들어 알약을 생각해보십시오. 그래서, 나는 반응으로 갈 것 같아. – mzcoxfde

+0

이 URL : www.51degrees.com으로 이동하면 사용자가 휴대 전화, 태블릿 또는 기타 기기를 사용하는지 여부를 결정하는 패키지가 제공됩니다. 우리 회사에서 일하고있는 프로젝트 임에도 불구하고 우리는 유료 버전을 사용하고 있지만, 무료 버전을 사용할 수있는 기능은 확실하지 않지만 무료 버전도 있습니다. – Glubus

관련 문제