AI Skill Ready · Cafe24 Smart Design

카페24 스마트디자인 전체 레퍼런스

AI 에이전트가 카페24 스킨을 더 정확하게 작성하도록 돕는 모듈, 변수, 수정자, 실전 패턴 가이드입니다.

바로 검색하기 업데이트 보기 공개 페이지
89Modules
194Variables
13Modifiers
JSONRegistry Ready

이번에 추가된 것

새로 추가된 공개 문서 중 바로 참고할 만한 것만 추려 상단에 배치했습니다. 아직 검증이 끝나지 않은 실험성 항목은 노출하지 않았습니다.

공식 디자인 문서 맵개발자센터 Design 문서군을 제작/운영/컴포넌트 기준으로 분류합니다. 열기
스킨 제작 실제 흐름구상, 편집, 로컬 확인, Cafe24 preview, 상품화 단계를 한 번에 봅니다. 열기
AI 안전 규칙module, {$...}, action/form 변수, ec-base-* 보존 체크리스트입니다. 열기
URL/템플릿 모달샘플 URL을 누르면 수정 후보 파일, 관련 모듈, 위험 포인트를 모달로 확인합니다. 열기

빠른 찾기

긴 문서를 스크롤하지 말고 모듈, 변수, 수정자를 바로 검색하세요.

K 또는 /

결과 카드를 누르면 원문 표 위치로 이동합니다. 변수 표의 세부 검색은 아래 “변수 전체” 섹션에서도 사용할 수 있습니다.

AI/GEO 요약

이 페이지가 답하는 질문

  • 카페24 스마트디자인에서 module, {$...} 변수, modifier를 어떻게 안전하게 써야 하는가?
  • 상품·주문·회원·게시판 URL은 어떤 스킨 파일과 모듈 후보로 연결되는가?
  • AI 코딩 에이전트가 카페24 스킨을 수정할 때 보존해야 할 action, form 변수, ec-base-* 규칙은 무엇인가?

기계가 읽기 좋은 진입점

검색엔진, AI 검색, 에이전트가 핵심 범위와 데이터 원본을 빠르게 파악할 수 있도록 별도 파일과 구조화 데이터를 제공합니다.

1. 개요

스마트디자인은 HTML 기본 지식만으로 쇼핑몰을 자유롭게 편집할 수 있는 카페24의 디자인 관리 도구입니다.

핵심 개념 두 가지:

모듈(Module) — 콘텐츠+기능의 묶음. 프로그램의 최소 단위.
<div module="모듈아이디"> ... </div>
변수(Variable) — 어드민 설정값이 자동 반영되는 동적 데이터.
{$변수명} 형태로 사용

문서 구성

2. 스킨 폴더 구조

/design/skin/스킨명/ ├── layout/ │ ├── layout.html ← 공통 레이아웃 (헤더·푸터·네비) │ └── index.html ← 메인 페이지 ├── product/ │ ├── list.html ← 상품 목록(카테고리) │ └── detail.html ← 상품 상세 ├── order/ │ ├── basket.html ← 장바구니 │ ├── orderform.html ← 주문서 작성 │ └── orderresult.html ← 주문 완료 ├── member/ │ ├── login.html ← 로그인 │ ├── join.html ← 회원가입 │ └── modify.html ← 정보수정 ├── board/ │ ├── list.html ← 게시판 목록 │ └── detail.html ← 게시판 상세 ├── myshop/ │ └── myshop.html ← 마이쇼핑 ├── css/ │ └── style.css └── js/ └── script.js

3. 기본 문법

모듈 선언

<div module="모듈아이디">
  <!-- HTML + {$변수} -->
</div>

주석 옵션 (Comment Options)

<div module="product_listrecommend">
  <!--
  $fixed = top
  $count = 15
  $only_html = no
  -->
  ...모듈 내용...
</div>
옵션설명우선순위
$count반복 출력 횟수숫자2
$only_htmlHTML 항목 수만큼만 반복yes / no1 (최우선)
$fixed고정 위치top 등-
주의: 주석 옵션은 반드시 줄바꿈을 포함해야 동작합니다. 한 줄로 작성하면 인식 안 됨.

4. 레이아웃 모듈

모든 페이지에 공통으로 사용되는 모듈입니다. layout.html에 배치합니다.

모듈 아이디설명주요 변수
Layout_LogoTop 쇼핑몰 로고 (상단형) {$mall_name}, {$mobile_title}
Layout_category 전체 상품 분류 (카테고리 메뉴) {$name_or_img_tag}, {$link_product_list}, {$param_cate_no}
Layout_SearchHeader 상품 검색 (상단형) {$form.search}, {$action_search}
Layout_statelogon 로그인 후 상태 표시 {$name}, {$basket_cnt}
Layout_statelogoff 로그아웃 상태 표시 -
Layout_shoppingInfo 장바구니·적립금·위시리스트 정보 {$basket_cnt}, {$mylikeprd_total_cnt}, {$interest_prd_cnt}
Layout_orderBasketcount 장바구니 상품 수량 카운트 {$basket_cnt}
Layout_MobileAction 모바일 이전 화면 이동 {$go_back}

레이아웃 모듈 사용 예시

<!-- 로고 -->
<h1 module="Layout_LogoTop">
  <a href="/">{$mall_name}</a>
</h1>

<!-- 카테고리 메뉴 -->
<nav module="Layout_category">
  <ul>
    <li><a href="{$link_product_list}">{$name_or_img_tag}</a></li>
  </ul>
</nav>

<!-- 로그인 상태 분기 -->
<div module="Layout_statelogon">
  환영합니다, {$name}님! | <a href="/exec/front/Member/logout/">로그아웃</a>
</div>
<div module="Layout_statelogoff">
  <a href="/member/login.html">로그인</a> | <a href="/member/join.html">회원가입</a>
</div>

<!-- 검색 -->
<div module="Layout_SearchHeader">
  <input type="text" name="search" value="{$form.search}">
  <button onclick="{$action_search}">검색</button>
</div>

5. 상품 모듈

5-1. 메인 페이지 상품 목록

모듈 아이디설명비고
product_listmain_1메인 추천상품 목록번호는 관리자의 분류 순서에 따라 자동 생성. 5번 이상도 가능.
product_listmain_2메인 신상품 목록
product_listmain_3메인 추가 카테고리 1
product_listmain_4메인 추가 카테고리 2
product_listmain_5추가분류관리(진열순서1)

5-2. 카테고리/목록 페이지

모듈 아이디설명
product_headcategory카테고리 경로 (breadcrumb) + 카테고리 타이틀/배너
product_displaycategory중분류·소분류·상세분류 메뉴
product_children카테고리 하위메뉴
product_listrecommend카테고리별 추천 상품 목록
product_listnew카테고리별 신상품 목록
product_listnormal일반 상품 목록 (나열)
product_ListItem상품 목록 표시항목 (공통 아이템)
product_normalmenu상품 정렬·검색·비교 기능
product_normalpaging상품 목록 페이지네이션
product_FirstSelect조건별 검색 첫번째 선택
product_SecondSelect조건별 검색 두번째 선택
product_Colorchip컬러칩 미리보기
product_Orderby상품 정렬 기능

5-3. 상품 상세 페이지

모듈 아이디설명
product_detail상품 주요 정보 (이름, 가격, 배송 등) + 구매 기능
product_image상품 이미지 + 확대보기
Product_mobileImage모바일 상품 이미지
product_addimage추가 상품 이미지 목록 (썸네일)
product_Colorchip색상 옵션 칩
product_option기본 상품 옵션 (색상, 사이즈 등)
product_addoption추가 입력 옵션
product_fileoption파일 업로드 옵션
product_noneoption옵션 없는 상품 수량 선택
product_action구매·장바구니·관심상품 버튼
product_setproduct세트 상품 표시
product_addproduct추가구성 상품 표시
product_additional상품 추가 정보
product_detaildesign상품 상세정보 (에디터 내용)
product_relation관련 상품 영역
product_relationlist관련 상품 목록
product_review상품 리뷰 목록
product_reviewpaging리뷰 페이지네이션
product_qna상품 Q&A 목록
product_qnapagingQ&A 페이지네이션
coupon_productdetail상품 상세 쿠폰 표시
myshop_benefit회원 할인/적립 정보

6. 주문 / 장바구니 모듈

6-1. 장바구니 (basket)

모듈 아이디설명
Order_TabInfo국내/해외 상품 탭
Order_Empty장바구니 비어있음 안내
Order_EmptyItem장바구니 상품 정보
Order_BasketOption할인금액 정보
Order_NormTitle일반상품 제목
Order_NormNormal일반상품 (기본배송)
Order_list상품 목록
Order_optionAll모든 옵션
Order_optionList옵션 목록
Order_optionAddList추가옵션 목록
Order_SuppNormal일반상품 (업체기본배송)
Order_NormIndividual일반상품 (개별배송)
Order_NormOverseaTitle해외배송 상품 제목
Order_NormOversea일반상품 (해외배송)
Order_InstTitle무이자할부 상품 제목
Order_InstNormal무이자 상품 (기본배송)

6-2. 주문서 작성 (orderform)

모듈 아이디설명
Order_form주문서 메인 모듈
Order_normallist기본배송 상품 목록
Order_optionSet상품 옵션 설정
Order_individuallist개별배송 상품 목록
Order_oversealist해외배송 상품 목록
Order_DeliveryList배송지 선택 목록
Order_ordadd추가 정보 입력

7. 회원 모듈

모듈 아이디설명주요 변수
member_login 로그인 폼 (전체 화면형) {$form.member_id}, {$form.member_passwd}, {$action_func_login}, {$returnUrl}
member_join 회원가입 폼 {$form.member_id}, {$form.passwd}, {$form.name}, {$form.email}, {$action_func_join}
member_modify 회원정보 수정 회원가입과 유사한 변수 세트
member_find 아이디/비밀번호 찾기 {$form.name}, {$form.email}
MyShop_OrderHistoryNologin 비회원 주문 조회 {$form.order_name}, {$form.order_id}, {$form.order_password}
회원가입 (member_join) 상세 변수 목록
분류변수
기본 인증{$form.member_id}, {$form.passwd}, {$form.user_passwd_confirm}, {$form.hint}, {$form.hint_answer}
개인정보{$form.name}, {$form.name_en}, {$form.email}, {$form.is_news_mail}
연락처{$form.phone}, {$form.mobile}, {$form.is_sms}
주소{$form.postcode1}, {$form.postcode2}, {$form.addr1}, {$form.addr2}
추가정보{$form.nick_name}, {$form.is_sex}, {$form.birth_year}, {$form.birth_month}, {$form.birth_day}
직업/기타{$form.job_class}, {$form.job}, {$form.earning}, {$form.region}, {$form.reco_id}
환불계좌{$form.bank_account_owner}, {$form.refund_bank_code}, {$form.bank_account_no}
본인인증{$action_ipin_open}, {$action_mobile_open}, {$action_check_id}, {$action_find_address}
사업자{$form.member_type}, {$form.company_type}, {$form.bname}, {$form.bssn1}, {$form.bssn2}, {$form.cname}, {$form.cssn}
외국인{$form.foreigner_name}, {$form.foreigner_type}, {$form.foreigner_ssn}, {$form.citizenship}

8. 게시판 모듈

게시판 모듈의 번호(_1002 등)는 게시판 번호에 따라 변경됩니다.

모듈 아이디설명
board_title_{no}게시판 제목/정보
board_category게시판 카테고리 분류
board_ReplySort댓글 정렬
board_listheader_{no}목록 헤더 (제목, 작성자, 날짜 등 컬럼)
board_notice_{no}공지사항 목록
board_fixed_{no}고정 게시글
board_list_{no}일반 게시글 목록
board_ButtonList_{no}글쓰기 버튼 등
board_paging_{no}페이지네이션
board_catemove_{no}카테고리/게시판 이동
board_function_{no}게시판 기능 (이동, 복사 등)
board_search_{no}게시판 검색
board_listpackage_5자유게시판 패키지
board_listpackage_6상품 Q&A 패키지

9. 변수 전체 목록

검색어를 입력하면 변수 테이블이 즉시 필터링됩니다.

9-1. 상품 기본정보

변수설명사용 위치
{$product_no}상품 번호목록, 상세
{$product_name}상품명목록, 상세
{$product_name_title}상품명 (title 속성용)목록
{$product_name_title_display}상품명 title 표시 여부목록
{$name}상품명 (상세 페이지)상세
{$product_code}상품 코드상세
{$product_custom}사용자 정의 상품 정보상세
{$param}상품 파라미터 (링크용)목록
{$link_product_detail}상품 상세 페이지 링크목록
{$link_product_list}카테고리 상품 목록 링크카테고리

9-2. 상품 가격

변수설명사용 위치
{$product_price}상품 가격 (정가)목록, 상세
{$product_sale_price}판매가 (할인가)목록, 상세
{$product_price_mobile}모바일 상품 가격모바일 상세
{$mobile_dc_price}모바일 할인가모바일 상세
{$mileage_value}적립금상세
{$dc_price}회원 할인가상세
{$dc_min_price}최소 할인가상세
{$display_product_sale_price}판매가 표시 여부장바구니

9-3. 상품 이미지

변수설명주요 사용처
{$image_big}대표 이미지 (큰 사이즈)상품 상세
{$big_img}상세 페이지 대표 이미지상품 상세
{$image_medium}목록 이미지 (가장 많이 사용)상품 목록
{$image_small}축소 이미지 (썸네일)상세 하단
{$image_tiny}작은 목록 이미지최근 본 상품
{$zoom_param}이미지 확대 파라미터상세
{$top_image1_tag}카테고리 상단 이미지 1목록
{$top_image2_tag}카테고리 상단 이미지 2목록
{$top_image3_tag}카테고리 상단 이미지 3목록

9-4. 상품 상태/아이콘

변수설명
{$soldout_icon}품절 아이콘
{$recommend_icon}추천 아이콘
{$new_icon}신상품 아이콘
{$sale_icon}세일 아이콘
{$product_icons}상품 아이콘 모음
{$option_preview_icon}옵션 미리보기 아이콘
{$basket_icon}장바구니 아이콘
{$zoom_icon}확대 아이콘
{$delvtype_display}배송 타입 표시

9-5. 상품 옵션

변수설명
{$option_name}옵션명 (색상, 사이즈 등)
{$option_value}옵션 값
{$option_maxlength}옵션 최대 글자수
{$add_option_name}추가 옵션명
{$file_option_name}파일 옵션명
{$form.option}기본 옵션 폼
{$form.add_option}추가 옵션 폼
{$form.option_value}옵션 값 폼
{$quantity}수량
{$color}컬러칩 색상값
{$option_str}옵션 문자열

9-6. 상품 상세정보 / 배송

변수설명
{$product_detail}상품 상세 설명
{$item_display}항목 표시 여부
{$item_title}항목 제목
{$item_title_display}항목 제목 표시 여부
{$item_content}항목 내용
{$supply_info}공급사 정보
{$payment_info}결제 안내
{$shipping_method}배송 방법
{$shipping_area}배송 지역
{$shipping}배송비
{$delivery}배송 정보
{$delivery_price}배송비

9-7. 상품 액션 (구매/장바구니)

변수설명
{$action_buy}바로 구매
{$action_basket}장바구니 담기
{$action_wishlist}위시리스트 추가
{$action_recommend}추천하기

9-8. 카테고리

변수설명
{$category_name}카테고리명
{$category_title_text}카테고리 타이틀 텍스트
{$category_title_text_display}타이틀 텍스트 표시 여부
{$category_title_img}카테고리 타이틀 이미지
{$category_title_img_display}타이틀 이미지 표시 여부
{$title_text_or_image}텍스트 또는 이미지 타이틀
{$name_or_img_tag}카테고리 이름 또는 이미지
{$product_count}카테고리 내 상품 수
{$product_count_display}상품 수 표시 여부
{$children_icon}하위카테고리 아이콘
{$disp_cate_1} ~ {$disp_cate_4}카테고리 depth 1~4 표시
{$name_1} ~ {$name_4}카테고리 depth 1~4 이름
{$param_1} ~ {$param_4}카테고리 depth 1~4 파라미터
{$param_cate_no}카테고리 번호 파라미터

9-9. 정렬 / 페이지네이션

변수설명
{$total_count}전체 상품 수
{$param_first}첫 페이지 링크
{$param_before}이전 페이지 링크
{$param_next}다음 페이지 링크
{$param_last}마지막 페이지 링크
{$param_class}현재 페이지 클래스
{$no}페이지 번호
{$param_num}페이지 번호 파라미터
{$selected}선택 상태
{$value}옵션 값
{$title}옵션 타이틀

9-10. 쇼핑 정보

변수설명
{$basket_cnt}장바구니 상품 수
{$mylikeprd_total_cnt}좋아요 상품 수
{$interest_prd_cnt}위시리스트 상품 수
{$mall_name}쇼핑몰 이름
{$mobile_title}모바일 타이틀

9-11. 장바구니 변수

변수설명
{$basket_count}장바구니 상품 수
{$item_total}상품 합계
{$img}상품 이미지
{$product_name}상품명
{$product_sale_price}판매가
{$form.quantity}수량 입력
{$option_str}옵션 문자열
{$mileage}적립금
{$discount}할인금액
{$delv_price_front}배송비 (기본화폐)
{$delv_price_back}배송비 (보조화폐)
{$delv_type}배송 유형
{$sum_price_front}합계 (기본화폐)
{$sum_price_back}합계 (보조화폐)
{$total_product_price}전체 상품 금액
{$total_option_price}전체 옵션 금액
{$total_delv_price}전체 배송비
{$total_sum_price_front}총 합계 (기본화폐)
{$total_sum_price_back}총 합계 (보조화폐)
{$action_modify}수정 액션
{$action_option_change}옵션 변경
{$action_wish_item}위시리스트 이동
{$action_buy_item}선택 상품 구매

9-12. 주문서 변수

변수설명
{$product_image}상품 이미지
{$product_name}상품명
{$product_price_front}상품 가격
{$product_quantity_text}수량 텍스트
{$product_total_price_front}상품 합계
{$form.oname}주문자 이름
{$form.ozipcode1}주문자 우편번호
{$form.oaddr1}주문자 주소
{$form.ophone1_}주문자 전화번호
{$form.oemail}주문자 이메일
{$form.rname}수령자 이름
{$form.rzipcode1}수령자 우편번호
{$form.raddr1}수령자 주소
{$total_price}총 결제 금액
{$total_order_price_front}총 주문 금액
{$coupon_cnt}사용 가능 쿠폰 수
{$total_avail_mileage}사용 가능 적립금
{$total_deposit}사용 가능 예치금
{$addr_paymethod}결제 수단
{$pname}은행명
{$bankaccount}계좌번호
{$item_count}상품 수
{$price_unit_head}화폐 단위
{$mileage_name}적립금 명칭

9-13. 회원 정보

변수설명
{$member_name}회원 이름
{$group_name}회원 등급명
{$member_login_module_id}로그인 모듈 ID
{$member_login_tab_display}로그인 탭 표시
{$form.member_id}회원 아이디 입력
{$form.member_passwd}비밀번호 입력
{$form.use_login_keeping}로그인 유지
{$form.check_save_id}아이디 저장
{$action_func_login}로그인 액션
{$returnUrl}로그인 후 리턴 URL
{$display_nomember}비회원 주문 표시 여부
{$action_nomember_order}비회원 주문 액션

9-14. 게시판 변수

변수설명
{$board_name}게시판명
{$board_title}게시판 제목
{$board_info}게시판 정보
{$board_adult_icon}성인 인증 아이콘
{$board_top_image}게시판 상단 이미지
{$subject}게시글 제목
{$content}게시글 내용
{$writer}작성자
{$write_date}작성일
{$hit_count}조회수
{$vote}추천수
{$point_count}포인트
{$comment_count}댓글 수
{$no}게시글 번호
{$notice_icon}공지 아이콘
{$fixed_icon}고정글 아이콘
{$icon_re}답글 아이콘
{$icon_new}NEW 아이콘
{$icon_hit}인기글 아이콘
{$icon_file}첨부파일 아이콘
{$icon_lock}비밀글 아이콘
{$member_icon}회원 아이콘
{$category_name}카테고리명
{$list_bg_color}목록 배경색
{$list_char_color}목록 글자색
{$link_color}링크 색상
{$checkbox}체크박스
{$param_read}게시글 읽기 파라미터
{$param_write}글쓰기 파라미터
{$param_prev}이전 페이지
{$param_next}다음 페이지
{$form.board_category}카테고리 선택 폼
{$form.search_key}검색 키워드 폼
{$form.search}검색어 폼
{$form.search_date}검색 날짜 폼
{$action_search}검색 액션
{$action_category_move}카테고리 이동 액션
{$action_article_move}게시글 이동 액션
{$action_article_copy}게시글 복사 액션
{$reply_sort}댓글 정렬

9-15. config 조건 변수 (display 용)

변수설명
{$config.is_category|display}카테고리 사용 여부
{$config.use_date|display}날짜 표시 여부
{$config.use_cnt|display}조회수 표시 여부
{$config.is_use_recom|display}추천 사용 여부
{$config.is_use_point|display}포인트 사용 여부
{$write_display|display}글쓰기 버튼 표시
{$category_display|display}카테고리 컬럼 표시
{$date_display|display}날짜 컬럼 표시
{$hit_display|display}조회수 컬럼 표시
{$vote_display|display}추천 컬럼 표시
{$point_display|display}포인트 컬럼 표시

10. 모디파이어 13종

변수에 |(파이프)로 연결하여 데이터를 변환합니다. 형식: {$변수명|모디파이어:파라미터}

#이름목적문법실전 예시
1cut문자열 자르기{$v|cut:글자수,표현}{$product_name|cut:20,...}
2numberformat천단위 구분{$v|numberformat}{$product_price|numberformat}
3date날짜 포맷{$v|date:Y-m-d}{$write_date|date:Y.m.d}
4displayfalse → display:none{$v|display}class="{$soldout_icon|display}"
5cover문자열 감싸기{$v|cover:앞,뒤}{$subject|cover:【,】}
6replace문자열 치환{$v|replace:찾기,바꾸기}{$notice_icon|replace:공지,NOTICE}
7strconv문자열 변환{$v|strconv:변경문자}{$new_icon|strconv:NEW}
8imgconv이미지 태그 변환{$v|imgconv:이미지경로}{$name_or_img_tag|imgconv:'/img/a.png'}
9nl2br줄바꿈 → <br>{$v|nl2br}{$content|nl2br}
10striptagHTML 태그 제거{$v|striptag}{$content|striptag}
11timetodate타임스탬프→날짜{$v|timetodate:Y-m-d}{$write_date|timetodate:Y-m-d}
12lower소문자 변환{$v|lower}{$category_name|lower}
13upper대문자 변환{$v|upper}{$category_name|upper}

11. 조건문 & 반복문

조건부 표시

방법 1: display 모디파이어

<!-- 값이 false일 때 display:none -->
<span class="{$soldout_icon|display}">
  품절
</span>

<!-- config 조건 -->
<th class="{$config.use_date|display}">
  날짜
</th>

방법 2: 로그인 상태 모듈

<!-- 로그인 시에만 -->
<div module="Layout_statelogon">
  환영합니다, {$name}님!
</div>

<!-- 비로그인 시에만 -->
<div module="Layout_statelogoff">
  <a href="/member/login.html">
    로그인
  </a>
</div>

반복문

$count 반복

<ul module="product_listnormal">
  <!-- $count = 5 -->
  <li>{$product_name}</li>
</ul>
<!-- li가 5번 반복 -->

$only_html 반복

<ul module="Module_Action">
  <!--
  $count = 5
  $only_html = yes
  -->
  <li>{$title}</li>
  <li>{$title}</li>
  <li>{$title}</li>
</ul>
<!-- HTML 항목 수(3개)만큼만 반복 -->
반복 원리:
동일 항목: $count=5 → 5개 생성
다른 항목 3개 + $count=5 → 마지막 항목이 반복되어 총 5개

12. 파일 포함 & 리소스 로드

유형카페24 전용 문법일반 HTML
레이아웃 지정 <!--@layout(/layout/basic/product.html)--> -
파일 포함 <!--@import(/layout/basic/header.html)--> -
CSS <!--@css(/css/style.css)--> <link rel="stylesheet" href="/design/skin/스킨명/css/style.css">
JS <!--@js(/js/script.js)--> <script src="/design/skin/스킨명/js/script.js"></script>
캐시 해결: <!--@css(/css/style.css?ver=20260305)--> 또는 Ctrl+F5

13. 실전 코드 패턴

아래 패턴은 단순 예제가 아니라 실제 스킨 수정 전에 AI나 작업자가 먼저 확인해야 하는 단위입니다. 모듈 범위, 반복 영역, display 클래스, 옵션 주석을 같이 넣어야 다른 페이지로 영향이 새는 일을 줄일 수 있습니다.

LIST 상품 리스트 카드 - 배지와 품절 상태까지 함께 처리

언제 쓰나 메인 추천상품, 카테고리 상품목록, 기획전 카드 UI를 만들 때
확인 포인트 $count, 이미지 변수, 판매가 변수, |display 처리
<div module="product_listmain_1" class="product-grid">
  <!-- $count = 8 -->
  <h2>{$category_title_text}</h2>
  <ul class="items">
    <li class="product-card" data-product-no="{$product_no}">
      <a href="{$link_product_detail}">
        <div class="thumb">
          <img src="{$image_medium}" alt="{$product_name}" loading="lazy">
          <span class="badge-new {$new_icon|display}">NEW</span>
          <span class="badge-soldout {$soldout_icon|display}">SOLD OUT</span>
        </div>
        <strong class="name">{$product_name|cut:32,...}</strong>
        <span class="price">{$product_sale_price|numberformat}원</span>
      </a>
    </li>
  </ul>
</div>
실전 팁: 리스트 계열 모듈은 같은 마크업이 반복됩니다. AI에게 수정시킬 때는 “첫 번째 카드만”이 아니라 “반복되는 <li> 안에서만 바꿔라”라고 범위를 고정하세요.

DETAIL 상품 상세 - 옵션/수량/구매 액션 분리

언제 쓰나 상세 페이지에서 가격, 옵션, 장바구니/구매 버튼 영역을 재배치할 때
확인 포인트 product_detail, product_option, product_action을 섞지 않기
<section class="detail-layout">
  <div module="product_image" class="detail-media">
    <img src="{$big_img}" alt="{$name}">
  </div>

  <div class="detail-info">
    <div module="product_detail">
      <p class="path">{$cate_name}</p>
      <h1>{$name}</h1>
      <p class="summary {$summary_desc|display}">{$summary_desc}</p>
      <p class="price">{$product_sale_price|numberformat}원</p>
      <p class="delivery">배송비: {$delivery}</p>
    </div>

    <div module="product_option" class="option-box">
      <!-- 옵션 UI는 카페24가 생성하는 form 구조를 유지 -->
      {$form.option}
    </div>

    <div module="product_action" class="action-row">
      <button type="button" onclick="{$action_basket}">장바구니</button>
      <button type="button" onclick="{$action_buy}">바로구매</button>
      <button type="button" onclick="{$action_wishlist}">관심상품</button>
    </div>
  </div>
</section>
주의: 옵션 영역은 단순 HTML이 아니라 카페24가 주문 로직과 연결합니다. 디자인을 바꿀 때 {$form.option}, {$action_buy} 같은 액션 변수는 임의로 지우지 마세요.

BOARD 게시판 목록 - 표시 옵션과 빈 상태까지 같이 설계

언제 쓰나 공지사항, FAQ, 후기 게시판 목록을 커스텀할 때
확인 포인트 게시판 번호, 카테고리 표시 여부, 날짜/조회수 표시 class
<div module="board_title_1002" class="board-head">
  <h1>{$board_name}</h1>
  <p class="{$board_info|display}">{$board_info}</p>
</div>

<table module="board_list_1002" class="board-table">
  <!-- $count = 20 -->
  <tr>
    <td class="no">{$no}</td>
    <td class="category {$category_display|display}">{$category_name}</td>
    <td class="subject">
      <a href="{$param_read}" style="color:{$link_color}">
        {$subject} {$icon_new} {$icon_hit} {$icon_file}
      </a>
      <span class="comment {$comment_count|display}">[{$comment_count}]</span>
    </td>
    <td class="writer">{$writer}</td>
    <td class="date {$date_display|display}">{$write_date|date:Y.m.d}</td>
  </tr>
</table>

<div module="board_empty_1002" class="empty">
  등록된 게시글이 없습니다.
</div>
AI 작업 포인트: 게시판 번호 1002는 예시입니다. 실제 스킨의 공지/FAQ/후기 게시판 번호를 먼저 확인한 뒤 모듈명을 바꿔야 합니다.

LAYOUT 공통 헤더/푸터 - include와 페이지별 활성 상태

언제 쓰나 모든 페이지에 들어가는 네비게이션, 배너, 푸터를 정리할 때
확인 포인트 include 경로, 모바일 include 분리, 현재 메뉴 active 처리
<!-- layout/basic/layout.html -->
<!--@import(/layout/basic/header.html)-->
<main id="contents" data-page="{$filename}">
  {$contents}
</main>
<!--@import(/layout/basic/footer.html)-->

<!-- layout/basic/header.html -->
<nav class="site-nav" module="Layout_statelogoff">
  <a href="/" class="home">홈</a>
  <a href="/product/list.html?cate_no=24">신상품</a>
  <a href="/board/free/list.html?board_no=1">공지사항</a>
  <a href="/member/login.html">로그인</a>
</nav>

<nav class="site-nav" module="Layout_stateLogon">
  <a href="/myshop/index.html">마이쇼핑</a>
  <a href="/order/basket.html">장바구니</a>
  <a href="{$action_logout}">로그아웃</a>
</nav>
실전 팁: 헤더를 고칠 때는 PC와 모바일 include가 나뉘어 있는지 먼저 확인하세요. PC만 바꾸고 모바일 헤더가 그대로 남는 경우가 많습니다.

GUARD AI 수정 요청용 안전 프롬프트

AI 에이전트에게 카페24 스킨을 맡길 때는 “예쁘게 고쳐줘”보다 아래처럼 수정 범위와 금지사항을 같이 줘야 합니다.

카페24 스마트디자인 스킨을 수정한다.
범위: /product/list.html 의 product_listnormal 모듈 내부만 수정한다.
목표: 상품 카드의 이미지, 상품명, 가격, 품절 배지 레이아웃을 정리한다.
유지: module 속성, {$...} 변수, <!-- $count --> 옵션, onclick 액션 변수는 삭제하지 않는다.
금지: 주문/결제/회원 관련 액션 변경, 다른 페이지 include 수정, 임의 변수 생성.
검증: PC 1440px, 모바일 390px에서 상품 1개/여러 개/품절 상태를 확인한다.

14. 실무 팁

수정 전 체크리스트

항목확인 질문이유
스킨 백업현재 스킨을 복사하거나 파일을 내려받았나?카페24 스킨은 작은 변경도 여러 화면에 영향을 줄 수 있습니다.
페이지 범위PC/모바일 파일이 같은가, 분리되어 있는가?PC만 수정하고 모바일이 그대로 남는 실수가 많습니다.
모듈 범위수정할 HTML이 어느 module="..." 안에 있는가?변수는 모듈 밖으로 나가면 비거나 다르게 동작할 수 있습니다.
반복 영역<li>, <tr> 같은 반복 단위 안에서 수정하는가?첫 번째 항목만 맞고 나머지가 깨지는 문제를 막습니다.
옵션 주석<!-- $count -->, <!-- $basket_result --> 같은 주석을 유지했나?주석 옵션은 카페24가 읽는 설정값입니다.
액션 변수{$action_buy}, {$action_basket}를 임의로 바꾸지 않았나?주문/장바구니/로그인 플로우와 직접 연결됩니다.

자주 터지는 문제와 빠른 진단

증상먼저 볼 곳해결 방향
CSS가 반영되지 않음브라우저 캐시, include 경로, 파일명?ver=YYYYMMDD 추가, 강력 새로고침, 실제 로드 URL 확인
변수가 빈 값으로 나옴변수가 들어간 모듈 범위공식 모듈 문서에서 해당 변수가 어느 모듈에서 쓰이는지 확인
상품 카드 일부만 깨짐반복되는 <li> 내부 구조첫 항목 기준이 아니라 반복 항목 전체에 같은 구조 적용
모바일만 어긋남모바일 전용 파일, media query, 이미지 비율390px 기준으로 줄바꿈, 버튼 높이, 터치 영역 확인
구매 버튼이 동작하지 않음product_action 모듈과 action 변수버튼 디자인만 바꾸고 onclick/action 변수는 유지
게시판 링크가 이상함{$param_read}, 게시판 번호게시판별 모듈 번호와 read/list 파라미터를 함께 확인

좋은 수정 방식

  • 기존 module/변수/액션을 유지하고 class를 추가한다.
  • PC와 모바일을 같은 시나리오로 확인한다.
  • 품절, 할인, 옵션 없음, 게시글 없음 같은 빈/예외 상태를 본다.
  • CSS는 새 prefix를 붙여 충돌 범위를 줄인다.

피해야 할 수정 방식

  • AI가 만든 임의 변수명을 그대로 넣는다.
  • module 속성을 지우고 일반 HTML로 바꾼다.
  • 주문/회원 action을 새 JS로 대체한다.
  • PC 화면만 보고 완료 처리한다.

작업 순서 권장

  1. 수정 대상 URL과 PC/모바일 파일을 먼저 찾기
  2. 해당 화면의 모듈명과 반복 영역 표시하기
  3. 변수와 action을 지우지 않는 선에서 HTML class 추가
  4. CSS는 새 prefix로 작성하고 캐시 버전 붙이기
  5. JS가 필요하면 기존 카페24 액션과 충돌하지 않는 이벤트만 추가
  6. 상품 있음/없음, 품절, 옵션, 로그인/로그아웃 상태 확인
  7. 수정 전후 스크린샷과 변경 파일 목록을 남기기

AI 에이전트에게 맡길 때의 검증 문장

수정 후 다음을 보고하라.
1. 변경한 파일과 줄 범위
2. 유지한 Cafe24 module/변수/action 목록
3. 임의로 만든 변수나 삭제한 액션이 없는지
4. PC 1440px / 모바일 390px 확인 결과
5. 품절/빈 목록/로그인 상태 같은 예외 상태 영향

15. 공식 디자인 문서 맵

카페24 개발자센터의 Design 문서는 스킨 코딩 레퍼런스만이 아니라, 파트너 등록 → 상품 제작 → 심사 → 판매/운영까지 이어지는 운영 문서와 스마트디자인 제작 문서가 함께 연결되어 있습니다.

디자인 가이드

  • 파트너 등록, 결제/정산, 주문/매출 관리
  • 쇼핑몰디자인/워드프레스/홈페이지/디자인소스/유지보수 상품 등록
  • 심사, 취소/환불, 분쟁, 페널티, 스토리/청구서

스마트디자인

  • 스마트디자인 소개
  • 디자인 기본 이해하기
  • 디자인 편집창 활용 방법
  • 화면보기/HTML보기 기반 수정 흐름

테마 컴포넌트

  • PC: Font, Grid, Box, Tab, Button, Product, Table, Form 등
  • Mobile: Font, Button, Layer, PrdInfo, Fold, Form 등
  • ec-base-*, prdList, eTab, eToggle 같은 기본 계약
문서군실무에서 쓰는 목적AI 작업 시 해석
디자인 가이드디자인 상품 등록, 샘플쇼핑몰, 심사, 판매/정산 운영스킨을 상품화하거나 납품/분쟁 대비 자료를 만들 때 확인
스마트디자인HTML/CSS/JS 편집, 레이아웃과 콘텐츠 연결, 편집창 사용실제 스킨 파일을 어느 범위에서 고칠지 판단하는 제작 기준
테마 컴포넌트카페24 기본 UI 클래스와 동작 패턴 재사용AI가 새 UI를 발명하기 전에 보존/재사용해야 하는 기본 컴포넌트 계약
핵심 구분: 파트너(디자인) 사이트는 상품 등록·판매·매출 관리 영역이고, 실제 스킨 제작/적용은 쇼핑몰센터의 스마트디자인 편집창과 샘플쇼핑몰/테스트 스킨에서 검증합니다.

16. 스킨 제작 실제 흐름

공식 문서 흐름을 작업 프로세스로 바꾸면, 카페24 스킨 제작은 디자인 구상 → 스마트디자인 파일 수정 → 샘플쇼핑몰/테스트 스킨 검증 → 상품 등록/심사 순서로 관리하는 것이 안전합니다.

  1. 운영 스킨을 직접 수정하지 말고 스킨 복사 또는 파일 다운로드로 기준본을 확보합니다.
  2. 로컬 Git 저장소에서 baseline commit을 만들고, 작업 브랜치에서만 수정합니다.
  3. 수정 대상 페이지의 PC/모바일 파일, include 구조, module="..." 범위를 먼저 표시합니다.
  4. HTML보기에서는 카페24 변수/모듈/action을 보존하면서 class, wrapper, CSS를 중심으로 수정합니다.
  5. 로컬 mock preview로 레이아웃을 빠르게 확인하되, 이 단계는 카페24 엔진 검증이 아님을 명확히 둡니다.
  6. 테스트 스킨 또는 샘플쇼핑몰에 변경 파일만 적용해 실제 상품/옵션/로그인/장바구니 동작을 확인합니다.
  7. 수정 전후 스크린샷, 변경 파일 목록, 보존한 모듈/변수/action 목록을 QA 리포트로 남깁니다.
  8. 판매 상품이면 대표/진열/썸네일/모바일 이미지 규격과 심사 기준까지 확인한 뒤 등록합니다.
단계확인할 것완료 기준
구상메인, 상품목록, 상품상세, 회원, 주문, 게시판 중 수정 범위파일/페이지/모듈 단위로 작업 범위가 좁혀짐
편집스마트디자인 HTML보기, include, CSS/JS 경로모듈/변수/action 삭제 없이 diff가 제한됨
로컬 확인mock 데이터, 긴 상품명, 품절, 빈 목록, 모바일 390px레이아웃 깨짐과 수평 overflow 없음
카페24 확인샘플쇼핑몰/테스트 스킨 preview, 실제 상품/옵션/구매 버튼카페24 엔진에서 변수와 액션이 정상 동작
상품화대표/진열/썸네일/모바일 이미지 규격, 글로벌 한글 노출, 저작권심사 전 자체 체크리스트 통과

17. AI 수정 안전 규칙

카페24 스킨에서 AI가 가장 많이 망가뜨리는 것은 일반 UI가 아니라 카페24가 실행 시 읽는 계약입니다. 아래 항목은 디자인을 바꿔도 보존해야 합니다.

반드시 유지

  • module="..." 속성
  • {$...} 변수와 변수 scope
  • <!-- $count -->, <!-- $only_html --> 같은 카페24 주석 옵션
  • {$action_buy}, {$action_basket}, {$action_login}, {$action_logout} 등 액션 변수
  • ec-base-*, prdList, eTab, eToggle 등 공식 컴포넌트/동작 클래스

기본 금지

  • 카페24에 없는 임의 변수 생성
  • 구매/장바구니/로그인 action을 새 JavaScript로 대체
  • 폼 변수를 일반 input/select로 재작성
  • 주문/결제/회원 파일을 디자인 수정 명목으로 광범위하게 변경
  • PC만 보고 모바일 파일 또는 모바일 전용 컴포넌트 검증 생략

AI에게 줄 안전 프롬프트 템플릿

카페24 스마트디자인 스킨을 수정한다.
수정 범위: [파일 경로]의 [module="..."] 내부만.
목표: [디자인/레이아웃 목표].
유지: module 속성, {$...} 변수, 카페24 주석 옵션, onclick/action 변수, ec-base-* 클래스.
금지: 임의 변수 생성, 주문/결제/회원 action 재작성, 폼 변수 구조 변경, 범위 밖 파일 수정.
검증: git diff, PC 1440px, 모바일 390px, 실제 카페24 테스트 스킨 preview, 품절/빈 목록/로그인 상태.
주의: 로컬 HTML에서 보기 좋게 보이는 것과 카페24에서 정상 동작하는 것은 다릅니다. 카페24 변수와 action은 테스트 스킨/샘플쇼핑몰 preview에서만 최종 확인됩니다.

18. 테마 컴포넌트 치트시트

테마 컴포넌트 문서는 “디자인 예제”이면서 동시에 기존 스킨과 충돌하지 않기 위한 카페24 기본 UI 어휘입니다. 완전한 새 구조보다 기존 컴포넌트를 보존·확장하는 편이 안전합니다.

PC 주요 컴포넌트

컴포넌트대표 클래스/용도
FonttxtInfo, txtWarn, txtEm, txtDel, txt11~18
GridgBlank*, gIndent*, gSpace*, fWidthFull, gLabel
Boxec-base-box, typeThin, typeBg, typeThinBg, gHalf
Buttonec-base-button, btnNormal, btnEm, btnSubmit, sizeS/M/L
ProductprdList, grid2, grid3, grid4
Table/Formec-base-table, typeList; 폼 태그는 변수 내부 구조를 존중

Mobile 주요 컴포넌트

컴포넌트대표 클래스/용도
ButtonbtnStrong, btnNormal, 100% 너비형, 버튼+버튼 조합
Usesec-base-field, ec-base-qty, 검색/수량 조합
Layerbody.popup, 레이어 팝업, 모달형
Tooltipec-base-tooltip, 아이콘형 툴팁
PrdInfo상품 정보/옵션값 표시, 후기/마이쇼핑/주문 페이지에서 사용
FoldeToggle 추가 시 토글 동작 가능
실전 기준: 기존 스킨에 ec-base-* 구조가 있으면 먼저 보존하고, 새 브랜드 디자인은 wrapper class와 scoped CSS로 덧입히세요.

19. URL별 템플릿/샘플 사이트 모달

카페24 스마트디자인에는 Next.js 같은 임의 라우터가 있는 것이 아니라, URL이 대체로 정해진 스킨 파일과 모듈에 매핑됩니다. 따라서 “특정 URL에 새 템플릿 적용”은 아래 네 방식 중 하나로 설계합니다.

방식언제 쓰나주의점
기존 URL 파일 수정/product/list.html, /product/detail.html, /board/free/list.html처럼 카페24가 이미 쓰는 화면해당 파일의 module, 변수, action을 유지해야 함
커스텀 HTML 페이지 추가브랜드 소개, 이벤트, 랜딩처럼 독립 URL이 필요한 경우상품/주문/회원 모듈은 필요한 범위만 넣고 링크로 연결
조건부 템플릿카테고리, 게시판 번호, URL 파라미터에 따라 같은 파일 안에서 다른 섹션을 보여줄 때카페24 조건문/변수 scope가 가능한지 먼저 확인
로컬 샘플 사이트 모달초보자/작업자가 “이 URL은 어느 파일을 고쳐야 하나?”를 빠르게 배우게 할 때학습/진단 UI이며, 실제 카페24 라우팅 기능은 아님
판단: 아이디어 좋습니다. 실제 카페24에 “아무 URL을 새 템플릿에 연결하는 라우터”가 있다고 보기보다는, 이 레퍼런스에 샘플 사이트 UI → 클릭 → 모달로 URL/수정 파일/모듈/주의점 안내를 넣는 방식이 실용적입니다.

20. 공식 문서 & 참고 자료

공식 문서

자료링크
스마트디자인 서포트 (메인)sdsupport.cafe24.com
모듈 전체 목록모듈 리스트
변수와 모듈 이해하기공식 가이드
모디파이어 고급편공식 가이드
반복문 사용하기공식 가이드
서비스 가이드 PDFPDF 다운로드
편집창 매뉴얼 PDFPDF 다운로드
개발자센터 Design 시작하기design/front/design
스마트디자인 소개design/front/smart
디자인 기본 이해하기sdsupport/basic
디자인 편집창 활용 방법sdsupport/editor
테마 컴포넌트 PCcomponent/pc
테마 컴포넌트 Mobilecomponent/mobile
개발자 센터developers.cafe24.com
Help Centersupport.cafe24.com

커뮤니티 가이드

자료링크
모듈과 변수 설명 (UsingU)usingu.co.kr
코딩 팁 정리 (언투디자인)unto.kr
주석변수 사용설명서 (EOND)eond.com
스마트 코딩 사용법 정리ppcle.com
이미지 변수 & 사이즈 조절Help Center

페이지별 모듈 소스 (공식)

페이지링크
메인 페이지layout/index.html
상품 목록product/list.html
상품 상세product/detail.html
상품 상세 (모바일)product/detail.html (m)
장바구니 (모바일)order/basket.html (m)
로그인 (모바일)member/login.html (m)
회원가입 (모바일)member/join.html (m)
게시판 목록board/free/list.html