웹마스터 팁
XE에는 기본으로 불러오는 클래스 들이 많습니다. 그 중에 모바일 클래스를 조금 써봅니다.
파일 위치는 ./classes/mobile/Mobile.class.php 입니다.
이 파일에는 사용자가 접속한 장치가 어떤 장치인지 HTTP 헤더의 User-Agent 값으로 구분하는 내용이 들어있습니다. 한번 판단을 하고 나면, 효율성을 위해 쿠키에 정보를 저장해두고 이용하게 됩니다.
Mobile::isFromMobilePhone() 라는 메소드가 정의되어 있습니다. 외부에서 사용하기 가장 좋은 메소드입니다. 모든 정보를 이용해서 장치가 모바일 장비인지 확인하고, 어떤 양식의 페이지가 보여야 할 것인지 정합니다.
쿠키가 저장되어 있다면, 쿠키를 우선으로 확인하고, 쿠키가 없는 경우에는 HTTP 헤더에서 문자열을 확인해 확인합니다.
~~ByAgent 라고 정의된 메소드들은 모두 HTTP 헤더를 직접 확인하는 것들입니다.
isMobilePadCheckByAgent() 라는 것이 최근에 추가되었는데, 아이패드, 안드로이드 타블렛 등의 기기를 구분하기 위한 메소드입니다.
모바일 기기이면서도 화면이 상대적으로 넓기 때문에, 취향에 따라 다른 화면을 선택할 수 있게 도울 필요가 있다 판단했습니다. 그래서 이들 기기로 접속하면, 모바일 화면으로 이동할 수 있는 링크도 뜨지만, 기본 화면은 PC 용 화면이 뜨게 됩니다.
모듈, 애드온, 또는 스킨 개발자도 이를 이용할 수 있습니다. 클래스 모든 메소드는, 구분하려고 하는 대상이 맞으면 TRUE, 아니면 FALSE 를 반환합니다. (논리값)
setMobile 이라는 함수로, 장치를 강제로 모바일이나 PC로 정의할 수 있습니다.
유용한 클래스라고 생각합니다 :)
템플릿 코드에 적용하시려는 분이 많은 것 같아서 추가합니다.
<span cond="Mobile::isMobileCheckByAgent()">모바일모드입니다.</span> <span cond="!Mobile::isMobileCheckByAgent()">모바일모드가 아닙니다.</span>이런 식으로 사용하시면 됩니다.
댓글 19
-
윈컴이
2012.06.24 02:39
-
misol
2012.06.24 02:41
일반적인 PHP 사용법과 동일합니다.
<?php
if(Mobile::isFromMobilePhone())
{
// 모바일 일 때
}
else
{
// 모바일이 아닐 때
}
?>와 같이 사용합니다 :)
-
윈컴이
2012.06.24 03:25
레이아웃에도 작동되나요~ -
K.Soma
2012.06.24 17:40
모바일에서 PHP구문이 작동된다면 가능할겁니다.
-
misol
2012.06.24 20:42
구문을 좀 응용하면 사용 가능할거에요 :) -
윈컴이
2012.06.24 21:14
그렇군요 :)
-
씨지크
2012.08.01 12:10
이걸 skin 문법 안에서도 사용 가능한가요?
<load target="css/members_mobile.css" cond="Mobile::isMobileCheckByAgent()" />
이런식으로 해도 잘 안되더라구요.ㅠㅠ
이런 조건문을 쓰고싶어서 해본 삽질들...↓
<!--@if(Mobile::isMobileCheckByAgent())-->{@ $tmp_ismobile = true }<!--@end-->
{@ $tmp_ismobile = Mobile::isMobileCheckByAgent() }
<span cond=="$tmp_ismobile">모바일모드입니다.</span>
<span cond=="!$tmp_ismobile">모바일모드가 아닙니다.</span>
{@ $tmp_ismobile = isFromMobilePhone() }
<span cond=="$tmp_ismobile">모바일모드입니다.</span>
<span cond=="!$tmp_ismobile">모바일모드가 아닙니다.</span>
{@ $tmp_ismobile = Context::get('ismobile'); }
{$tmp_ismobile}
##### var #####
{@ print_r( $oMobile->ismobile ) }
-
인터니즈™
2012.08.01 12:56
저두 레이아웃에서 이 방식으로 써볼려고 했는데, 잘 안되더군요.
<block cond="preg_match('/iPod|iPhone|Android|BlackBerry|SymbianOS|Bada|Kindle|Wii|SCH-|SPH-|CANU-|Windows Phone|Windows CE|POLARIS|Palm|Dorothy Browser|Mobile|Opera Mobi|Opera Mini|Minimo|AvantGo|NetFront|Nokia|LGPlayer|SonyEricsson|HTC/',getenv('HTTP_USER_AGENT'))">
</block>
해서, 그냥 이렇게 씁니다.
-
씨지크
2012.08.01 13:15
오옹.. 그렇게 하면 되는군요. 진짜 감사드립니다.
skin에서 쓸 수있는 공식적인 변수 하나쯤 있음 편하겠다는 생각이 드네요.^^
-
misol
2012.08.01 19:19
@씨지크
<span cond="Mobile::isMobileCheckByAgent()">모바일모드입니다.</span>
<span cond="!Mobile::isMobileCheckByAgent()">모바일모드가 아닙니다.</span>
이렇게 쓰시면 됩니다. :)
-
씨지크
2012.08.02 00:36
사실 외부페이지(OUTSIDE) 소스를 작성하면서
<load target="css/members_mobile.css" cond="Mobile::isMobileCheckByAgent()" />
이 코드를 적어봤던건데... 잘 안되었던거 같거든요.
{@ $tmp_ismobile = Mobile::isMobileCheckByAgent() }
<span cond=="$tmp_ismobile">모바일모드입니다.</span>
<span cond=="!$tmp_ismobile">모바일모드가 아닙니다.</span>
이것도 알고보면 같은 코드인건데
아이폰에서 봤을 때 '모바일모드입니다.모바일모드가 아닙니다.'가 모두 표시되서 "안되는거구나.." 했거든요.다시한번 해보겠습니다.
-
misol
2012.08.02 00:57
밑에꺼 등호를 하나만 쓰세요 ㅎㅎ
<span cond=="$tmp_ismobile">모바일모드입니다.</span> 가 아니고
<span cond="$tmp_ismobile">모바일모드입니다.</span> 처럼 한번 써보세요.
-
씨지크
2012.08.02 12:27
뜨허~~~ 이런 실수를...ㅠㅠ
감사합니다.
-
Sketchbook
2012.08.02 10:10
감사합니다~^^
잘되네요. 번거롭게 모바일 클래스에 함수를 다시 php코드로 만들어 사용했었는 데,
이렇게 간단한 방법이 있었네요ㅠ.ㅠ
감사합니다~
-
똑디
2013.05.06 17:40
좋은정보네요. 간결한 코드 잘 사용하고 있습니다.
-
spyder
2013.05.07 01:07
본문과 관련 없는질문 이라 죄송합니다.
위의 Syntax Highlighter는 본 에디터 에서 어덯게 적용하나요.
-
똑디
2013.05.07 13:47
BNU님의 code_highlighter 자료의 경우
./modules/editor/components/code_highlighter 와 같이 업로드 하셔서 사용하시면됩니다.
업로드 위치만 확인하시면 다른 자료도 동일하게 활용하시면됩니다.
-
spyder
2013.05.08 02:04
감사합니다~^^
도움이 되었읍니다.
-
imgXE™
2013.05.14 15:28
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 대박정보입니다... 잘되네요.. 감사합니다..
제 홈피에 유용하게 매우매우매우매우 잘 사용하고 있습니다..
웹과 모바일접속 구분이 단 두줄로 처리되었다니 ㅜ,.ㅜ
그런데 어떻게 사용하나요 ㅎㅎ