织梦cms栏目自定义字段

自定义字段概述

织梦CMS的自定义字段功能允许开发者在不修改核心代码的情况下,为栏目和内容模型添加额外的数据字段。这在需要扩展栏目功能时非常有用,例如为栏目添加图标、背景图、自定义CSS类名、SEO扩展信息等。

一、栏目自定义字段的类型

织梦CMS支持两类自定义字段:

二、添加内容模型自定义字段

  1. 进入 核心 > 频道模型管理
  2. 选择目标模型(如"普通文章"),点击"字段管理"
  3. 点击"添加新字段",配置以下参数:
字段名称:      product_price
数据类型:      数字类型
表单类型:      文本输入框
显示名称:      产品价格
字段说明:      输入产品的市场价
是否必填:      否
默认值:        0
列表显示:      是(在后台文章列表中显示)

三、常用字段数据类型

类型数据库类型说明
单行文本varchar(250)适用于简短文本
多行文本text适用于描述、备注等长文本
HTML文本mediumtext富文本编辑器输入
数字int(11)整数数值
小数decimal(10,2)精确小数
单选框enum多个选项选一个
复选框varchar(250)多选
下拉框varchar(250)下拉选择
图片varchar(200)带上传按钮
联动类型int/varchar级联菜单

四、在模板中调用自定义字段

添加自定义字段后,在模板中通过 [field:字段名/] 调用:

<!-- arclist标签中调用自定义字段 -->
{dede:arclist typeid='3' row='10' addfields='product_price,product_spec' channelid='1'}
<div class="product-item">
  <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
  <p class="price">¥[field:product_price/]</p>
  <p class="spec">规格:[field:product_spec/]</p>
</div>
{/dede:arclist}

<!-- 文章内容页调用自定义字段 -->
<div class="product-meta">
  <span>价格:{dede:field.product_price/}元</span>
  <span>型号:{dede:field.product_model/}</span>
</div>
重要:在arclist/list等列表标签中调用自定义字段时,必须使用 addfields='字段名1,字段名2' 参数声明要加载的额外字段,否则标签不会查询这些字段的数据。

五、栏目级别的自定义字段

织梦CMS默认的栏目表结构有限,如需扩展栏目字段,可通过以下方式:

方式一:修改模型配置文件

找到 include/typeunit.class.php 文件,为栏目添加附加表字段。

方式二:数据库直接添加

<!-- 为dede_arctype表添加自定义列 -->
ALTER TABLE dede_arctype ADD COLUMN icon_url VARCHAR(200) DEFAULT '';
ALTER TABLE dede_arctype ADD COLUMN bg_color VARCHAR(20) DEFAULT '#ffffff';
ALTER TABLE dede_arctype ADD COLUMN target_blank TINYINT(1) DEFAULT 0;

<!-- 在模板中调用(通过SQL标签) -->
{dede:sql sql="SELECT icon_url,bg_color FROM dede_arctype WHERE id=3"}
<img src="[field:icon_url/]" alt="">
{/dede:sql}

六、实战示例:为栏目添加SEO自定义描述

  1. 频道模型管理中为"普通文章"模型添加字段 custom_seo_desc(多行文本)
  2. 在发布文章时填写SEO自定义描述
  3. 在模板中调用:
<meta name="description" content="{dede:field.custom_seo_desc/}">

<!-- 如果未填写则使用默认描述 -->
{dede:field name='custom_seo_desc' runphp='yes'}
if(empty(@me)) @me=$GLOBALS['cfg_description'];
{/dede:field}
最佳实践:自定义字段命名建议使用英文下划线命名(如 product_price),避免使用中文字段名导致编码问题。添加字段前建议先备份数据库。