미리 생성된 카페 레이아웃 변경하기

layouts 테이블에서 해당 layout_srl과 동일한 row를 확인하여 layout, title 컬럼 정보를 수정하면 됩니다.

수정 후에도 적용이 되지 않을 경우, /files/faceoff/{layout_srl} 폴더를 삭제해 주십시요.

 

가상사이트에서 발생하는 메인메뉴 링크(url) 오류 고치기

menu.admin.controller.php 파일의 getXmlTree, getPhpCacheCode 함수 내의 

$href = "getSiteUrl('$domain', '','mid','$node->url')";

 

를 다음과 같이 수정합니다.

if ($site_srl)

    $href = "getSiteUrl('$domain', '','mid','$node->url')";

else {

    $db_info = Context::getDBInfo();

    $http_host = ($_SERVER['HTTPS'] == 'on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'];

    $base_url = str_replace($http_host, '', $db_info->default_url);

    $href = sprintf('"%s%s"', $base_url, $node->url);

}

 

수정 후 캐시파일을 반드시 재생성해야 합니다.

'XE 1.11.x' 카테고리의 다른 글

XML쿼리 사용할 때 유의할 점  (0) 2017.02.28
XE url 요청 프로세스  (0) 2017.02.28
XE 디버깅 설정  (0) 2017.02.17
XE 기본 모듈 제작  (0) 2017.02.10
XE 템플릿 문법  (0) 2017.02.09

참고사이트 - https://www.xpressengine.com/tip/17899854


xe 분석을 하다보니 디버깅에 대한 고민이 생겨 정리를 해 보았습니다.


(XE설치경로)/config/config.user.inc.php

  • 기본 설정보다 우선하는 사용자 구성 파일
  • 아래의 정보를 사용자 구성 파일에 새로 작성하여 저장

<?php

    define('__DEBUG__', 0);

    define('__DEBUG_OUTPUT__', 0);

    define('__DEBUG_PROTECT__', 1);

    define('__DEBUG_PROTECT_IP__', '127.0.0.1');

    define('__DEBUG_DB_OUTPUT__', 0);

    define('__LOG_SLOW_QUERY__', 0);

    define('__LOG_SLOW_TRIGGER__', 0);

    define('__LOG_SLOW_ADDON__', 0);

    define('__LOG_SLOW_WIDGET__', 0);

    define('__DEBUG_QUERY__', 0);

    define('__OB_GZHANDLER_ENABLE__', 1);

    define('__ENABLE_PHPUNIT_TEST__', 0);

    define('__PROXY_SERVER__', 'http://domain:port/path');

    define('__ERROR_LOG__', 0);

 

__DEBUG__

어떤 종류의 디버깅 메시지를 출력할 것인지 선택합니다. (비트연산으로 복합적으로 사용 가능)

  • 0x00 : 메시지 미출력
  • 0x01 : debugPrint() 함수에 의한 메시지 출력
  • 0x02 : 출력 소요 시간, 요청/응답 정보 출력
  • 0x04 : DB 쿼리 내역 출력

__DEBUG_OUTPUT__

디버깅 메시지의 출력 방법 선택합니다.

  • 0 : files/_debug_message.php 파일에 출력 (안되던데??)
  • 1 : 웹페이지 소스보기에서 맨 하단에 주석으로 출력
  • 2. : FirePHP 콘솔 출력

선택의 여지가 없이 FirePHP 콘솔 출력을 사용할 듯 합니다. [FirePHP for Chrome]를 설치하시고 개발자도구를 열어보시면 새로운 탭이 생깁니다.


__DEBUG_PROTECT__

디버깅 메시지를 확인할 수 있는 IP 주소에 대한 범위를 지정할 수 있습니다.

  • 0 : 제한없음 (권장하지 않음)
  • 1 : 특정 IP 주소만 허락

__DEBUG_PROTECT_IP__

__DEBUG_PROTECT__가 1일 때, 디버깅 메시지를 볼 수 있게 허가된 IP 주소를 설정합니다.


__DEBUG_DB_OUTPUT__

DB 에러 메시지를 파일 출력할 것인지를 선택합니다.

  • 0 : 에러 메시지 미출력
  • 1 : files/_debug_db_query.php 파일에 출력

__LOG_SLOW_QUERY__

__LOG_SLOW_TRIGGER__

__LOG_SLOW_ADDON__

__LOG_SLOW_WIDGET__

지정된 시간(밀리초)보다 실행시간이 초과되었을 경우 파일 출력할 것인지를 선택합니다.

  • 0 : 메시지 미출력
  • 1 : files/_slowlog_xxxx.php 파일에 출력

__DEBUG_QUERY__

XML 쿼리 ID를 실행되는 query문에 주석으로 출력이 된다는 뜻인 것 같습니다. (사용법을 정확히 모르겠네.)

  • 0 : XML 쿼리 ID 미출력
  • 1 : XML 쿼리 ID 출력

__OB_GZHANDLER_ENABLE__

웹페이지 테이터를 압축 전송할지의 여부를 선택합니다.

  • 0 : 미사용
  • 1 : 사용

__ENABLE_PHPUNIT_TEST__

PHP unit 테스트 사용 여부를 선택합니다.

  • 0 : 미사용
  • 1 : 사용

그 외,

__PROXY_SERVER__, 

__ERROR_LOG__

는 생략하기로 합니다.


'XE 1.11.x' 카테고리의 다른 글

XML쿼리 사용할 때 유의할 점  (0) 2017.02.28
XE url 요청 프로세스  (0) 2017.02.28
CafeXE 모듈 수정해 보기  (0) 2017.02.22
XE 기본 모듈 제작  (0) 2017.02.10
XE 템플릿 문법  (0) 2017.02.09

참고사이트 - http://www.slideshare.net/flyskykr/xe-34832050http://www.xeschool.com/xe/xenote_module_book_about


모듈명 : myboard (다국어지원과 관련한 내용은 기술하지 않습니다.)


모듈 설정 파일


1. 정보파일 (XE설치폴더/modules/myboard/conf/info.xml)


모듈의 정보파일을 작성하여 XE core가 인식할 수 있도록 합니다.


<?xml version="1.0" encoding="UTF-8"?>

<module version="0.2">

    <title xml:lang="ko">나만의 게시판</title>

    <description xml:lang="ko">문서 모듈을 사용한 나만의 게시판 모듈입니다.</description>

    <version>1.0</version>

    <date>2017-02-10</date>

    <category>service</category>

    <author email_address="" link="opencocktail@tistory.com">

        <name xml:lang="ko">블렌더</name>

    </author>

</module>


2. 모듈파일 (XE설치폴더/modules/myboard/conf/module.xml)


<grant> 요소는 모듈에 대한 사용 허가 권한에 대한 내용으로 생성된 각 모듈별 [권한관리 > 권한설정] 에서 확인할 수 있고 <grant> 요소 내 default, target 속성에 들어갈 수 있는  값은 guest/member/manager/root 입니다. 


<action> 요소는 type 속성을 지정하여 해당 파일별로 호출할 수 있는 함수명을 정의하였습니다. standalone 속성은 반드시 mid 파라미터를 가지고 실행을 해야 하는 경우에 false로 세팅을 해야 하며, 이 속성을 사용을 하지 않으면 보안에 문제가 생길 수 있습니다. 


<?xml version="1.0" encoding="utf-8"?>

<module>

    <grants>

        <grant name="list" default="guest">

            <title xml:lang="ko">목록</title>

        </grant>

        <grant name="view" default="guest">

            <title xml:lang="ko">열람</title>

        </grant>

        <grant name="write" default="guest">

            <title xml:lang="ko">작성</title>

        </grant>

        <grant name="delete" default="guest">

            <title xml:lang="ko">삭제</title>

        </grant>

    </grants>


    <permissions>

        <permission action="dispMyboardAdminContentList" target="manager" />

        <permission action="dispMyboardAdminInsertContent" target="manager" />

        <permission action="dispMyboardAdminDeleteContent" target="manager" />

        <permission action="dispMyboardAdminGrantInfo" target="manager" />

        <permission action="dispMyboardAdminSkinInfo" target="manager" />

 

        <permission action="procMyboardAdminInsertContent" target="manager" />

        <permission action="procMyboardAdminDeleteContent" target="manager" />

    </permissions>

    

    <actions>

        <action name="dispMyboardDocumentList" type="view" index="true" />

        <action name="dispMyboardViewDocument" type="view" />

        <action name="dispMyboardInsertDocument" type="view" />

        <action name="dispMyboardDeleteDocument" type="view" />

 

        <action name="procMyBoardInsertDocument" type="controller" />

        <action name="procMyBoardDeleteDocument" type="controller" />

 

        <action name="dispMyboardAdminContentList" type="view" standalone="true" admin_index="true" />

        <action name="dispMyboardAdminInsertContent" type="view" standalone="true" />

        <action name="dispMyboardAdminDeleteContent" type="view" standalone="true" />

        <action name="dispMyboardAdminGrantInfo" type="view" standalone="true" />

        <action name="dispMyboardAdminSkinInfo" type="view" standalone="true" />

 

        <action name="procMyboardAdminInsertContent" type="controller" standalone="true" />

        <action name="procMyboardAdminDeleteContent" type="controller" standalone="true" />

    </actions>

</module>


3. 기본클래스 (XE설치폴더/modules/myboard/myboard.class.php)


모듈의 설치/업데이트/삭제 기능이 구현된 기본 클래스입니다. 클래스 선언 후 필요에 따라 추가적으로 구현을 해 주시면 됩니다.


<?php

    class myboard extends ModuleObject {

 

 

        /**

         * @brief 설치시 추가 작업이 필요할시 구현

         **/

        function moduleInstall() {

 

            return new Object();

        }

 

        /**

         * @brief 설치가 이상이 없는지 체크하는 method

         **/

        function checkUpdate() {

 

            return false;

        }

 

        /**

         * @brief 업데이트 실행

         **/

        function moduleUpdate() {

 

            return new Object(0, 'success_updated');

        }

 

        function moduleUninstall() {

 

            return new Object();

        }

 

        /**

         * @brief 캐시 파일 재생성

         **/

        function recompileCache() {

        }

 

    }

?> 


파일의 마지막에서 PHP 블록의 닫기 태그를 생략할 수 있으며, 때로는 유용합니다. include나 require를 사용할 경우, 원하지 않은 공백이 파일 마지막에 들어가지 않게 함으로써, 나중에 추가 응답 헤더를 추가할 수 있습니다. 또한 출력 버퍼링을 사용할 경우에도 포함한 파일들에 의해서 각 파트의 마지막에 원하지 않은 공백을 피할 수 있으므로 도움이 됩니다.


위의 파일 3개를 경로에 맞추어 올리면 관리자 페이지 내의 설치된 모듈에서 확인이 가능해집니다. 




'XE 1.11.x' 카테고리의 다른 글

XML쿼리 사용할 때 유의할 점  (0) 2017.02.28
XE url 요청 프로세스  (0) 2017.02.28
CafeXE 모듈 수정해 보기  (0) 2017.02.22
XE 디버깅 설정  (0) 2017.02.17
XE 템플릿 문법  (0) 2017.02.09

+ Recent posts