• 새로운 소식이 있나요?
  • 이미지
    2019-05-10
    글본문

    누리고 스킨 제작 중 저 부분이 어느 파일에서 어떻게 설정해서 동작하는지 몰라 헤매다 적어둡니다. ㅠㅠ


    1) 장바구니 스킨

    modules/ncart/skins/default_dev/orderitems.html


    2) 결제모듈 설정

    누리고관리자 > 결제관리 > 결제모듈 페이지관리 > 연동모듈

    https://eond.com/index.php?module=cympusadmin&act=dispEpayAdminInsertEpay&module_srl=330224

    ※ 연동모듈로 설정한 모듈 순서대로 나타납니다. 3) 연동모듈 설정 참조.


    3) 연동모듈 설정

    누리고관리자 > 결제관리 > 페이지목록 > 설정 >

    3-1) 무통장입금 결제모듈 

    XE관리자 > 모듈 > 무통장입금 결제모듈

    https://eond.com/index.php?module=admin&act=dispCashpayAdminModInstList

    3-2) INIpay Standard 결제 모듈

    XE관리자 > 모듈 > INIpay Standard 결제 모듈

    https://eond.com/index.php?module=admin&act=dispInipaystandardAdminInsertModule&module_srl=380039 

    결제방식에 사용함으로 설정된 항목이 순서대로 나타납니다.


    4) 결제하기 버튼

    누리고관리자 > 결제관리 > 결제모듈 페이지 관리 > 플러그인

    https://eond.com/index.php?module=cympusadmin&act=dispEpayAdminInsertEpay&module_srl=330224


    5) 작업스킨

    modules/cashpay/skins/default/start.html

    modules/epay/plugins/cash/tpl/formdata.html


    누리고 스킨 제작 중 저 부분이 어느 파일에서 어떻게 설정해서 동작하는지 몰라 헤매다 적어둡니다. ㅠㅠ 1) 장바구니 스킨 modules/ncart/skins/default_dev/orderitems.html 2) 결제모듈 설정 누리고관리자 > 결제관리 > 결제모듈 페이지관리 > 연동모듈 https://eond.com/index.php?module=cympusadmin&act=dispEpayAdminInsertEpay&module_srl=330224 ※ 연동모듈로 설정한 ... 더보기
  • 이미지
    2019-03-22
    글본문
    # block direct access to templates, XML schemas, config files, dotfiles, environment info, etc.
    location ~ ^/modules/editor/(skins|styles)/.+\.html$ {
       # pass
    }
    location ~ ^/(admin/help|common/manual)/.+\.html$ {
       # pass
    }
    location ~ ^/(addons|common/tpl|files/ruleset|(m\.)?layouts|modules|plugins|themes|widgets|widgetstyles)/.+\.(html|xml)$ {
       return 403;
    }
    location ~ ^/messageTalk/talk.+\.php$ {
       # try_files $uri $uri/;
       fastcgi_pass unix:/run/php/pool.eond.sock;
       include snippets/fastcgi-php.conf;
       limit_req zone=antiddos burst=12 nodelay;
    }
    location ~ ^/misc/.+\.php$ {
       # try_files $uri $uri/;
       fastcgi_pass unix:/run/php/pool.eond.sock;
       include snippets/fastcgi-php.conf;
       limit_req zone=antiddos burst=12 nodelay;
    }
    location ~ ^/files/(attach|config|cache/store)/.+\.php$ {
       return 403;
    }
    location ~ ^/files/(env|member_extra_info/(new_message_flags|point))/ {
       return 403;
    }
    location ~ ^/(\.(git|ht|jshint)|codeception\.|composer\.|Gruntfile\.js|package\.json|CONTRIBUTING|COPYRIGHT|LICENSE|README) {
       return 403;
    }
    
    # fix incorrect relative URLs (for legacy support)
    location ~ ^/(.+)/(addons|common|files|layouts|m\.layouts|modules|widgets|widgetstyles)/(.+) {
       try_files $uri $uri/ /$2/$3;
    }
    
    # fix incorrect minified URLs (for legacy support)
    location ~ ^/(.+)\.min\.(css|js)$ {
       try_files $uri $uri/ /$1.$2;
    }
    
    
    # rss, blogAPI
    rewrite ^/(rss|atom)$ /index.php?module=rss&act=$1 last;
    rewrite ^/([a-zA-Z0-9_]+)/(rss|atom|api)$ /index.php?mid=$1&act=$2 last;
    rewrite ^/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/(rss|atom|api)$ /index.php?vid=$1&mid=$2&act=$3 last;
    
    # trackback
    rewrite ^/([0-9]+)/(.+)/trackback$ /index.php?document_srl=$1&key=$2&act=trackback last;
    rewrite ^/([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ /index.php?vid=$1&document_srl=$2&key=$3&act=trackback last;
    
    # administrator page
    rewrite ^/admin/?$ /index.php?module=admin last;
    
    # document category
    rewrite ^/([a-zA-Z0-9_]+)/category/([0-9]+)$ /index.php?mid=$1&category=$2 last;
    
    # document permanent link
    rewrite ^/([0-9]+)$ /index.php?document_srl=$1 last;
    
    # mid link
    #rewrite ^/([a-zA-Z0-9_]+)/?$ /index.php?mid=$1 last;
    
    location ~ ^/([a-zA-Z0-9_]+)/?$ {
        try_files $uri $uri/ /index.php?mid=$1;
    }
    
    
    # mid + document link
    rewrite ^/([a-zA-Z0-9_]+)/([0-9]+)$ /index.php?mid=$1&document_srl=$2 last;
    
    # vid + mid link
    rewrite ^/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/?$ /index.php?vid=$1&mid=$2 last;
    
    # vid + mid + document link
    rewrite ^/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)$ /index.php?vid=$1&mid=$2&document_srl=$3 last;
    
    # mid + entry title
    rewrite ^/([a-zA-Z0-9_]+)/entry/(.+)$ /index.php?mid=$1&entry=$2 last;
    
    # vid + mid + entry title
    rewrite ^/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/(.+)$ /index.php?vid=$1&mid=$2&entry=$3 last;
    # block direct access to templates, XML schemas, config files, dotfiles, environment info, etc. location ~ ^/modules/editor/(skins|styles)/.+\.html$ { # pass } location ~ ^/(admin/help|common/manual)/.+\.html$ { # pass } location ~ ^/(addons|common/tpl|files/ruleset|(m\.)?layouts|modules|plugins|themes|widgets|widgetstyles)/.+\.(html|xml)$ { return ... 더보기
  • 이미지
    2019-01-17
    글본문

    현재접속자수 250명이 기본인 사이트에서 밤 10시 피크타임에서 사이트가 죽는 현상이 간헐적으로 발생한다고 문의를 주셔서 살펴봤습니다. 이 팁은 기진곰님께서 알려주셨습니다.

    1) 해당 사이트 서버 사양

    1) 구글애널리틱스 확인


    3) 서버 cpu 및 메모리 사용량 확인

    디비가 cpu 다 먹고 있네요. 디비 부하를 일으키는 쿼리나 애드온 같은걸 찾아서 고친다면 괜찮을 수도 있어요.

    카페24 퀵서버는 여러대 신청해도 내부망 연결이 안되기 때문에 서버 분산이 쉽지 않습니다


    4) DB 사용현황 체크

    mysql 명령으로 디비 root 계정으로 접속한 후 SHOW FULL PROCESSLIST; 해보세요

    cpu를 500% 이상 쓰고있는 디비 상태가 아니네요.

    1초 간격으로 여러번 체크해봅니다.


    해결책 > 

    1. InnoDB 쓰세요.

    2. 슈퍼캐시 모듈 설치하고 게시판캐시/오프셋쿼리 기능 켜세요.


    5) DB종류 확인

    기존 테이블들도 InnoDB 형태로 바꿔야 합니다. 방문자가 많지 않은 시간대에 phpmyadmin에서 작업하셔도 되고요

    ALTER TABLE 테이블명 ENGINE=InnoDB;

    이 쿼리를 테이블마다 한번씩 해주면 돼요.

    용량이 큰 테이블이라면 시간 꽤 걸릴 수도 있어요

    innodb는 무조건 쓰는겁니다^^

    요즘은 innodb를 쓰지 않을 이유가 없기 때문에, 제가 서버를 세팅해 드렸다면 당연히 innodb를 쓴다고 가정하고 튜닝해드렸을 거예요. 그런데 그 서버에 innodb를 쓰지 않는 사이트를 올려놓으면 제 성능이 안나오죠

    6) XE 모듈 정리

    7) XE 슈퍼캐시 모듈 설치

    https://www.xpressengine.com/index.php?mid=download&package_id=22753865

    8) InnoDB로 변환

    테이블 목록 뽑아서 에디터에 집어넣고 복붙신공으로 ALTER TABLE 쿼리를 잔뜩 작성한후 그걸 sql 파일로 만들어서 실행한다면 괜찮습니다. mysqldump 쓰지 말고 그냥 테이블 목록만 사용해서요

    http://joridari.tistory.com/15


    https://phiz.kr/hosting/9446


    현재접속자수 250명이 기본인 사이트에서 밤 10시 피크타임에서 사이트가 죽는 현상이 간헐적으로 발생한다고 문의를 주셔서 살펴봤습니다. 이 팁은 기진곰님께서 알려주셨습니다. 1) 해당 사이트 서버 사양 1) 구글애널리틱스 확인 3) 서버 cpu 및 메모리 사용량 확인 디비가 cpu 다 먹고 있네요. 디비 부하를 일으키는 쿼리나 애드온 같은걸 찾아서 고친다면 괜찮을 수도 있어... 더보기
  • 이미지
    2019-01-08
    글본문

    사용자검색모듈

    http://www.xpressengine.com/index.php?&mid=download&package_srl=20832931

    사용자검색위젯

    http://www.xpressengine.com/index.php?&mid=download&package_srl=20832909

    개발자블로그

    https://blog.naver.com/k_rifle/158055580


    개발자 : 개발해보쟈(k_rifle)

    제작년도 : 2012년


    하도 오래 전 개발프로그램이다보니 요즘 사용하려니 모바일 대응이나 PHP7.2이상 지원 등 소소하게 고칠 부분들이 있었습니다.

    1) 모듈 쪽에서는 Object를 BaseObject로 수정해야하고,

    2) 비회원일 경우에는 기본적으로 동작하지 않기 때문에 수정하려면,

    \modules\user_finder\user_finder.model.php

    21라인을 수정하는 등의 작업을 추가로 해야합니다.

    3) 위젯 스킨은 PC, 모바일 지원되도록 수정해야하고, 디자인도 좀 많이 손 봤습니다.

    사용자검색모듈 http://www.xpressengine.com/index.php?&mid=download&package_srl=20832931 사용자검색위젯 http://www.xpressengine.com/index.php?&mid=download&package_srl=20832909 개발자블로그 https://blog.naver.com/k_rifle/158055580 개발자 : 개발해보쟈(k_rifle) 제작년도 : 2012년 하도 오래 전 개발프로그램이다보니 요즘 사용하려니 모바일 대응이나 PHP7.2이... 더보기
  • 이미지
    2019-01-05
    글본문

    오류1) 오류 메시지를 표시하지 않도록 설정되어 있습니다. 서버의 에러 로그에서 자세한 내용을 확인해 주십시오. 

    오류2) Error #0 "Call to undefined method marketplaceItem::getTags()" in index.php on line 52 (via classes/display/HTMLDisplayHandler.php on line 529)

    오류3) Error #0 "Call to undefined function eregi_replace()" in modules/marketplace/marketplace.item.php on line 1407

    오류4) Call to undefined method marketplaceItem::getHashTags()

    문제 : 특정 호스팅에서 오류1)과 같은 메세지가 출력이 되고, 관리자일 경우 오류2), 오류3)이 마켓플레이스 모듈에서 나타남.


    해결3) eregi 오류는 php 버전과 관련이 있는 문제임.

    /www/modules/marketplace/marketplace.item.php

    //        $content = eregi_replace("([0-9]{3})([\-])([0-9]{3,4})([\-])([0-9]{4})", $replace, $content);
             $content = preg_replace('/([0-9]{3})([\-])([0-9]{3,4})([\-])([0-9]{4})/', $replace, $content);

    eregi_replace를 preg_replace로 교체 후 해당 함수에 맞는 정규식으로 입력 대체함.

    *버전과 상관없이 동작도리 수도 있음.


    해결2) marketplaceItem::getTags() 함수가 정의되지 않았다는 오류 메세지.

    marketplace.item.php 파일에서 getTags()함수를 정의해주면 됨.


    해결4) marketplaceItem::getHashTags() 함수가 정의되지 않았다는 오류 메세지.

    marketplace.item.php파일에서 getHashTags() 함수를 정의해주면 됨.

    어떤 역할을 하는지 몰라서 빈 내용의 함수만 정의해줌.

    function getHashtags(){
       return;
    }


    > 해당 함수들이 실제 마켓플레이스 모듈 스킨에서 사용되는지 여부는 체크할 수 없었음.

    > 라이믹스로 운영되는 사이트에서 발생된 오류 메세지로 XE 동일한 문제인지는 알 수 없음. 라이믹스 문제인지 알 수 없었음.


    ※참조

    eregi 관련 오류) http://blog.arzz.com/409


    #2021년 2월 28일 수정

    function getHashtags(){
       // 오류가 발생해서 추가함.
    }
    function getTags(){
       // 오류가 발생해서 추가함.
    }

    marketplace.item.php 파일에서 위 함수 마지막에 추가해넣음. 

    오류1) 오류 메시지를 표시하지 않도록 설정되어 있습니다. 서버의 에러 로그에서 자세한 내용을 확인해 주십시오. 오류2) Error #0 "Call to undefined method marketplaceItem::getTags()" in index.php on line 52 (via classes/display/HTMLDisplayHandler.php on line 529) 오류3) Error #0 "Call to undefined function eregi_replace()" in modules/marketplace/marketpl... 더보기
    1
  • 이미지
    2018-12-09
    글본문

    에러현상 : 


    Fatal error: Uncaught Error: Call to undefined method store_searchModel::getComments() in D:\Web\eond\www\modules\isx\isx.view.php:189 Stack trace: #0 D:\Web\eond\www\modules\isx\isx.view.php(38): isxView->ISX() #1 D:\Web\eond\www\classes\module\ModuleObject.class.php(443): isxView->IS() #2 D:\Web\eond\www\classes\module\ModuleHandler.class.php(857): ModuleObject->proc() #3 D:\Web\eond\www\index.php(59): ModuleHandler->procModule() #4 {main} thrown in D:\Web\eond\www\modules\isx\isx.view.php on line 189 

    1. 로컬에서 검색을 하니 위와 같은 에러 메세지 출력함.

    2. store_searchModel 검색하니 누리고 통합검색모듈.

    3. 현재는 사용하지 않음. 동작되는지도 불분명함.

    4. 깃헙에는 있으나 실제 동작은 확인해보지 못함.

    https://github.com/nurigo-world/xe-module-store_search




    에러현상 : Fatal error: Uncaught Error: Call to undefined method store_searchModel::getComments() in D:\Web\eond\www\modules\isx\isx.view.php:189 Stack trace: #0 D:\Web\eond\www\modules\isx\isx.view.php(38): isxView->ISX() #1 D:\Web\eond\www\classes\module\ModuleObject.class.php(443): isxView->IS() #2 D:\Web\eond\www\classes\module\ModuleHandler.cla... 더보기
  • 이미지
    2018-11-19
    글본문

    코노리님의 콘텐츠판모듈을

    https://eond.com/shop
    게시판 검색 안되는거 수정했습니다.
    검색할 때 index.php로 시작이 안되고
    shop? 이렇게 시작해서 검색이 안됐던거 같네요.

    라이믹스 사용하는 xetown에서는
    https://xetown.com/?error_return_url=%2Fpoint_contents&act=&vid=&mid=point_contents&category=&search_keyword=%EA%B2%8C%EC%8B%9C%ED%8C%90&search_target=title_content



    코노리님의 콘텐츠판모듈을

    https://eond.com/shop게시판 검색 안되는거 수정했습니다.검색할 때 index.php로 시작이 안되고shop? 이렇게 시작해서 검색이 안됐던거 같네요.

    라이믹스 사용하는 xetown에서는https://xetown.com/?error_return_url=%2Fpoint_contents&act=&vid=&mid=point_contents&category=&search_keyword=%EA%B2%8C%EC%8B%9C%ED%8C%90&search_target=title_content

  • 이미지
    2018-11-11
    글본문

    방법1. sejin7940_write_limit - 일정기간 글/댓글 작성수 제한 애드온 ver. 1.5.2 (세진)

    https://www.xpressengine.com/index.php?mid=download&package_id=19923002


    방법2. 게시판 글 작성 수 제한 애드온 (웹지기)

    https://xetown.com/point_contents/1085898

    ※ 댓글은 안됨.


    방법3. 스킨 수정 (송동우/세진)

    https://www.xpressengine.com/qna/21353763

    https://www.xpressengine.com/qna/21738888


    송동우님의 방법은 기존 모듈의 쿼리를 가져와서 카운트하는 것 같은데,

    comment 모듈에서 getCommentCount 혹은

    /www/modules/comment/queries/getCommentCount.xml

    document 모듈에서 getDocumentCount 쿼리문을 봐도

    /www/modules/document/queries/getDocumentCount.xml

    로그인한 사용자의 댓글 갯수를 뽑아오는 쿼리문은 없었던 것 같았습니다.

    logged_info 라는 쿼리문이 있으면 송동우님 방법대로 했겠지만 쓸 수 있는 쿼리문이 없어서,

    세진님이 알려주신 직접 쿼리문을 짜서 가져오는 방법으로 해봤습니다.

    {@
    $oDB = &DB::getInstance();
    $query_recomment = $oDB->_query('select count(*) as total from xe_comments where document_srl = '.$oComment->get('document_srl').' and user_id = "'.$logged_info->user_id.'"');
    $result_recomment = $oDB->_fetch($query_recomment);

    여기 빨간색 부분이 문제인 거 같아,  $oDocument->document_srl 로 변경해주었습니다.

    <block cond="$mid=='event'">
       {@
       $oDB = &DB::getInstance();
       $query_recomment = $oDB->_query('select count(*) as total from xe_comments where document_srl = '.$oDocument->document_srl.' and user_id = "'.$logged_info->user_id.'"');
       $result_recomment = $oDB->_fetch($query_recomment);
       
       $args->member_srl = $logged_info->member_srl;
       $args->module_srl = $module_info->module_srl;
       $args->comment_count = $module_info->document_srl;
       //$output = executeQuery('document.getDocumentCount', $args);
       $output = executeQuery('document.getDocumentCount', $args);
       
       
       }
       
       {@ $commentModel = &getModel('comment')}
    </block>
    [0] <span cond="$commentModel->getCommentCount($oDocument->document_srl)">{$commentModel->getCommentCount($oDocument->document_srl)}</span>
    <hr>
    [1]{$result_recomment->total}
    <hr>
    [2]{count($output->data)}
    <hr>
    [3]{$output->data->count}
    <hr>

    {$result_recomment->total} 만 제대로 동작하는 소스입니다. ㅋ;


    방법1. sejin7940_write_limit - 일정기간 글/댓글 작성수 제한 애드온 ver. 1.5.2 (세진) https://www.xpressengine.com/index.php?mid=download&package_id=19923002 방법2. 게시판 글 작성 수 제한 애드온 (웹지기) https://xetown.com/point_contents/1085898 ※ 댓글은 안됨. 방법3. 스킨 수정 (송동우/세진) https://www.xpressengine.com/qna/21353763 https://www.xpress... 더보기
  • 이미지
    2018-07-25
    글본문

    설치가 되었다고 해도, 발신번호를 설정하지 않으면 저장이 되지 않는다.

    현재 모듈에서 해당 링크가 동작하지 않으므로, 쿨SMS 사이트에 직접 접속해서 발신번호를 추가 설정하여야 한다. 


    발신번호 등록하러 가기

    https://www.coolsms.co.kr/index.php?mid=service_setup&act=dispSmsconfigSenderNumbers



    알림설정 모듈

    알림설정 모듈의 알림 내용은 단순하다. 기존 알림센터 모듈의 내용을 그대로 문자로 보내줄 뿐이다. 등록된 게시물의 url 이나 내용을 편집하는 기능은 없다.

    또 같은 시각의 글을 중복 전송하는 버릇이 있나보다. 


    누리고 푸시앱

    푸시앱은 전송은 바로바로 되지만, 가끔 오류로 앱이 뻗는다.

    설치가 되었다고 해도, 발신번호를 설정하지 않으면 저장이 되지 않는다. 현재 모듈에서 해당 링크가 동작하지 않으므로, 쿨SMS 사이트에 직접 접속해서 발신번호를 추가 설정하여야 한다. 발신번호 등록하러 가기 https://www.coolsms.co.kr/index.php?mid=service_setup&act=dispSmsconfigSenderNumbers https://www.coolsms.co.kr/index.php?mid=service_setup&act=dispSmsco... 더보기
  • 이미지
    2018-07-25
    글본문 부운영자모듈(무료) - 기능만 담당, 관리자UI는 없음. http://showjean.tistory.com/122 https://www.xpressengine.com/tip/20496492 부운영자모듈(유료) https://www.xpressengine.com/forum/23150370 https://xetown.com/rxe_file/283924 https://www.xemarket.co.kr/?mid=marketiteminfo&act=dispMarketitemDetailListView&item_srl=15805 부운영자모듈(러키군, 유료, 개발중... 더보기
  • 이미지
    2018-05-27
    글본문
    <!--@if($act == "login")-->임의의 act 일 경우 출력됨<!--@end-->

    eond.com/is?act=login
    도메인/모듈명?act=임의의act


    레이아웃에서 이렇게 쓰면, 해당 레이아웃을 사용하는 mid에서 임의의 act일 경우에 출력하는 내용을 사용자가 정의할 수가 있습니다. 

    기존에는 mid를 위젯페이지를 추가해서 해당 위젯페이지일 경우에 출력하는 내용을 다르게 했는데요, act로도 저렇게 정의해줄 수가 있네요.


    https://eond.com/index.php?mid=is&act=login

    <!--@if($act == "login")-->임의의 act 일 경우 출력됨<!--@end-->

    eond.com/is?act=login도메인/모듈명?act=임의의act

    레이아웃에서 이렇게 쓰면, 해당 레이아웃을 사용하는 mid에서 임의의 act일 경우에 출력하는 내용을 사용자가 정의할 수가 있습니다. 

    기존에는 mid를 위젯페이지를 추가해서 해당 위젯페이지일 경우에 출력하는 내용을 다르게 했는데요, act로도 저렇게 정의해줄 수가 있네요.

    https://eond.com/index.php?mid=is&act=login

  • 이미지
    2018-05-27
    글본문

    멀티도메인 모듈을 설치한다.

    ※멀티도메인 애드온은 필요없습니다.

    1. 멀티도메인을 설치한다.

    https://www.xpressengine.com/index.php?mid=download&package_id=21876980

    2. 설정 - 일반에서 기본 도메인값을 지워준다.

    3.  '잘못된 요청입니다' 문제 수정하기

    https://www.xpressengine.com/index.php?mid=qna&search_target=title&search_keyword=%EB%A9%80%ED%8B%B0%EB%8F%84%EB%A9%94%EC%9D%B8&document_srl=23202184


    4. 멀티도메인 모듈에서 각 도메인값을 지정해준다.


    멀티도메인 모듈을 설치한다. ※멀티도메인 애드온은 필요없습니다. 1. 멀티도메인을 설치한다. https://www.xpressengine.com/index.php?mid=download&package_id=21876980 2. 설정 - 일반에서 기본 도메인값을 지워준다. 3. '잘못된 요청입니다' 문제 수정하기 https://www.xpressengine.com/index.php?mid=qna&search_target=title&search_keyword=%EB%A9%80%ED%8B%B0%EB%8F%8... 더보기
  • 이미지
    2018-04-11
    글본문

    본 글은 마켓플레이스 모듈에서 상위 카테고리의 선택 여부를 구분하고자 할 때 사용하는 팁입니다. 

    조금 더 설명하자면 2차 메뉴가 여성의류이고, 3차 메뉴가 상의, 하의 등일 경우 3차를 선택했을 경우 2차 메뉴가 seleted 된 상태인지 여부를 구분하고자 할 때 사용 할 수 있습니다.


    제가 삽질한 코드는 다음과 같습니다. -_-; 새벽 내내 수백번 고쳐적은 듯;;

    <pre>
    {print_r($cate_list)}
    </pre>

    <pre>
    category : {$category} <br>
    val->category_srl : {$val->category_srl} <br>
    category_list[$category]->parent_srl : {$category_list[$category]->parent_srl} <br>
    category=val->category_srl : {$category==$val->category_srl} <br>
    [text:{$category_list[$category]->text}]
    [expand:{$category_list[$category]->expand}<!--@if($category_list[$category='5918']->expand=='1')-->O<!--@else-->X<!--@end-->]
    [child_count:{$category_list[$category]->child_count}]
    [childs:{var_dump($category_list[$category]->childs)}]
    </pre>


    $cate_list

    카테고리 정보를 출력하는 변수입니다.


    {var_dump($cate_list)} 혹은 {print_r($cate_list)} 라고 적으면 이 변수에 담긴 값들이 출력됩니다.

    좀 더 예쁘게 보기 위해서는 <pre>...</pre> 태그로 감싸주세요.


    [ex]

    <pre>{print_r($cate_list)}<pre>


    ※ var_dump와 print_r의 차이점

    http://chongmoa.com/php/5130



    [위 코드에 대한 결과값 스크린샷]


    {print_r($cate_list)} 라고 입력하면 위와 같은 화면이 출력됩니다.


    마켓플레이스에서 설정한 카테고리는 다음과 같습니다.


    전체를 다 가져와보면 아래와 같습니다. 

    Array
    (
        [5918] => stdClass Object
            (
                [mid] => mp1
                [module_srl] => 5305
                [category_srl] => 5918
                [parent_srl] => 0
                [text] => 여성의루
                [title] => 여성의루
                [description] => 
                [expand] => 1
                [color] => 
                [document_count] => 0
                [depth] => 0
                [child_count] => 2
                [childs] => Array
                    (
                        [0] => 5919
                        [1] => 5920
                    )
    
                [grant] => 1
                [selected] => 
                [first] => 1
                [children] => Array
                    (
                        [0] => stdClass Object
                            (
                                [mid] => mp1
                                [module_srl] => 5305
                                [category_srl] => 5919
                                [parent_srl] => 5918
                                [text] => 2차
                                [title] => 2차
                                [description] => 
                                [expand] => 1
                                [color] => 
                                [document_count] => 0
                                [depth] => 1
                                [child_count] => 1
                                [childs] => Array
                                    (
                                        [0] => 5920
                                    )
    
                                [grant] => 1
                                [selected] => 
                                [first] => 1
                                [last] => 1
                            )
    
                        [1] => stdClass Object
                            (
                                [mid] => mp1
                                [module_srl] => 5305
                                [category_srl] => 5920
                                [parent_srl] => 5919
                                [text] => 3차
                                [title] => 3차
                                [description] => 
                                [expand] => 
                                [color] => 
                                [document_count] => 0
                                [depth] => 2
                                [child_count] => 0
                                [childs] => Array
                                    (
                                    )
    
                                [grant] => 1
                                [selected] => 1
                                [first] => 1
                                [last] => 1
                            )
    
                    )
    
            )
    
        [5923] => stdClass Object
            (
                [mid] => mp1
                [module_srl] => 5305
                [category_srl] => 5923
                [parent_srl] => 0
                [text] => 남성의류
                [title] => 남성의류
                [description] => 
                [expand] => 
                [color] => 
                [document_count] => 0
                [depth] => 0
                [child_count] => 0
                [childs] => Array
                    (
                    )
    
                [grant] => 1
                [selected] => 
                [last] => 1
                [children] => Array
                    (
                    )
    
            )
    
    )

    자, 이제 본격적으로...

    '2차' 카테고리를 선택한 경우 

    상위 카테고리인 '여성의류'가 선택된 상태로 표시되어야 한다면 어떻게 해야할까요?!


    $category_list[$category_srl='5918']->expand=='1'

    <!--@if($category_list[$category_srl='5918']->expand=='1')-->O<!--@else-->X<!--@end-->


    일단 상위 카테고리인 '여성의류'의 category_srl 값이 필요합니다.

    위에서 찾아보니 상위카테고리인 여성의류의 category_srl은 5918 입니다.

    {var_dump($cate_list)}로 출력해보면 해당 category_srl의 expand 가 bool(true) bool(false)로 표시되는데, 

    확장된 상태(expand)가 '1'일 경우를 참이라고 합니다. ($category_list[$category_srl='5918']->expand=='1')


    {$category_list[$category]->parent_srl}

    5918이란 건 부모 카테고리를 의미하므로, 

    부모 카테고리값을 출력하는 코드를 넣어줍니다.

    <!--@if($category_list[$category_srl=$category_list[$category]->parent_srl]->expand=='1')-->O<!--@else-->X<!--@end-->

    '5918'이라는 숫자 대신 $category_list[$category]->parent_srl 을 넣어줍니다. if 함수 안에 있는 코드이므로 따로 '..' (작은따옴표)나 {..} (XE에서 변수를 출력하는 부분)을 지워주세요.


    자, 이제 본격적으로 이걸 잘 쓰기 위해서는...

    처음 마켓플레이스에 여성의류를 선택하면 이렇게 남성의류까지 다 같이 나옵니다. 

    1523408297144.jpg

    이걸 여성의류만 선택하면 여성의류 포함 하위 카테고리만 나타나고, 다시 하위 카테고리를 선택하면 그 하위 카테고리가 출력되는 작업을 해보겠습니다.

    갈 길이 머네요..

    그럼 이제 코드를 작성하러 다녀오겠습니다. 다음 기회에 또 봐요.


    P.S. PHP에 대한 지식이 얕아 잘못된 정보가 있을 수 있습니다. 

    잘못된 정보는 댓글 또는 메일(eond@eond.com)로 본 URL과 잘못된 내용을 알려주시면 감사하겠습니다. 


    참조글

    http://www.xeschool.com/xe/xenote_useful_variable_logged_info

    http://php.net/manual/kr/language.types.boolean.php

    XE DEBUG - 디버깅을 위한 기초함수

    http://www.xeschool.com/xe/index.php?mid=documents_for_debug&entry=%EB%94%94%EB%B2%84%EA%B9%85%EC%9D%84+%EC%9C%84%ED%95%9C+%EA%B8%B0%EC%B4%88%ED%95%A8%EC%88%98



    본 글은 마켓플레이스 모듈에서 상위 카테고리의 선택 여부를 구분하고자 할 때 사용하는 팁입니다. 조금 더 설명하자면 2차 메뉴가 여성의류이고, 3차 메뉴가 상의, 하의 등일 경우 3차를 선택했을 경우 2차 메뉴가 seleted 된 상태인지 여부를 구분하고자 할 때 사용 할 수 있습니다. 제가 삽질한 코드는 다음과 같습니다. -_-; 새벽 내내 수백번 고쳐적은 듯;; <pre> {print_... 더보기
  • 이미지
    2018-01-03
    글본문

    xml 쿼리 중 column 항목이 null일때 특정 값으로 치환 질문

    https://www.xpressengine.com/qna/23170917

    xe 애드온. xml query 로 db값 가져오기

    https://phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=388377

    db에서 data 불러오기 중에 문법 오류가 있나해서 조언을 구해봅니다.

    https://www.xpressengine.com/qna/23152495


    PHP로 DB 내용 긁어오기 질문드립니다.

    https://xetown.com/index.php?_filter=search&mid=qna&category=671910&search_keyword=query&search_target=title_content&division=-817127&last_division=-310836&document_srl=803652


    xml 쿼리 중 column 항목이 null일때 특정 값으로 치환 질문 https://www.xpressengine.com/qna/23170917 xe 애드온. xml query 로 db값 가져오기 https://phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=388377 db에서 data 불러오기 중에 문법 오류가 있나해서 조언을 구해봅니다. https://www.xpressengine.com/qna/23152495 PHP로 DB 내용 긁어오기 질... 더보기
  • 이미지
    2018-01-01
    글본문

    http://www.xpressengine.com/index.php?&mid=download&package_srl=18324360


    태그 위젯이 쌓이는 태그 만큼 가져 오는데.. 계속 노출 되는 것만 노출이 되네요.

    이걸 추가로 24시간 48시간. 등의 시간 단위내에 쌓인걸 가져오고 싶습니다.


    1.

    xe - widgets - tag_list - conf - info.xml 열고
    <var id="hours">
     <type>text</type>
     <name xml:lang="ko">시간범위</name>
     <description xml:lang="ko">단위는 시간(숫자만 입력).</description>
    </var>
    이것 추가

     

    2.
    xe - modules - tag - queries - getTagList.xml 열고
    line 7 쯤에
    <column name="tag" />
    <column name="T.regdate" />

    <column name="count(*)" alias="count" />
    여기서 붉은 색 추가......

     

    3.
    xe - widgets - tag_list - tag_list.class.php 열고
    line 19 쯤에
    $title = $args->title;
    이것 바로 아래에
    $hours = preg_match('/[^0-9]/', $args->hours)?'':$args->hours;
    이것 추가

     

    그리고
    line 65 쯤에
    foreach($output->data as $key => $val) {
    이것 바로 아래에
    if($hours&&$val->regdate<date('YmdHis', strtotime('-'.$hours.' hours'))) continue;

    이것 추가

     

    위젯 설정에서 시간을 입력하고 저장하면 됩니다.......

     

    https://www.xpressengine.com/qna/21017309

    http://www.xpressengine.com/index.php?&mid=download&package_srl=18324360 태그 위젯이 쌓이는 태그 만큼 가져 오는데.. 계속 노출 되는 것만 노출이 되네요. 이걸 추가로 24시간 48시간. 등의 시간 단위내에 쌓인걸 가져오고 싶습니다. 1. xe - widgets - tag_list - conf - info.xml 열고 <var id="hours"> <type>text</type> <name xml:lang="ko">시간범위</name> <descri... 더보기