核心思路
- 创建一个专门用于存放“商品属性”的自定义模型:这个模型就像一个“容器”,用来定义所有商品共有的属性字段。
- 在自定义模型中添加所需的属性字段:添加一个“颜色”字段,一个“尺寸”字段。
- 将自定义模型应用到商品栏目:这样,该栏目下的所有文章(商品)都会自动拥有这些属性字段。
- 在前台模板中调用和显示这些属性:在商品详情页和列表页,通过调用标签来显示这些属性。
详细步骤
第一步:创建自定义模型
- 登录 DedeCMS 后台。
- 在左侧菜单栏中,找到 【核心】 -> 模型管理】。
- 点击右上角的 模型】 按钮。
- 在弹出的页面中填写以下信息:
- 模型名称:填写一个清晰的名称,商品属性模型”。
- 表前缀:系统会自动生成一个
dede_开头的表前缀,保持默认即可。 - 模型类型:选择“普通文章”。
- 内容编码:保持默认的
UTF-8。 - 是否启用:务必选择“是”。
- 简介最大长度、列表行数、发布栏目等选项可以保持默认或根据需要修改。
- 点击 【确定】 按钮保存。
你已经成功创建了一个名为“商品属性模型”的模型,我们需要在这个模型里添加具体的属性字段。

(图片来源网络,侵删)
第二步:在模型中添加自定义字段
-
在后台菜单中,找到 【核心】 -> 【频道模型】 -> 【自定义字段管理】。
-
在页面顶部,选择你刚刚创建的模型:“商品属性模型”。
-
点击右上角的 【新增字段】 按钮。
-
开始添加你的第一个属性,颜色”:
(图片来源网络,侵删)- 字段名称:
color(必须为英文,由字母、数字、下划线组成)。 - 字段提示文字:
商品颜色(在前台发布内容时,这里会作为提示文字)。 - 字段类型:选择 “单行文本”,如果颜色是固定的选项(如红、蓝、绿),选择 “下拉列表” 或 “单选框” 更好。
- 默认值:可以留空,或填写一个默认值,如“黑色”。
- 字段大小:输入框的长度,如
20。 - 是否为必填项:根据需要勾选。
- 前台显示:选择“是”。
- 前台投稿显示:选择“是”。
- 数据校验:可以设置正则表达式,例如颜色校验
^[a-zA-Z0-9\u4e00-\u9fa5]+$。 - 会员投稿:根据需要设置。
- 字段名称:
-
点击 【保存】 按钮。
-
重复第3-5步,添加其他属性,
- 字段名称:
size,字段提示文字:商品尺寸,字段类型:下拉列表(选项:S, M, L, XL)。 - 字段名称:
material,字段提示文字:商品材质,字段类型:单行文本。
- 字段名称:
添加完所有需要的字段后,你的“商品属性模型”就准备好了。
第三步:将模型应用到商品栏目
- 在后台菜单中,找到 【核心】 -> 【栏目管理】。
- 找到你的“商品”栏目(或者你希望添加属性的栏目),点击其后面的 【修改】 按钮。
- 在栏目修改页面,找到 “高级选项” 或 模型” 相关的选项卡。
- 在 模型” 的下拉列表中,选择你刚刚创建的 “商品属性模型”。
- 点击 【确定】 保存。
重要提示:这个操作不会修改已有文章的字段,只对新发布的文章生效,如果你想让旧文章也有这些字段,需要手动去旧文章里编辑并填写。
第四步:在前台模板中调用和显示属性
你可以在商品详情页和列表页的模板文件中,使用 DedeCMS 的标签来调用这些自定义字段。
在商品详情页 (article_articledit.htm) 中显示
在详情页模板中,你可以使用 {dede:field.字段名/} 来直接调用。
<!DOCTYPE html>
<html>
<head>{dede:field.title/}</title>
</head>
<body>
<h1>{dede:field.title/}</h1>
<p>价格:{dede:field.price/}</p> <!-- 假设 price 是系统自带的字段 -->
<!-- 新增的商品属性 -->
<div class="product-attributes">
<h2>商品属性</h2>
<p><strong>颜色:</strong> {dede:field.color/}</p>
<p><strong>尺寸:</strong> {dede:field.size/}</p>
<p><strong>材质:</strong> {dede:field.material/}</p>
</div>
<div>
{dede:field.body/} <!-- 商品正文内容 -->
</div>
</body>
</html>
在商品列表页 (list_article.htm) 中显示
在列表页,通常循环使用 {dede:list} 标签,在循环内部调用字段。
<!DOCTYPE html>
<html>
<head>{dede:global.cfg_webname/}</title>
</head>
<body>
<h1>商品列表</h1>
<ul>
{dede:list pagesize='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 显示部分属性,例如颜色和尺寸 -->
<p>颜色: [field:color/] | 尺寸: [field:size/]</p>
<p>价格: [field:price/]</p>
</li>
{/dede:list}
</ul>
<!-- 分页 -->
{dede:pagelist listsize='4'/}
</body>
</html>
更灵活的调用方式:使用 array
你可能想把所有属性整齐地列出来,并且不确定具体有哪些字段,这时可以使用 {dede:field name='array'} 来获取所有自定义字段,然后循环输出。
在详情页 (article_articledit.htm) 中使用:
<div class="product-attributes">
<h2>商品属性</h2>
<ul>
{dede:field name='array' runphp='yes'}
@me = '';
if (is_array(@me)) {
foreach (@me as $key => $value) {
// 排除系统自带的一些字段,只显示我们自定义的
if (!in_array($key, array('id', 'typeid', 'title', 'shorttitle', 'ismake', 'channel', 'arcrank', 'click', 'money', 'litpic', 'pubdate', 'senddate', 'mid', 'userip'))) {
@me .= "<li><strong>" . $key . ":</strong> " . $value . "</li>";
}
}
}
{/dede:field}
</ul>
</div>
总结与注意事项
- 模型与栏目绑定:自定义字段必须先创建模型,然后将模型应用到栏目,新文章才会有这些字段。
- 字段名称:调用时
{dede:field.字段名/}中的“字段名”是你在“新增字段”时填写的英文字段名,而不是“字段提示文字”。 - 对旧文章无效:修改栏目模型后,只对之后发布的新文章生效,旧文章需要手动进入编辑页面,保存一次,才会添加这些新字段到数据库。
- 性能考虑:如果属性非常多,或者列表页调用的属性很复杂,可能会对网站性能产生轻微影响,但一般情况下影响不大。
- SEO:这些自定义属性也可以用于生成关键词,有利于SEO优化。
通过以上步骤,你就可以成功地为 DedeCMS 的商品增加各种自定义属性了。
