목록 글쓰기 등등 다른 페이지는 레이아웃을 띄우고

 

View 페이지는 아예 레이아웃이 없는 상태로 띄우고 싶은데

 

어떻게 레이아웃을 지울 수 있을까요~?

  • profile
    레이아웃에서
    {$content}를 싸고 있는 나머지 모든 부분을
    (위쪽과 아래쪽으로 나눠서 두군데로 해야겠죠...)
    if문으로 act가 보기 페이지일때는 안보이게 처리해주면 될 것 같은데요.

    <!--@if($act=='dispBoardContent')-->
    {$content}위쪽의 html들
    <!--@end-->
    {$content}
    <!--@if($act=='dispBoardContent')-->
    {$content}아래쪽의 html들
    <!--@end-->

    이렇게 하면 되지 않을까 하고 예상해봅니다.
    테스트 해본 것은 아닙니다.
  • profile profile
    엇.. 댓글 달고보니 더블유님이 한발 앞서 다셨네요
    제가 생각한것과 기본적인 원리를 똑같은걸 생각하셨네요
    cond절로 레이아웃에서 분기처리 하는 방법도 좋은것 같아요
  • profile profile
    전 레이아웃이 뭔지 몰라서 통째로 지우는걸 생각했죠^^
  • profile profile
    {$act} 가
    view 페이지에선

    도메인/메뉴명/번호

    이렇게 나오다보니
    안잡히네요 ㅜ
  • profile

    목록, 글쓰기 라고 하심은 게시판을 말씀하시는듯 합니다.

    게시판, 페이지 모듈등의 경우 레이아웃의 하위에서 작동됩니다.

    레이아웃에서 {$contents} 부분이 실제 내용을 불러오는 부분 입니다.

     

    글읽는 화면에서만 레이아웃이 안보였으면 하는것 같습니다.

    제가 알기로는 긁읽기 화면에서만 레이아웃을 미지정 처리하는것은 기본 코어에서 제공되는 기능으로는

    불가하다고 알고 있습니다.

     

    만약 불가피하게 특정 act에서만 레이아웃을 표시하지 않기를 원하신다면

    글쓰기 화면에서 제이쿼리 등을 이용하여 레이아웃의 {$contents} 상/하위의 모든 요소를 display:none; 하시는것은

    어떨까 생각합니다.

     

    보통의 레이아웃은 헤더/메뉴영역/본문영역/푸터영역 등으로 나누어져 있는데 본문영역을 제외한 나머지 부분을

    숨김처리 하시라는 이야기 입니다.

     

    저의 경우는 다른 케이스이긴 한데...

    글읽기 화면에서 인쇄시에 레이아웃을 제외하기 위하여 미디어룰셋을 이용하여 글읽기 화면에서만

    레이아웃을 제거했던 경험이 있습니다.

  • profile profile
    이 방법도 시도해봤는데
    이미 불러와진 CSS 충돌이 문제네요 ㅜ
  • profile profile
    레이아웃을 미설정 해놓은 후
    VIEW 페이지를 제외 한곳에
    수동으로 레이아웃을 연결 시킬 순 있을까요?

    레이아웃을 별도로 넣는 법은 모르겠네요...
  • profile profile

    우선 코드에 대한 이해도가 수준급이신것으로 가정하고 답변드립니다.

     

    결론 :

    게시판 모듈 내에서 레이아웃을 제어하는것은 기본적으로 불가능합니다.

    레이아웃 에서 조건분기를 통하여 처리를 해주셔야 될것 같습니다.

     

    레이아웃의 최상단에

    {@
     $oModuleModel = &getModel('module');
     $module_info = $oModuleModel->getModuleInfoByMid($mid);
     }
     


    을 넣어줍니다. 현재 보고 있는 mid의 속성이 page 인지, board 인지 등을 구분해주는 구문 입니다.

     

     

    레이아웃의 {$content}를 기준으로 최상단 까지, 최하단 까지를 나누어서 조건분기를 시킬겁니다.

     

    조건문은 아래와 같습니다.

     

    <!--@if($module_info->module!="board" || !$oDocument->getTitle())-->
    {$content} 위 부터 최상단 까지의 내용을 조건문으로 묶어줍니다. (하단부터 최하단도 동일)
    <!--@end-->

     

     

    위 조건문은 mid의 속성값이 board가 아니면서(부정), oDocument 값이 없는 (부정) 더블부정 케이스의 경우에

    if절 내의 코드를 보여주겠다는 의미가 됩니다.

     

    참고로 oDocument->getTtitle의 경우 게시글 본문 읽기화면의 글제목을 가져오는 부분인데

    당연히 글을 읽고있지 않는 글목록이나 글작성 페이지에서는 해당 변수에 대입되는 값이 null 이 되겠지요

     

    다시말해 위 조건절은 현재보고 있는 mid가 board가 아닌 page따위의 값이면서, 만약 board라고 하여도

    글 읽기 화면이 아닌 경우에만 을 의미합니다.

     

    1차적인 조건문인  !$oDocument->getTitle()) 으로 처리해보려 하였으나 게시판 모듈 이외의 모듈에서

    PHP구문에러가 발생하기에 (참조되지 않음) 모듈구분을 위한 조건절을 추가하였습니다.

     

    최종적으로 수정하실 형태는 아래와 같겠습니다.

     

    {@
     $oModuleModel = &getModel('module');
     $module_info = $oModuleModel->getModuleInfoByMid($mid);
     }
    
    <!--@if($module_info->module!="board" || !$oDocument->getTitle())-->
    헤더영역/메뉴영역 등 컨텐츠의 상단 DIV 등을 몽땅 조건절로 묶으세요
    <!--@end-->
    {$content}
    <!--@if($module_info->module!="board" || !$oDocument->getTitle())-->
    푸터영역/카피라이트 영역 등 컨텐츠의 하단 DIV 등을 몽땅 조건절로 묶으세요
    <!--@end-->

     

     

    위의 코드로 테스트 해보니 잘 작동합니다.

     

  • profile profile

    친절한 답변 정말 감사합니다.
    추가로.. 게시판에 스킨은 어떻게 구분 지을 수 있을까요?

    일반 게시판으로 쓸 스킨이랑
    위 기능이 있는 특수 스킨 이렇게 있습니다.

  • profile profile

    추가로 레이아웃 단에서 저렇게 일괄적으로 처리할경우 일부 게시판에서의 의도치 않은 레이아웃 미노출을
    겪게될 수 있다고 생각됩니다.

     

    만약 특정한 게시판에서만 글읽기시 레이아웃을 안보이게 하고 싶으시다면

    혹은 공지사항 등에서는 글읽기를 하더라도 레이아웃이 보이게 하고 싶으시다면

     

    조건절에 if (in_array(Context::get("mid"), array("notice", "board1", "board2")))
    형식으로 mid를 지정, 추가해주시면 됩니다.

  • profile profile
    아 그렇군요
    감사합니다

    덕분에 해결됬습니다 ㅎㅎ

    역시 상위클래스에서 떄려줘야 하는군요..
    잘 해결했습니다

    모듈을 별로도 뺴서 했더니 수월하네요
    'board' 이걸
    다른 이름으로 모듈을 뻇더니 더 수월하네요.
  • profile profile
    아 그런데
    게시판 관리자 페이지 넘어가니
    $oDocument->getTitle() 부분에서 PHP 오류 뜨네요 ㅋㅋㅋ
  • profile profile
    앗... 그러네요 ㅡ,ㅡ
    해당 부분 act 까지 조건절에 추가해주시거나
    게시판 수정은 admin 페이지에서 진행 하셔야 겠습니다.

    사실 글목록에서 어떤글을 눌렀을때 레이아웃없이 보여지는것은
    새창(newwindow)로 처리하셔도 되고, div를 모달형식으로 z-index 를 왕창 높이고 백그라운드 흰색하고
    박스 만들어서 처리해도 되지만.. 그렇게 하면 SEO에서 불이익을 받을것이 뻔하기에.. 답변에서는
    배제하였습니다.
  • profile profile
    view 페이지만 가지고 있는 고유의 데이터 폼이 아닌 값이 있을까요?

    보니깐 타이틀이 없는 페이지에선 팅구는거 같은데
  • profile
    게시판 스킨에서 필요한 부분에만 레이아웃에 해당하는 코드입력하고 빈레이아웃 사용하시는 것이 가장 간단한 작업일 겁니다.
  • profile profile
    네.. 이론은 간단한데

    빈레이아웃 상태에서
    레이아웃을 불러오는 코드가 뭔지 모르겠습니다..ㅜ
  • profile

    레이아웃에서 info.xml에 설정부분만(로고, url, 메뉴 등)작성하고
    레이아웃에서 작성하던 코드 $layout_info->logo 들을 게시판 스킨에 작성하시란 말씀입니다.
    레이아웃에는 {$content}한줄만 들어가고 레이아웃에 있어야 할 헤더 푸터 등을 게시판스킨에서 작성..