DedeCMS 單表模型預設生成靜態頁,若需切換為動態瀏覽,需修改 arclistsg 標簽邏輯與列表視圖類 arc.sglistview.class.php,並新增 ismake 字段控制生成模式。本文提供兩種實現方案的完整步驟。
ALTER TABLE `dede_你的單表模型表` ADD `ismake` SMALLINT DEFAULT '-1' COMMENT '動態/靜態標識 -1動態 1靜態';
在對應模型的 listfields 字段中加入 ismake,確保後台列表可查詢/編輯該字段。
文件:include/taglib/arclistsg.lib.php,約第 264 行,找到 GetFileUrl() 呼叫處:
<?php
// 原始:$row['arcurl'] = GetFileUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], 1, ...);
// 修改為:
$row['arcurl'] = GetFileUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], $row['ismake'], ...);
GetFileUrl() 定義於 helpers/channelunit.helper.php,第 5 參數 $ismake 決定生成靜態(1)或動態(-1)連結。
文件:include/arc.sglistview.class.php,約第 760 行:
<?php
// 原始:$row['ismake'] = 1; // 強制靜態
// 修改:註釋或移除該行,保留資料庫原值
// $row['ismake'] = 1;
// 同樣修改 GetFileUrl 呼叫
$row['arcurl'] = GetFileUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], $row['ismake'], ...);
在對應的發布/編輯腳本中,註釋生成 HTML 的代碼塊(通常在 archives_do.php 或模型專屬控制器)。
直接將上述兩處 GetFileUrl() 的第 5 參數改為 -1,無需新增字段。缺點:無法單獨控制某篇文章,且升級覆蓋風險高。
data/tplcache/)與文檔緩存。channelunit.helper.php 中 GetFileUrl 確實支援 $ismake 參數(舊版本可能不支援,需同步更新)。try_files 將不存在的靜態文件轉發至 PHP 動態解析。