개발자 가이드

기타 규약 (시간대·IP·갤러리)

서드파티 제작에서 알아두면 좋은 코어 규약 모음입니다.

표준 시간대 처리

Zittme는 시간대를 둘로 나눠 관리합니다.

구분설정
내부 시간대DB에 날짜를 저장할 때 쓰는 고정 시간대. 설치 시점에 정해지며 이후 변경 불가locale.internal_timezone
표시 시간대화면에 날짜를 보여줄 때 쓰는 시간대. 관리자가 바꿀 수 있음locale.default_timezone

날짜는 주로 YYYYMMDDHHIISS 문자열로 저장됩니다.

개발할 때의 규칙:

  • 저장은 내부 시간대 기준: date('YmdHis'), getInternalDateTime()
  • 표시는 표시 시간대 기준: zdate($값, 'Y-m-d'), getDisplayDateTime()
  • 저장된 값을 substr 으로 잘라 그대로 보여주면 시간대가 다른 사이트에서 어긋납니다. 표시엔 항상 zdate() 를 쓰세요.
  • 서머타임은 코어가 자동 계산합니다. 직접 처리하지 마세요.

이 구조 덕분에 서버를 이전해도 저장된 날짜가 어긋나지 않습니다.

IP 주소와 대역 표기

차단 목록·허용 목록 등 IP를 입력받는 곳에서는 다음 표기를 지원합니다.

표기
단일 IPv4192.168.122.96
와일드카드192.168.122.*, 192.168.*.*
범위192.168.122.0-192.168.122.255
CIDR192.168.216.0/24
IPv62001:2300::ffff:0, ::1
IPv6 CIDR2001:2300::/64

코드에서 검증·판정할 때는 코어 필터를 쓰세요. IPv6는 표기가 다양해 직접 파싱하면 위험합니다.

use Zittme\Framework\Filters\IpFilter;

IpFilter::validateRange($range);          // 대역 표기가 올바른가
IpFilter::inRange($ipaddress, $range);    // 이 IP가 대역에 드는가

포토스와이프 (이미지 갤러리)

본문 이미지를 누르면 갤러리로 크게 보여주는 기능이 애드온으로 내장되어 있습니다. 스킨에서 별도 연동 없이 마크업 규칙만 지키면 동작합니다.

  • xe_content (또는 rhymix_content) 클래스를 가진 컨테이너 안의 이미지는 자동으로 갤러리 대상이 됩니다. 본문 출력 영역에 이 클래스를 붙이는 것이 스킨의 관례입니다.
  • 컨테이너 밖의 이미지를 갤러리에 넣고 싶으면 photoswipe-images 클래스를 붙입니다 (제외 조건보다 우선).
  • 특정 이미지를 갤러리에서 빼려면 photoswipe-escape (또는 rx-escape) 클래스를 붙입니다.
  • 링크(a)·코드(pre,code)·폼 요소 안의 이미지는 자동으로 제외됩니다.
<div class="rhymix_content xe_content">{!! $oDocument->getContent(false) !!}</div>

<img class="photoswipe-images" src="poster.jpg" alt="" />   <!-- 본문 밖이지만 갤러리 포함 -->
<img class="photoswipe-escape" src="icon.png" alt="" />     <!-- 갤러리 제외 -->