在 DedeCMS 中,实现这个功能最标准、最灵活的方法是创建一个自定义模型,这比直接修改核心文件更安全、更易于维护。
下面我将分步为你讲解整个过程,从安装到调用。
核心思路
- 创建数据表:在数据库中创建一个专门用来存储图片信息的表。
- 创建自定义模型:在后台“核心” -> “内容模型管理”中,创建一个新的模型,并关联到上一步的数据表。
- 添加自定义表单:在新模型中添加一个“图片”类型的表单字段,用于上传图片。
- 内容录入:通过后台“新增内容”功能,使用这个新模型来上传和管理你的图片。
- 前台调用:使用 DedeCMS 的标签(如
arclist或sql)来调用这些图片并显示在页面上。
详细步骤
第一步:创建数据表
- 登录你的网站数据库管理工具(如 phpMyAdmin)。
- 选择你的 DedeCMS 数据库。
- 点击“SQL”选项卡,执行以下 SQL 语句来创建一个名为
dede_custom_image的表,你可以根据需要修改表名和字段名。
CREATE TABLE `dede_custom_image` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`typeid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID', varchar(100) NOT NULL DEFAULT '' COMMENT '图片标题',
`litpic` varchar(255) NOT NULL DEFAULT '' COMMENT '图片路径',
`url` varchar(255) NOT NULL DEFAULT '' COMMENT '图片链接地址',
`addtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
`flag` set('c','h','p','j','a','b','s') DEFAULT NULL COMMENT '属性',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COMMENT='自定义图片表';
字段说明:
id: 主键,唯一标识每一条记录。typeid: 分类ID,方便以后按分类调用。: 图片的标题,用于显示和SEO。litpic: 这是核心字段,用于存储上传图片的路径。url: 可选,点击图片后跳转的链接地址。addtime: 添加时间,用于排序。flag: DedeCMS 的属性标记,可选。
第二步:创建自定义模型
- 登录 DedeCMS 后台。
- 进入 “核心” -> “内容模型管理”。
- 点击右上角的 模型”。
- 填写模型信息:
- 模型名称:填写一个你容易识别的名字,自定义图片”。
- 表前缀:选择你刚才创建的数据表
dede_custom_image。 - 模型标识:填写一个英文或数字的唯一标识,
custom_image。 - 内容目录:可以留空或指定一个目录。
- 图片目录:可以留空或指定一个目录。
- 其他选项可以根据需要设置,通常保持默认即可。
- 点击“确定”保存,一个名为“自定义图片”的新模型已经创建成功。
第三步:添加自定义表单字段
这一步是让你的模型能够接收图片上传的关键。
- 在后台继续停留在 模型管理” 页面。
- 找到你刚刚创建的 “自定义图片” 模型,点击右侧的 “字段管理”。
- 点击 “增加新字段”。
- 填写字段信息:
- 字段名称:必须是小写英文,
litpic。(注意:必须和你在数据表中定义的字段名litpic完全一致!) - :填写一个在前台显示的标题,上传图片”。
- 字段类型:选择“图片”。
- 默认值:留空。
- 字段说明:可选,请上传一张图片”。
- 是否显示:选择“是”。
- 是否为空:根据需要选择,如果要求必须上传,就选择“否”。
- 其他选项:如“最大宽度”、“最大高度”等可以设置。
- 字段名称:必须是小写英文,
- 点击“保存”按钮,你的模型已经具备了上传图片的功能。
第四步:内容录入
- 回到 DedeCMS 后台首页。
- 进入 ”。
- 在“选择内容模型”的下拉菜单中,选择你刚刚创建的 “自定义图片”。
- 你会看到一个类似文章编辑的界面,但只有一个“上传图片”字段(如果你只添加了一个字段的话)。
- 点击“上传图片”按钮,在弹出的窗口中选择本地图片上传,或者从媒体库中选择。
- (
title字段)。 - 你还可以在扩展内容里填写“图片链接地址”(
url字段)。 - 选择一个分类(如果你设置了分类的话)。
- 点击“保存内容”。
你的图片数据已经成功存储在数据库中了。
第五步:前台调用
这是最后一步,将后台上传的图片显示在你的网站页面上,DedeCMS 提供了非常灵活的标签系统,这里介绍两种最常用的方法。
使用 arclist 标签(推荐,用于列表展示)
arclist 是 DedeCMS 最强大的列表标签,虽然主要用于文章,但也可以用来调用自定义模型的内容。
{dede:arclist row='10' titlelen='30' typeid='1' channelid='-3'}
<li>
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]" />
<span>[field:title/]</span>
</a>
</li>
{/dede:arclist}
参数解释:
row='10':调用 10 条记录,len='30'`:标题长度限制为 30 个字符。typeid='1':调用 ID 为 1 的分类下的内容。这个分类 ID 是你在后台“频道模型” -> “自定义分类目录”中为“自定义图片”模型创建的分类 ID。channelid='-3':这是关键!-3是 DedeCMS 中自定义模型的固定 ID,如果你的模型是后来创建的,这个 ID 可能会变,你可以在后台“内容模型管理”中查看你的模型 ID,然后用channelid='你的模型ID'来调用,如果你的模型 ID 是 5,就写channelid='5'。[field:litpic/]:调用图片路径。[field:title/]:调用图片标题。[field:arcurl/]页链接,对于自定义模型,它会链接到一个内容详情页。
使用 sql 标签(最灵活,用于任何场景)
sql 标签可以直接执行 SQL 语句,让你完全控制数据的查询和显示。
{dede:sql sql='SELECT id, title, litpic FROM dede_custom_image ORDER BY id DESC LIMIT 10'}
<li>
<a href="[field:php]echo GetOneArcUrl(@me);[/field:php]">
<img src="[field:litpic/]" alt="[field:title/]" />
<span>[field:title/]</span>
</a>
</li>
{/dede:sql}
参数解释:
sql='...':这里直接写你的 SQL 查询语句。ORDER BY id DESC LIMIT 10:按 ID 降序排列,并只取前 10 条。[field:php]echo GetOneArcUrl(@me);[/field:php]:这是 DedeCMS 的一个技巧,用于生成自定义模型的内容页链接。@me代表当前记录的 ID,GetOneArcUrl函数会根据这个 ID 和模型信息生成正确的 URL。
总结与注意事项
- 安全第一:遵循以上步骤创建自定义模型,而不是直接修改 DedeCMS 的核心文件(如
article_add.php),这样在升级系统时你的修改不会被覆盖。 - 模型 ID:使用
arclist时,channelid的值一定要正确,如果不确定,就去后台“内容模型管理”里查一下。 - 权限问题:确保你的网站目录(
/uploads/等)有正确的写入权限,否则无法上传图片。 - 模板路径:确保你的前台模板文件路径正确,DedeCMS 才能正确解析标签。
- 分类功能:如果你需要按分类管理图片,记得在后台“频道模型” -> “自定义分类目录”中为你的新模型创建分类,并在调用时指定
typeid。
通过以上五个步骤,你就可以在 DedeCMS 中成功安装并使用一个功能完整的“自定义图片”模块了。
