데스크톱 웹 사용을 위해 설계된 사이트가 있지만 모바일 지향 디자인의 버전을 만들고 싶었던 경우 두 가지 버전의 페이지를 매우 비슷한 논리로 유지하지 않으면 어떻게 표시 할 수 있습니까?PHP 기반 사이트는 다른 버전의 사이트를 어떻게 제공합니까?
다른 HTML 구조를 제공하기 때문에 모바일 버전에 다른 CSS를 사용할 수는 없지만 각 페이지에 if 문을 많이 사용하는 것보다 나은 방법이 있습니까?
데스크톱 웹 사용을 위해 설계된 사이트가 있지만 모바일 지향 디자인의 버전을 만들고 싶었던 경우 두 가지 버전의 페이지를 매우 비슷한 논리로 유지하지 않으면 어떻게 표시 할 수 있습니까?PHP 기반 사이트는 다른 버전의 사이트를 어떻게 제공합니까?
다른 HTML 구조를 제공하기 때문에 모바일 버전에 다른 CSS를 사용할 수는 없지만 각 페이지에 if 문을 많이 사용하는 것보다 나은 방법이 있습니까?
하나의 아이디어는 Smarty 또는 Zend View와 같은 템플릿 시스템을 구현하는 것입니다 (거기에는 많은 것들이 있습니다). 기본 사이트에서 컨트롤러 코드가 모든 논리를 수행하고 템플릿 변수에 값을 할당합니다. 그런 다음 사이트를 보는 데 사용되는 버전 (데스크톱/모바일)에 따라 적절한 템플릿 파일을로드하십시오. 뷰를 렌더링하기 전에 동일한 PHP 로직을 사용하면서 매우 다른 HTML/CSS 규칙과 구조를 가질 수 있습니다.
각 페이지에 if 문을 많이 사용하는 것보다 나은 방법이 있습니까?
네, 훨씬 더 좋은 방법이 있습니다. 불행히도, 이것을 염두에두고 사이트를 디자인하면 훨씬 쉬울 것입니다. 템플릿 엔진을 사용하여 PHP 코드와 실제 내용을 완전히 분리 할 수 있습니다. 따라서 새로운 클라이언트 페이지를 변경/추가하려는 경우 매우 간단합니다. 템플릿에 물건을 추가하기 만하면됩니다. 사용자 에이전트 에이전트 문자열 (OS 정보 포함)을 기반으로로드 할 템플릿을 선택할 수도 있습니다. PHP 자체는 데이터베이스/파일/동적 데이터를 얻을 수있는 모든 위치에서 데이터를 가져와야합니다.
밖에있는 많은 template engines for PHP을 살펴보십시오.
아래 예와 같은 코드를 사용하여 사용자가 사이트의 모바일 버전으로 리디렉션하기 위해 모바일 상태인지 확인했습니다. 사이트는 동일한 모델 및 컨트롤러 파일을 사용하지만 다른보기 파일을 사용합니다.
if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)/i', strtolower($_SERVER['HTTP_USER_AGENT']))
or strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') > 0
or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))
)
{
header('location: /m/index.php');
exit();
}
두 가지 버전의 사이트가 있습니다. 하나는 데스크톱 용이고 다른 하나는 휴대 기기 용입니다. 그런 다음 $_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';
}
당신은 두 버전 모두에 대해 동일한 모델을 요구하려는 경우, 그것은 if 문에서로드하는 것이 좋습니다. –