현재 화면을 PC로(or 모바일로) 띄우는 방법이 있나요?
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | 사용안함 |
검색해도 잘 못 찾아서 글을 남깁니다.
파라미터에 m=1 붙이지 않고 조절 가능한 방법이 있을까요?
request_uri 변경 없이 jquery/ajax or session/cookie 만으로 조절하고 싶습니다.
아마도 아래와 같은 형태로 코딩하고 싶습니다.
<a href="#" onclick="Cookies.set('쿠키', 'N'); location.reload(); return false;">PC버전</a>
또는
<a href="#" onclick="jQuery.exec_json('?.proc?SetMobile', {'쿠키':'N'}, function(p){ location.reload(); }); return false;">PC버전</a>
목적은, 검색엔진에서 m=1 (혹은 m=0) 타고 들어오는 바람에 Mobile 인데도 PC가 보이거나 그 반대의 상황이 나옵니다. 그래서 SEO 상에서 m 을 지우고자 합니다. (에미없군요.)
엘카
Lv. 3
댓글 7
자문 자답:
jQuery.exec_json('member.getMemberMenu', {'m':1}, function(p){ location.reload(); });
이미 ?m=1 로 붙여 들어온 경우 ?m=1 파라미터가 지워지지 않으므로
rx_uatype 쿠키를 지우고, URL에서도 m을 지우고
둘 다 없는 상태로 새로고침하면 해당 기기에 맞는 상태로 나올 것 같은데요.
XE.cookie.remove('rx_uatype', { path 등 몇 가지 맞춰줘야 함 });
location.href = location.href.setQuery('m', null);
반대로, PC, 모바일 중 특정한 한 가지 상태로 강제 전환하는 링크를 만드시려면
location.href = location.href.setQuery('m', 1); // 또는 0
이것만 해주셔도 상관없고요.
rx_uatype 쿠키를 지우고, URL에서도 m을 지우고
둘 다 없는 상태로 새로고침하면 해당 기기에 맞는 상태로 나올 것 같은데요.
-> 맞습니다, 그러나 모바일에서 PC화면으로 접속하길 원하면(혹은 반대의 경우) 잘 되지 않을 것입니다.
강제 전환하는 링크를 만드시려면
location.href = location.href.setQuery('m', 1); // 또는 0
-> 주소에 ?m=1 남는 것은 제게 깨끗하지(?) 못 했습니다.
결국 모바일 레이아웃 하단에 최종 코드는
<a href="javascript:;" onclick="jQuery.exec_json('member.getMemberMenu', { 'm':'0' }, function(p){ if(current_url.getQuery('m').length ) location.href = current_url.setQuery('m',null); else location.reload(); }); return false;">PC버전</a>
이렇게 해서 m 파라미터를 배제 합니다.
아쉬운 점은, 모바일로 PC 접속한 경우 화면 하단에 ?m=0 뜨는건데 이것도 꼼수가 있겠지만 일단 "주로" 문제가 되는 것은 검색엔진에 ?m=1 링크가 우수수 달려있는거라 m=0 까지 처리하진 않았습니다.좀 헷갈리게 쓰긴 했는데 m=1 이든 m=0 이든 검색엔진에 꽤 많이 있어서 이것도 다 없애버려야 겠군요 ``;;관심가지고 조언 주셔서 감사합니다.
추가. after module proc 시점에 변태 코드 추가 ㅋㅋ
$oContext = Context::getInstance();
$oContext->html_footer = preg_replace('@(<a class="xe_mobile") [^>]*>([\s\S]*?)</a>@us', '\1 href="javascript:;" onclick="'."jQuery.exec_json('member.getMemberMenu', { 'm':'1' }, function(p){ if(current_url.getQuery('m').length ) location.href = current_url.setQuery('m',null); else location.reload(); }); return false;".'">\2</a>', $oContext->html_footer);
참고로, 이 이슈는 pc/mobile 호스트가 동일할 때 발생하는군요.
pc 호스트가 www.~.com 그리고 mobile 호스트가 m.~.com 이면 검색엔진에 ?m=1 ?m=0 나오지 않습니다.