核心概念
在织梦中,自定义字段的排序主要由两个部分决定:

(图片来源网络,侵删)
- 后台字段管理中的“排序”值:这是最基础、最常用的排序方式,在后台添加或编辑自定义字段时,有一个“排序”输入框,系统默认会按照这个数字从小到大来排列字段。
- 模板标签中的
sort属性:在调用字段时,可以通过模板标签的sort属性来覆盖后台的排序设置,实现更动态的排序。
后台“排序”值排序(最常用、最简单)
这是最直接的方法,适用于大多数静态布局的需求。
操作步骤:
- 登录织梦后台:进入你的网站后台管理界面。
- 进入字段管理:
- 在左侧菜单栏,找到 【核心】 -> 模型管理】。
- 点击你需要修改字段的内容模型(文章模型”、“产品模型”等)。
- 在打开的页面中,点击 【字段管理】。
- 设置字段排序:
- 在字段列表中,你会看到每个自定义字段都有一行记录。
- 找到你想要调整顺序的字段,在 【排序】 这一列的输入框中输入一个数字。
- 排序规则:数字越小,字段在页面上显示的位置就越靠前。
- 示例:
- 字段A:排序值设为
10 - 字段B:排序值设为
20 - 字段C:排序值设为
5 - 在页面上字段的显示顺序将是:字段C -> 字段A -> 字段B。
- 字段A:排序值设为
- 保存并更新:
- 修改完所有字段的排序值后,点击页面底部的 【保存】 或 【确定】 按钮。
- 重要提示:保存后,你需要到 【生成】 -> 【一键更新网站】,选择更新你修改了模型的内容页面,才能在网站上看到排序效果。
优点:
- 操作简单直观。
- 适用于固定布局,不需要频繁修改。
缺点:

(图片来源网络,侵删)
- 每次修改都需要登录后台,并更新网站,效率较低。
模板标签 sort 属性排序(更灵活)
如果你想在模板中直接控制字段的显示顺序,而不需要每次都去后台修改,可以使用标签的 sort 属性。
适用场景:
- 需要根据不同栏目或不同页面显示不同的字段顺序。
- 动态排序,例如按字段值的长度、首字母等排序(这需要更复杂的标签组合)。
操作步骤:
- 打开你的内容页模板文件:
- 通常位于
/templets/你的模板目录/article_article.htm(文章页)或/templets/你的模板目录/plus/view.php(通用视图页)。
- 通常位于
- 找到调用自定义字段的标签:
- 织梦调用自定义字段的常用标签是
{dede:field.字段名/}。
- 织梦调用自定义字段的常用标签是
- 添加
sort属性:- 在
{dede:field}标签中添加sort='自定义顺序'属性。 - 这个属性会覆盖后台设置的“排序”值。
- 在
示例代码:

(图片来源网络,侵删)
假设你有三个自定义字段:price(价格)、brand(品牌)、specs(规格)。
后台排序可能是:price (10), brand (20), specs (30)。
模板默认调用顺序:price -> brand -> specs。
现在想在模板中调整为:品牌 -> 价格 -> 规格。
你可以这样写模板代码:
<!-- 原来的调用方式,顺序由后台决定 -->
{dede:field.price/}
{dede:field.brand/}
{dede:field.specs/}
<!-- 使用 sort 属性自定义顺序 -->
{dede:field.brand sort='1'/}
{dede:field.price sort='2'/}
{dede:field.specs sort='3'/}
说明:
sort='1'的字段会最先显示。sort='2'的字段会次之。- 以此类推。
优点:
- 灵活性极高,可以在模板层面自由控制。
- 无需修改后台设置和更新网站即可看到效果。
缺点:
- 需要修改模板文件。
- 如果字段很多,手动在模板中写
sort属性会比较繁琐。
SQL语句排序(高级,适用于批量修改)
如果你有大量的字段需要一次性重新排序,或者需要更复杂的排序逻辑(比如按字段名称的拼音排序),可以直接操作数据库。
⚠️ 警告:操作数据库有风险,请务必提前备份数据库!
操作步骤:
-
登录你的数据库管理工具:如 phpMyAdmin。
-
选择正确的数据库:选择织梦网站所在的数据库名。
-
找到对应的表:
- 如果是 文章模型,表名通常是
dede_arctype(栏目表)或dede_addonarticle(文章附加表,字段通常在这里,但排序值在模型表里)。 - 自定义字段的排序值主要存储在
dede_arcatt(文章属性表,不常用)或更常见的,在 内容模型管理 对应的附加表里。最安全、最准确的方式是找到dede_modeltype表,但更常见的做法是,排序值是直接作用于前台标签的,其配置信息可能在缓存或特定配置文件中。 - 最简单且最安全的做法是修改
dede_fieldlist表,这个表存储了所有字段的列表信息,其中就包含排序字段。
- 如果是 文章模型,表名通常是
-
执行SQL语句:
- 在 phpMyAdmin 的 SQL 查询窗口中,执行以下语句来修改字段的排序值。
示例:将
price字段的排序值从10改为5,将brand字段的排序值从20改为15。UPDATE dede_fieldlist SET itemorder = CASE WHEN fieldname = 'price' THEN 5 WHEN fieldname = 'brand' THEN 15 ELSE itemorder END WHERE fieldname IN ('price', 'brand');dede_fieldlist:表名,请根据你的前缀修改(如果你的表前缀是abc_,则这里是abc_fieldlist)。itemorder:存储排序值的字段名。fieldname:字段名。CASE WHEN ... THEN ... ELSE ... END:这是 SQL 的条件判断,可以精确地修改你想要的字段。
-
更新网站:修改数据库后,同样需要到织梦后台 【生成】 -> 【一键更新网站】 来使更改生效。
优点:
- 效率极高,适合批量修改。
- 可以实现复杂的排序逻辑。
缺点:
- 风险最高,操作不当可能导致网站数据异常。
- 需要具备一定的数据库知识。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 后台排序值 | 简单、直观、官方推荐 | 不够灵活,需更新网站 | 大多数情况下的常规排序需求 |
模板 sort 属性 |
灵活、无需更新、可定制化 | 需修改模板,字段多时繁琐 | 不同页面需要不同顺序,或临时调整 |
| SQL语句排序 | 效率高、可批量处理、逻辑强大 | 风险高,需数据库知识 | 需要大规模、复杂的排序调整 |
给你的建议:
- 日常使用:优先使用 方法一(后台排序值),这是最标准、最安全的方式。
- 临时或特殊需求:当你只需要在某个特定页面上改变字段顺序时,使用 方法二(模板
sort属性),它最快且不影响全局。 - 大规模维护:如果你接手了一个有几十个自定义字段且顺序混乱的老网站,可以考虑使用 方法三(SQL语句) 进行一次性修正,但操作前一定要备份数据库!
