同一後台、同一資料庫、不同前端模板:PC 端完整功能、手機端輕量優化、自動裝置識別跳轉。
編輯 phpcms/libs/functions/extention.func.php:
步驟二:建立手機版模板目錄
phpcms/templates/ ├── default/ # PC 端模板 │ ├── content/ │ ├── index.php │ └── ... └── mobile/ # 手機端模板(新建) ├── content/ ├── index.php └── ... # 檔名與 PC 端對應步驟三:模板載入邏輯分離
修改
phpcms/templates/modules/content/index.php(及其他模組入口):// 原始:include template('content', $template); // 修改:根據裝置載入對應模板 $templateDir = is_mobile() ? 'mobile' : 'content'; include template($templateDir, $template);更優雅的方式:擴展 template() 函式
編輯
phpcms/libs/functions/global.func.php找到template()函式:function template($module, $template = '') { // ... 原有代碼 ... // 新增:自動偵測手機模板 if (defined('IN_MOBILE') && IN_MOBILE) { $module = 'mobile/' . $module; } // ... 原有代碼 ... }入口檔案定義常數:
// phpcms/mobile.php (手機站入口) define('IN_MOBILE', true); define('PHPCMS_PATH', __DIR__ . '/phpcms/'); include PHPCMS_PATH . 'index.php';步驟四:手機站入口與 URL 設計
方案 A:子域名 m.example.com(推薦)
# Nginx 配置 server { listen 80; server_name m.example.com; root /var/www/html; index mobile.php; # ... PHP 處理配置 ... }方案 B:子目錄 example.com/m/
# 建立 phpcms/m/ 目錄,放入 mobile.php 入口方案 C:同域名自動跳轉(不推薦,SEO 風險)
// 公共頭部載入前執行 if (is_mobile() && !isset($_GET['desktop'])) { header('Location: https://m.example.com' . $_SERVER['REQUEST_URI']); exit; }步驟五:手機版模板優化要點
<meta name="viewport" content="width=device-width, initial-scale=1.0"><img src="..." style="max-width:100%;height:auto">| 策略 | 適用場景 | 優點 | 缺點 |
|---|---|---|---|
| 全動態 | 手機站、低流量、頻繁更新 | 即時生效、無生成延遲 | 高併發壓力大 |
| 全靜態 | 高流量、內容穩定 | 效能極佳、抗壓 | 更新延遲、佔磁碟 |
| 偽靜態 | 大多數場景 | URL 美觀、動態處理 | 需 Rewrite 規則 |
| 問題 | 原因 | 解決 |
|---|---|---|
| 手機站樣式錯亂 | CSS 路徑錯誤 | 使用絕對路徑 {CSS_PATH} 或 /statics/css/ |
| 圖片不顯示 | 上傳路徑配置 | 檢查 phpcms/libs/config.php 中 upload_url |
| 無法登入 | Cookie 域設定 | 設定 cookie_domain = '.example.com' 支援子域名共用 |
| 搜尋不工作 | 表單 action 錯誤 | 手機模板搜尋表單指向正確模組/控制器 |