묻고답하기
메인페이지에서, 사이드메뉴(*레프트메뉴) 비활성 질문
2013.12.27 02:57
보통에 경우.. 메인페이지는 사이드메뉴(*레프트메뉴)가 없고.
서브페이지는 사이드메뉴가 있습니다.. (*예외를 빼놓고 보통^^)
여기서...
메인페이지에 경우만, 사이드메뉴(*레프트메뉴) 비활성을 하고 싶은데...
질문에 요지는 "레이아웃 배포자(*제작자)"와 "다수에 사용자"가 있는 상황입니다.
또한 레이아웃은 메인/서브로 나뉘어진 2중구조가 아닌, 1개의 동일구조입니다.
배포자인 제가 직접 사용한다면.
알코딩으로 메인페이지 "mid값"인 "main"으로, if문으로 제어해서..사이드메뉴를 안보이게 할수있다는건 알고있는데..
수동으로는 이렇게는 해결이 됩니다만... (*아래 코드를 사용함)
이렇게 하면 일일이 사용자들은 레이아웃파일을 서버에서 수정해야되는 번거로움이 있습니다.....휴..
<!--@if(!$module_info->mid == 'main')-->
레프트메뉴 목록
<!--@end-->
하지만.. 제가 알고싶은건. 이렇게 사용자들도..."수동"으로 작업하는게 아닌...
사용자 메인페이지 환경에 맞게,
레이아웃 설정 텍스트필드에서, 특정 값을 입력받아서(*사용자가 사용하는 메인페이지 mid값 입니다.)
mid값에 사용자 환경에 맞게 넣고 싶은건데...
if문으로 해서 레이아웃설정값을 입력받아도..반응이 없는데...
혹시 다른방법이 잇는지요.?? 다른구문으로 하는 방법이라던지...어떤방법이라도...알려주시면....
레이아웃제작 하시는분들중에..혹시
알고계시는분 공유좀 부탁드려요.
댓글 3
-
고마워XE
2013.12.27 10:18
-
XE카오스
2013.12.27 12:04
아이고^^ 그건 위에서 제가 말씀드렷다싶이^^ 레이아웃은 메인/서브로 나뉘어진 2중구조가 아닌, 1개의 동일구조 라고 말씀드렸습니다.^^ 1개의 레이아웃파일에서 개발로 가능하냐 이겁니다.^^ -
XE카오스
2013.12.27 12:05
메인/서브로 나눠서 2중레이아웃으로 만들지 않으려고 여쭈여봅겁니다.^^ 음.... 여튼 감사합니다.^^ -
고마워XE
2013.12.27 20:23
제가 보기에는, XE카오스 님이 XE레이아웃 작동방식에 대해 이해가 조금 부족하신것 같습니다. -
고마워XE
2013.12.27 20:24
mid별로 원하는 레이아웃을 연결해서 사용하도록 xe코어가 다 세팅이 되어 있는데, 왜 그 기능을 사용하지 않으시는 건가요? -
XE카오스
2013.12.28 18:23
레이아웃 포맷이 같다는 전재입니다. 메인.서브 하지만 레프트메뉴가 서브에만 보여주소 싶은데. 개발코드를 어떻게 해야 효율적인지 물어보느겁니다. 이해되세용? -
XE카오스
2013.12.28 18:25
레이아웃 개발하다가 불필요하게 같은포맷인데..레프트메뉴때문에. 메인/서브 레이아웃을 2개나 만들어서 사용할 필요는 없으니. -
XE카오스
2013.12.28 18:26
레프트만 메인에서 제외해서 개발하고 싶은거에요.^^ 이해되시겟죠.?^^ 미드별로 원하는걸 연결하는거랑은 상관은 없답니다.^^ -
XE카오스
2013.12.28 18:27
당연히 레이아웃 설정값에서 메인/서브 값을 선택하게해서 미드로 연결하면 되죠.^^ -
XE카오스
2013.12.28 18:27
그렇게 반복작업을 안하고 하나에 레이아웃에서만 처리하고 싶은겁니다.~ 그렇게 해보신분에 대해서 조언을 구하고싶어서요.^^ -
XE카오스
2013.12.28 18:29
여튼 답변 감사드려요~~ 근데 답안이 아니라서 채택을 못해드렷어요~ 지송해요.~~ -
고마워XE
2013.12.28 20:48
아하.. 그렇군요. 그런데 이건 쉽게 해결될 문제 같은데요? info.xml 에 사용자들이 사용할 main mid 를 넣도록 하면 되지요 -
고마워XE
2013.12.28 21:16
1. 레이아웃 사용자가 설정할 항목을 만듭니다.
이건 config/info.xml 을 편집하셔야 합니다.
<extra_vars> 항목에 하나를 아래처럼 추가합니다. 다국어 지원안할거면, 그냥 "ko" 항목만 있어도 됩니다.
<var name="MY_MAIN_MID" type="text">
<title xml:lang="ko">홈메뉴ID (메인레이아웃을 호출할 mid) </title>
<title xml:lang="en">Home Menu ID</title>
</var>info.xml을 저장합니다.
이렇게 하면 사용자는 사용자 화면에서 '홈메뉴ID'를 지정할 수 있습니다.
2. layout.html 에서 조건분기문을 작성합니다.
이제 layout.html 안에서는 '홈메뉴ID' 를 아래와 같은 xe전역변수로 참조할 수 있습니다.
$layout_info->MY_MAIN_MID
이제 XE 템플레이트 문법을 사용해서 이 조건문을 만들어야겠지요.
저도 XE 템플레이트 문법 초보 라서,... 다른 레이아웃 에서 사용하는 방법을 참조해 보세요
-
XE카오스
2013.12.30 15:23
고마워xe님 답변은 정말 감사합니다.~
하지만 제가 지금 "기본 조건문"을 확장하거나, 다른 활용가능한 "xe문법"을 활용해.. 레프트만 없대고 싶은거에요.^^
지금 새로 답변해주신건.. 너무 기본적인 내용이구요..
당연히...사용자 info값은 받은상태에서, 이후 이슈에 대해서 물어본겁니다.^^
지금 새로 답변해주신건 info.xml에서 엑스트라변수만 받고, 레이이아웃 파일에 적용한거잖아요^^
전 그이후에 레프트만 뺄수잇는..문법처리를 말한거에요.^^ 기본문법을 활용한 더 좋은방법...
제가 위에 기본적인 조건문을 두어 사용햇는데 안되었다고..전제를 두었잖아요.^^
layout_info 값으로는 해결이 안되니깐 물어보느거에요.^^ 저는 module_info값을 사용햇잖아요.^^
info.xml 텍스트필드에서, 페이지mid 고유값을 받아서 레이아웃에 자동으로 메인에는 레프트가빠지게..처리할려고 하느거에요..
그래서 전 module_info 값을 쓴거에요.^^ 고유 페이지미드값을 받아서 문법으로 자동화 처리할려구요.....
이해되시겟죠.?^^
저도..레이아웃을 많이 제작햇지만..... 이부분에 정말 막혀서 물어보느거에요.^^
제가 설명이 부족햇을수도 있겟네요...다른말씀을 하시는거보니...
이곳에는....아시는분이 없나보네요.....
제가 구글링을 통해서라도 잘해결해 볼게요.~~~
성실한 답변은 정말감사합니다.^^
채택못해드려서 죄송해요.^^
layout.html 은 하나로 만드셔도, info.xml 에서 메인용 인지 서브용 인지를 구별하는 필드를 만들어 주면 되지요.
layout.html 에서는 그값에 따라 분기해서 작동하면 됩니다.
(여기까지는 제작자)
다수의 사용자는,
이 레이아웃을 설치후, 레이아웃 복사 기능을 이용해서
메인레이아웃, 서브레이아웃으로 재명명 합니다.
그리고 mid 별로 (메뉴별로) 이건 메인, 저건 서브로 연결하는 겁니다.
답변의 요지는 하나의 레이아웃을 2개로 나누어서 저장하는 것.
이겠죠
대부분의 유명 레이아웃이 이런식으로 작동하는데, 솔직히 저도 최근에야 그 뜻을 이해했었다는
사실을 고백합니다.
도움이 되시길..
(잘생각해보면)
하나의 레이아웃코드지만, 설정값을 몇개라도 받을수 있으므로, 작동방식을 몇개라도 만들수 있는 것 이지요.