首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

DedeCMS 單表模型動態瀏覽設定:arclistsg 標簽與 arc.sglistview.class.php 修改指南

     編輯:PHP 相關知識

DedeCMS 單表模型預設生成靜態頁,若需切換為動態瀏覽,需修改 arclistsg 標簽邏輯與列表視圖類 arc.sglistview.class.php,並新增 ismake 字段控制生成模式。本文提供兩種實現方案的完整步驟。

方案一:新增 ismake 字段(推薦,相容性佳)

步驟 1:資料庫新增字段

ALTER TABLE `dede_你的單表模型表` ADD `ismake` SMALLINT DEFAULT '-1' COMMENT '動態/靜態標識 -1動態 1靜態';

步驟 2:更新 dede_channeltype 表的 listfields

在對應模型的 listfields 字段中加入 ismake,確保後台列表可查詢/編輯該字段。

步驟 3:修改 arclistsg 標簽庫

文件: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)連結。

步驟 4:修改 arc.sglistview.class.php

文件: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'], ...);

步驟 5:停用發布/更新時的靜態生成

在對應的發布/編輯腳本中,註釋生成 HTML 的代碼塊(通常在 archives_do.php 或模型專屬控制器)。

方案二:硬編碼為動態(快速測試,不推薦生產)

直接將上述兩處 GetFileUrl() 的第 5 參數改為 -1,無需新增字段。缺點:無法單獨控制某篇文章,且升級覆蓋風險高。

驗證與注意事項

  • 清理模板緩存(data/tplcache/)與文檔緩存。
  • 確認 channelunit.helper.php 中 GetFileUrl 確實支援 $ismake 參數(舊版本可能不支援,需同步更新)。
  • 若使用 Nginx,需配置 try_files 將不存在的靜態文件轉發至 PHP 動態解析。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved