跳到主要內容
文件

開發者指南

其他規範(時區・IP・圖庫)

整理第三方開發時值得了解的核心規範。

時區處理

Zittme 將時區分為兩種管理。

區分意義設定
內部時區在 DB 中儲存日期時使用的固定時區。於安裝時決定,之後無法變更locale.internal_timezone
顯示時區在畫面上顯示日期時使用的時區。管理員可以變更locale.default_timezone

日期主要以 YYYYMMDDHHIISS 字串儲存。

開發時的規則:

  • 儲存以內部時區為準:date('YmdHis')、getInternalDateTime()
  • 顯示以顯示時區為準:zdate($value, '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가 대역에 드는가

PhotoSwipe(圖庫)

點選內文圖片即以圖庫放大顯示的功能,已以附加元件形式內建。面板不需另外整合,只要遵守標記規則即可運作。

  • 位於具有 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="" />     <!-- 갤러리 제외 -->