묻고답하기
레이아웃 스킨 만들 때 PHP코드를 직접 삽입하려면 어떻게 해야 하나요?
2012.07.11 00:54
개발자포럼에 있는 글을 YO-DA님의 의견에 따라 여기로 옮겨왔어요.
원글과 댓글은 아래와 같구요, 요다님께서 알려주신다고는 하셨으나 혹시 못보실 수도 있고 해서ㅠ.ㅠ
제가 아무리 해보려구해도 지식이 없어서 며칠을 끙끙됐어요ㅠ.ㅠ
아래 문제의 원인은 퍼니엑스이님께서 알려주셔서 속은 시원한데,
알려주신 방법을 제가 적용할 능력이 안되서;;
답변해주시면 정말 감사하겠습니다ㅠ.ㅠ
-------------
안녕하세요~
얼마 전에 레이아웃을 수정해서 올리면서 모바일 체크 코드를 넣었어요.
XE식의 코드(?)로 조건문을 걸면 왜인지(제 실력이 부족해서ㅠ.ㅠ) 작동하지 않더라구요.
그래서 직접 캐쉬에 쓰는 템플릿을 뜯어서 그냥 레이아웃에 넣었는데..
문제는 레이아웃 편집에서 수정만 하면 이 코드가 다 풀어져(?)버리는 거에요ㅠ.ㅠ
원인과 해결방법을 알려주시면 감사하겠습니다~ㅠ.ㅠ
만약 XE의 오류면 이슈에 올리구요, 아니면 제가 수정해야겠죠^^;
그 코드는 아래와 같구요, 혹시 이렇게 사용하지 않고도 아래 조건문이 가능하게 코드를 만들 수 있을까요?
그러면 편집에서 이 코드가 풀어져버리는 것을 피해갈 수 있을 것 같은데..
<?php if(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/',$_SERVER['HTTP_USER_AGENT']) ){ ?>
{@ $ismlayout = true}
<?php } ?>
이 코드를 작성한 이유는 XE의 관리자 화면에서 모바일 보기를 사용을 안하는 경우에
$mobile인가 하는 함수가 작동하지 않아 요 부분만 가져와서 넣은 거에요.
(관련 코드 : <!--@if(class_exists(Mobile) && Mobile::isFromMobilePhone())-->)
그래서 이 코드를 작성하지 않고도 $mobile함수를 작동가능하게 하는 방법이 있는 지?
혹시 있다면 알려주시면 감사하겠습니다ㅠ.ㅠ
-----------------------
1. 요다님께
<댓글 원본>
안녕하세요^^
댓슈는 잘 하신 것 같은데요 이슈에 올리는 것은 더욱 아닌 것 같습니다.
본인이 잘 못 조치하신 걸로 이슈에 올리시겠다는 것은 좀 무리가 있다는 겁니다.
이 질문도 개발자 포럼 게시판이 아닌 '묻고 답하기'로 질문하여 주시기 바라네요...
그럼 제가 답을 드릴 수 있겠습니다^^
<답변>
먼저 댓글 감사드립니다~
지적하신 이슈 관련해서는 저는 관련 지식이 없어서ㅠ.ㅠ 뭐가 오류인지 제 잘못인지 모르기 때문에 오류일 경우에 이슈에 등록하겠다는 의미이구요(문제를 알고도 모른 척하는 게 더 안좋을 거 같아서 하는 신고정신(?)이라고 생각해주세요~^^;),
아래 퍼니엑스이님이 알려주신대로 보안문제로 제한했다고 하니 오류가 아니라서 이슈가 아닌 거 같아요~^^;
묻고 답하기에 올리면 알려주신다니 정말 감사드리구요ㅠ.ㅠ 저는 아무리 봐도 해결할 수가 없더라구요ㅠ.ㅠ
질문처럼 보일 수도 있지만 저처럼 문외한의 입장에서는 혹시나 XE오류가 아닐까 하는 생각에 고민끝에 개발자 포럼에 올릴건데, 본문 마지막에 질문이 마구 추가되서 결국 질문이 되어버렸네요^^;;
좋은 의견 감사드립니다~
ps. 근데 댓슈가 뭔가요??
2. 퍼니엑스이님께
<댓글>
보안취약점 때문에 최신 버전에서는 레이아웃에서 PHP 코드를 사용할 수 없도록 되어있습니다.
if문 때문에 그러시는거라면 $_SERVER['HTTP_USER_AGENT'] 대신에 getenv('HTTP_USER_AGENT')를 써보세요.
<답변>
답변 감사드리구요~, 보안때문에 PHP코드를 막아뒀군요.. 제가 php를 몰라서 getenv가 뭔지는 잘 모르겠지만 검색해서 꼭 적용해보겠습니다! 왜 안되는 지 이유를 아니 속이 시원(?)하네요^^; 답변 감사드립니다ㅠ.ㅠ
댓글 1
-
송동우
2012.07.11 02:22
-
Sketchbook
2012.07.11 21:57
잘 되네요! 너무 감사드립니다ㅠ.ㅠ -
Sketchbook
2012.07.11 22:02
어 빈말이 아니라 진심에서 하는 말인데, 저한테 XE사이트에서 가장 필요한 사람이 누구냐고 물으면 송동우님을 제일 먼저 떠올릴 것 같아요!^^ 다시 한 번 감사드립니다~ -
Neda_love
2012.07.14 13:39
우와 저도 스케치북 스킨쓰는데 이거 적용 하니까 잘되네요 감사합니다^^
<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'))">
{@ $ismlayout = true}
</block>
질문을 제대로 이해했는지 저도 모르겠습니다.....