질문/조언질답게시판

안녕하세요. 

관리자페이지에서 내용을 수정하면 외부페이지의 내용이 수정될 수 있게 만들고 싶은데,

레이아웃만 가능한가요? 외부페이지의 내용이 수정될 수 있는 방법이 있나요?

  • profile

    라이믹스에서 특정 mid를 외부페이지로 지정하여 불러오는 것인지, 아니면 라이믹스와 별도로 page.php 같은 파일을 만들어서 사용하고 계신지에 따라 다릅니다.

     

    전자라면 Context::get(...), getModel(...) 등 라이믹스 내장함수를 모두 사용할 수 있으니 마치 애드온이나 위젯을 만들듯이 원하는 데이터를 불러다가 쓰시면 됩니다. 예를 들어 특정 모듈에서 설정한 값을 불러오려면 getModel('module')->getModuleConfig('모듈명')->설정명;

     

    후자라면 일단 라이믹스 오토로더를 인클루드하고 Context를 초기화한 후에, 똑같이 하시면 됩니다.

     

    // 이전에 define 뭐시기 다 필요없음

    include '경로/common/autoload.php';

    Context::init();

    // 이후 라이믹스 함수 자유롭게 활용 가능

     

    일반적인 레이아웃이나 스킨과 차이가 있다면, 레이아웃이나 스킨에서는 Context::set('var', 내용); 한 것을 그냥 {$var}라고 불러다 쓸 수 있지만 외부페이지에서는 반드시 Context::get('var')라고 써야 합니다. 중괄호로 묶어서 Context 변수를 불러오는 기능은 XE 고유의 템플릿 문법이니까요.

  • profile profile
    이거 소소하게 궁금하던 건데요.
    Context::init();
    이후에
    Context::close();
    로 마무리 안 해줘도 되는 건가요?
  • profile profile

    close해주지 않으면 디버그 정보가 제대로 기록되지 않을 수도 있습니다.
    그러나 외부페이지라면 딱히 중요한 부분은 아니죠...

     

    인증 세션 DB 사용 옵션을 켜놓은 사이트에서 세션을 close하기 전에 DB 연결을 먼저 끊어버린다거나

    이런 특이한 경우도 있을 수 있지만, 그런 짓을 하는 자료는 그냥 자기 잘못이고요.

    웬만한 것은 PHP에서 알아서 다 뒷정리를 해줍니다.

    앞으로는 아예 close할 필요가 없도록 바꿔보겠습니다.

  • profile profile
    아, 디버그와 관계가 있었겠네요.
    확인 감사합니다!
  • profile ?
    전자입니다.
    {@
    $oContext = &Context::getInstance();
    $oContext->init();
    $layout_info = Context::get('layout_info');
    }
    찾아본 내용인데 이렇게 하면 안돼네요 ㅠ
  • ? profile
    1. 페이지 모듈을 통해 외부페이지로 로딩되는 파일이라면 Context 초기화는 필요하지 않습니다.

    2. 외부페이지 실행 시점이 레이아웃 실행 시점보다 빨라서, layout_info가 아직 세팅되지 않았을 가능성이 높습니다. (정상적으로 호출되었다면 module_info 등 다른 변수들은 아마 있을 거예요. 레이아웃만 없어요...) 이 경우 layout 모듈을 호출해서 필요한 정보를 직접 받아오셔야 합니다.
  • profile ?
    {@
    $oLayoutModel = &getModel('layout');
    $layout_info = $oLayoutModel->getLayout(154);
    }

    {$layout_info->extra_var->aaa->value}
    이렇게 해서 해결했습니다^^
    감사합니다^^
  • profile
    번외 입니다.

    https://xe1.xpressengine.com/index.php?mid=download&package_id=22753403

    위 자료를 쓰면 외부페이지(파일)을 외부페이지가 아닌 위젯으로 불러올 수가 있습니다.

    페이지를 만들때 외부페이지(X) 가 아닌 위젯페이지(O) 로 만든다음
    해당 페이지에 외부페이지출력위젯으로 삽입을 하면 됩니다.(외부파일 경로 입력하게 되어있습니다.)

    장점은 위젯 페이지 이므로 다양한 위젯과 함께 페이지를 꾸밀 수 있습니다.
    위젯복수개 + 외부파일(페이지) 복수개 가능합니다.
    위젯처럼 RXE 변수등이 사용이 가능해 집니다.
  • profile ?
    다음에는 이 위젯을 한번 사용해봐야겠어요~