LogoLogo
NHN커머스 메인고도몰 운영 도움말
  • 고도몰 튜닝 가이드
    • Intro
    • 이해하기
      • 용어
      • 구조
        • 튜닝 진행 방법
        • 튜닝 가능 범위
        • 고도몰 아키텍쳐(Architecture)
        • 코딩 규칙
        • 네이밍 규칙
    • 준비하기
      • 심화 구조 이해
        • Routing 소개
        • Controller 소개
        • HTTP 소개
        • Database 소개
        • Security 소개
        • Exception 소개
        • Language 소개
      • 오픈 API 사용가이드
        • 인증키 발급 방법 안내
        • 공급사 이용 방법 안내
    • 튜닝하기
      • 소스 코드 튜닝
        • 기본 튜닝 방법
        • 컨트롤러 튜닝 방법
        • 템플릿 튜닝 방법
        • 튜닝 시 유의사항
      • 데이터베이스 튜닝
        • 튜닝 방법
        • 튜닝 시 유의사항
        • 고도몰 테이블 명세서
        • PhpMyAdmin 이용
      • 디버깅 방법
      • 패치 확인 및 대응 방법
    • 튜닝 따라하기
      • 관리자 GNB 색상 변경하기
      • 즐겨찾기 메뉴 바로가기 만들기
      • 관리자 메뉴 추가하기
      • 관리자 메뉴 수정하기
      • 관리자 페이지 추가하기
      • 관리자 페이지 수정하기
      • 사용자 페이지 추가하기
      • 사용자 페이지 수정하기
    • 잘못된 튜닝사례
      • 상속 미준수
      • 메소드 관련
      • 그 외
  • 기타 개발 가이드
    • 로그 사용 가이드
    • [PMA] 내보내기(export) 이용 안내
    • 외부 스크립트 사용 가이드
    • SDK 사용 가이드
    • [DB] 사용 가이드
  • 튜닝가이드 영상 보기
Powered by GitBook
LogoLogo

NHN COMMERCE

  • 공지사항
  • 회사소개

Partners

  • 서비스 제휴문의
  • 셀러어드민
  • 디자인 파트너

Developers

  • 스토어

©NHN COMMERCE Corp. All rights reserved.

On this page
  • 📌 Controller 제공 절대상수
  • 📌 Controller 제공 메소드
  • download
  • json
  • streamedDownload
  • redirect
  • alert
  • js
  • layer
  • layerNotReload
  • addMeta
  • addCss
  • addScript
  • callMenu
  • 📌 사용자 정의 Controller 기본 메소드
  • 📌 전역으로 사용할 수 있는 사용자 정의 Controller
  • 📌 Api 사용자 정의 Controller

Was this helpful?

  1. 고도몰 튜닝 가이드
  2. 튜닝하기
  3. 소스 코드 튜닝

컨트롤러 튜닝 방법

개발 가이드를 준수하지 않아 발생하는 모든 문제는 전적으로 이용자에게 책임이 있습니다!

📌 Controller 제공 절대상수

상수 이름
상수 설명

PATH_DATA

데이터 폴더의 경로 /data/

PATH_ADMIN_SKIN

관리자 스킨의 경로 /admin/

PATH_ADMIN_GD_SHARE

관리자 공통 리소스 경로 /admin/gd_share/

PATH_SKIN

프론트에 적용된 라이브 스킨의 경로 /data/skin/front/[스킨명]/

PATH_SKIN_WORK

프론트에 적용된 작업 스킨의 경로 /data/skin/front/[스킨명]/

PATH_MOBILE_SKIN

모바일에 적용된 라이브 스킨의 경로 /data/skin/front/[스킨명]/

PATH_MOBILE_SKIN_WORK

모바일에 적용된 작업 스킨의 경로 /data/skin/front/[스킨명]/

USERPATH_SKIN

/data/skin/front/[스킨명]/

USERPATH_SKIN_ADMIN

/admin/

USERPATH_SKIN_MOBILE

/data/skin/mobile/[스킨명]/

URI_HOME

현재 도메인 링크 http://example.godomall.com/

URI_SHARE

현재 도메인의 share 링크 http://example.godomall.com/share/

URI_ADMIN

관리자 도메인 http://gdadmin.example.godomall.com/

URI_PROVIDER

공급사 관리자 도메인 http://gdadmin.example.godomall.com/provider/

URI_MOBILE

모바일 도메인 http://m.example.godomall.com/

URI_API

API 도메인 http://api.example.godomall.com/

📌 Controller 제공 메소드

download

download($path, $newFile)
  • $path의 파일을 $newFile이라는 이름으로 다운로드를 실시합니다.

json

json($data)
  • $data가 비어있는 경우 Controller 내 data 를 json으로 변경하고 $data가 있는 경우 json을 출력하고 exit 처리됩니다.

streamedDownload

streamedDownload($path)
  • $path로 index()에 출력하는 모든 버퍼를 파일로 저장합니다.

redirect

redirect($uri, $title = null, $target = 'self')
  • 페이지를 특정 URI로 이동시킵니다. 일반적으로 동일한 프레임에서 작동하며 iframe이 타겟인 경우는 사용하시면 안됩니다.

alert

alert($message, $history = null, $url = null, $target = null, $addScript = null)
  • Alert 창을 출력하며 출력 후 exit 처리됩니다.

js

js($script)
  • $script 텍스트로 사용자 정의 스크립트를 작성하실 수 있습니다.

layer

layer($message = null, $addScript = null, $timeOut = 3000)
  • 관리자 컨트롤러에서만 사용할 수 있습니다.

  • 레이어를 출력할 수 있으며, 레이어 출력이후 레이어를 닫으면 페이지가 새로고침 됩니다.

layerNotReload

layerNotReload($message = null, $addScript = null, $timeOut = 2000)
  • 관리자 컨트롤러에서만 사용할 수 있습니다.

  • 레이어를 출력할 수 있으며, 레이어 출력이후 레이어를 닫아도 페이지가 새로고침 되지 않습니다.

addMeta

addMeta(array $metaTags)
  • 스킨의 헤더에 메타태그를 추가할 수 있습니다.

  • front와 mobile에서만 사용가능하며 admin에서는 사용할 수 없습니다.

addCss

addCss(array $styles, $isShare = false)
  • 스타일시트의 경로를 배열로 받아서 스킨 상단에 출력합니다.

  • $isShare를 true로 하는 경우 /data/assets에 있는 공유 리소스를 사용하실 수 있습니다.

addScript

addScript(array $scripts, $isShare = false, $isFooter = false)
  • 스크립트의 경로를 Array로 받아서 스킨 상/하단에 출력합니다. (ex. ['common.js', 'common2.js'])

    • 경로는 /data/[skin path]/js에 있는 공유 리소스를 사용하실 수 있습니다.

  • $isShare를 true로 하는 경우 /data/assets에 있는 공유 리소스를 사용하실 수 있습니다.

  • $isFooter를

    • true로 하는 경우 스킨내 {footerScript} 치환코드로 반환합니다.

    • false인 경우 스킨내 {headerScript} 치환코드로 반환합니다.

callMenu

callMenu($topMenu, $midMenu, $thisMenu)
  • 관리자 메뉴 데이터를 생성합니다.

  • 관리자 메뉴를 새로 추가할 경우, 추가할 메뉴 페이지에 해당되는 컨트롤러 내에서 해당 함수를 호출합니다.

  • es_adminMenu 테이블에 추가할 메뉴 데이터를 insert한 후에 1차 메뉴($topMenu), 2차 메뉴($midMenu), 3차 메뉴($thisMenu) 파라미터 대로 메소드를 호출합니다.

📌 사용자 정의 Controller 기본 메소드

  • 고도몰에서는 기본적으로 3개의 사용자 정의 Method를 제공합니다.

  • Method 종류

    1. pre()

      • 시스템 전 처리기 interceptor의 실행 직전에 실행됩니다.

    2. index()

      • 사용자가 처리할 내용을 작성할 수 있습니다.

    3. post()

      • 시스템 후 처리기 interceptor의 실행 직후에 실행됩니다.

  • 실제 코드 확인하시고 아래와 같이 사용하시면 됩니다.

<?php
namespace Controller\Front\Test

class MyController extends \Controller\Front\Controller
{
    public function pre()
    {
        // interceptor 실행 이전 실행할 로직 구현
    }
    
    public function index()
    {
        // 사용자 정의 로직 구현
    }
    
    public function post()
    {
        // interceptor 실행 이후 실행할 로직 구현
    }
}

📌 전역으로 사용할 수 있는 사용자 정의 Controller

  • 모든 페이지에 공통으로 적용할 수 있는 사용자 정의 컨트롤러를 생성할 수 있습니다.

  • 프론트는 module\Controller\Front 경로에 CommonController 클래스를 생성해 주신 후 아래와 같이 사용하시면 됩니다.

<?php
namespace Controller\Front;

/**
 * 사용자들이 모든 컨트롤러에 공통으로 사용할 수 있는 컨트롤러 Class
 * 컨트롤러에서 지원하는 메소드들을 사용할 수 있습니다.
 */
class CommonController
{
    public function index($controller)
    {
        /**
         * IP를 추가합니다.
         * 스킨에서 {=remoteAddr} 치환코드로 사용 가능합니다.
         */ 
        $controller->setData('remoteAddr',\Request::server()->get('REMOTE_ADDR'));
        
        /**
         * 새 변수를 추가합니다.
         * 스킨에서 {=userName} 치환코드로 사용 가능합니다.
         */
        $controller->setData('userName', '사용자 이름');
    }
}
  • 모바일은 module\Controller\Mobile 경로에 CommonController 클래스를 생성해 주신 후 아래와 같이 사용하시면 됩니다.

<?php
namespace Controller\Mobile;

/**
 * 사용자들이 모든 컨트롤러에 공통으로 사용할 수 있는 컨트롤러 Class
 * 컨트롤러에서 지원하는 메소드들을 사용할 수 있습니다.
 */
class CommonController
{
    public function index($controller)
    {
        /**
         * IP를 추가합니다.
         * 스킨에서 {=remoteAddr} 치환코드로 사용 가능합니다.
         */ 
        $controller->setData('remoteAddr',\Request::server()->get('REMOTE_ADDR'));
        
        /**
         * 새 변수를 추가합니다.
         * 스킨에서 {=userName} 치환코드로 사용 가능합니다.
         */
        $controller->setData('userName', '사용자 이름');
    }
}

📌 Api 사용자 정의 Controller

  • Api 통신이 가능한 사용자 정의 컨트롤러를 생성할 수 있습니다.

  • module/Controller/Api 경로에서 사용하시면 됩니다. 만약 디렉토리가 없다면 생성하고 chmod 707 변경 필수

  • Front/Mobile 튜닝과 동일한 방법으로 Controller 생성

  • 생성 예시

    • 경로: module/Controller/Api/Load/GetApiController.php

    • 링크: api.{상점도메인}/load/get_api

<?php
namespace Controller\Api\Load;

class GetApiController extends \Controller\Api\Controller
{
    public function index()
    {
        // some code ...
    }
}
Previous기본 튜닝 방법Next템플릿 튜닝 방법

Last updated 22 days ago

Was this helpful?