묻고답하기
특정 조건에서 애드온 실행하지 않고 빠져나가기 문의
2015.03.22 20:25
브라우저 agent에 포함된 문자열을 확인하여 브라우저별로 다른 내용이 출력되도록 스크립트를 사용해서 성공하였습니다.
<script type="text/javascript">
var broswerInfo = navigator.userAgent;
if(broswerInfo.indexOf("app_pomelove")>-1 || broswerInfo.indexOf("iPhone")>-1){
document.getElementById("android_no").style.display="none";
document.getElementById("android_on").style.display="block";
}
</script>
저것을 응용하여 애드온을 아래 조건에 해당되면 실행하지 않고 빠져나게게 애드온실행 파일 초입에 작성하고 싶습니다.
(broswerInfo.indexOf("app_pomelove")>-1 || broswerInfo.indexOf("iPhone")>-1)
아래 코드가 레이어팝업 애드온의 내용중 앞부분입니다.
(위의 조건에 해당하는 브라우저에는 팝업 내용을 띄울 필요가 없어 애드온을 실행하지 않고 빠져나가게 하고 싶어서 입니다.)
<?php
if(!defined("__XE__")) exit();
//파일 로딩
if($called_position == 'before_display_content') {
if (!$addon_info->load_jquery) $addon_info->load_jquery = 'yes';
if ($addon_info->load_jquery == 'yes') {
Context::addJSFile("//code.jquery.com/jquery.min.js", false,'',-100000);
Context::addJSFile("//code.jquery.com/jquery-migrate-1.2.1.min.js", false,'',-100000);
Context::addJSFile("//code.jquery.com/ui/1.10.4/jquery-ui.js", false,'',-100000);
Context::addJSFile("./addons/layerpopup/source/unload.js", false,'',-100000);
}elseif ($addon_info->load_jquery == 'no') {
Context::addJSFile("./addons/layerpopup/source/varjQuery.js", false,'',-100000);
}
if ($addon_info->load_jquery_ui == 'yes') {
Context::addJSFile("//code.jquery.com/ui/1.11.0/jquery-ui.min.js", false,'',0);
}
Context::addJSFile("./addons/layerpopup/source/jquery.mousewheel-3.0.6.pack.js", false);
Context::addJSFile("./addons/layerpopup/source/jquery.fancybox.pack.js", false);
Context::addCSSFile("./addons/layerpopup/source/jquery.fancybox.css", false);
Context::addJSFile("./addons/layerpopup/source/cookie.js", false);
}
if($called_position == 'before_module_proc' && Context::get('module') != 'admin' && $this->module_info->module_srl){
// 기본값 설정
if (!$addon_info->width || !is_numeric($addon_info->width)) $addon_info->width = 9999;
댓글 10
-
Canto
2015.03.22 23:25
-
몽실아빠
2015.03.22 23:31
제가 해보려니 잘 안되서요. 사이트가 먹통이 되버려서 그런데요.
애드온 파일에 추가할수 있도록 알려주실수 있나요?
-
Canto
2015.03.22 23:34
인줄 알았는데 이것만 이야기하시는게 아니군요..
javascript으로 애드온 실행 제어는 힘들것 같습니다.
스크립트를 보니까 에이전트로 체크를 통해 전용앱으로 홈페이지를 접속하였을때 표시안하는 방식을 하고 싶으신 것 같습니다.
만약 제가 말한 것을 의도하신 것이라면 이런 식으로 해보시면 될 것 같습니다.
$addon_user_agent = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('/app_pomelove/i',$addon_user_agent) || preg_match('/iPhone/i',$addon_user_agent)) return;
-
몽실아빠
2015.03.22 23:36
네. 앱과 아이폰에는 팝업애드온을 통한 팝업을 띄우지 않으려는게 목적이에요. 답변 감사합니다, 해볼게요.
-
Canto
2015.03.22 23:40
만약 위에것이 안되시면
if 조건을
if(strstr($_SERVER['HTTP_USER_AGENT'],'app_pomelove') || strstr($_SERVER['HTTP_USER_AGENT'],'iPhone')) return;
으로 해보세요..
-
몽실아빠
2015.03.22 23:41
감사합니다. 아주 잘됩니다!
-
Canto
2015.03.22 23:46
그나저나 유저에이전트로 앱 접속을 판별하시는군요!!
그방법은 생각도 못했네요.. ^^; 전 그동안 앱 안에서 특정키를 만들어서 앱으로 홈페이지 돌아다닐때는
해당 키가 계속 따라다니는 식으로 하다가.. 지금은 앱에서 쿠키를 생성해서.. 홈페이지에서는 그걸 가지고 판별하고 있었는데.. ^^;;
-
몽실아빠
2015.03.22 23:48
네. 저도 머리를 굴려보다 안되서 검색을 해 보았는데 이런 아이디어가 있어서 바로 적용을 했어요. 앱 제작자분께 유저에이전트에 저희 사이트만의 문구를 넣어달라고 요청을 하고 해보니 너무나 잘 되더라구요~~~
-
몽실아빠
2015.03.22 23:45
안드로이드 관련 안내배너와 그리고 안드로이드앱 출시관련 팝업을 굳이 안드로이드앱을 이미 사용하고 있는분들과 아이폰유저께는 노출하지 않으려고 사이트요소에 배치된 안내배너를 스크립트로 제어하고 마지막으로 팝업애드온을 컨트롤하는 것이 궁금했는데 답변으로 해결이 되었습니다.
안드로이드 앱으로 접속하시는분께 불필요한 안내를 계속 보지 않아도 되게 되어서 아주 만족스럽습니다. 감사합니다.
-
키스투엑스이
2015.03.22 23:27
return; 또는 exit();
return;