织梦自定义字段如何正确调用?

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 织梦建站 正文

这篇教程将从易到难,分为以下几个部分:

织梦 自定义字段 调用
(图片来源网络,侵删)
  1. 第一步:添加自定义字段 (准备工作)
  2. 第二步:在列表页调用自定义字段 ({dede:list}
  3. 第三步:在内容页调用自定义字段 ({dede:field}
  4. 第四步:在首页/频道页调用自定义字段 ({dedarclist}
  5. 第五步:常用技巧与注意事项

第一步:添加自定义字段 (准备工作)

在调用之前,你必须先在后台为你的模型(内容模型)添加好自定义字段,这里以文章模型(默认的“文章”模型)为例。

  1. 登录织梦后台
  2. 进入 [核心] -> [内容模型管理]
  3. 找到你想要修改的模型,文章”,点击右侧的 [字段管理]
  4. 在字段管理页面,点击 [添加新字段]
  5. 填写字段信息:
    • 字段名称: 这是数据库里的字段名,只能用英文、数字和下划线,myauthor, myprice, myvideo建议使用有意义的英文命名
    • 字段提示: 这个会出现在后台发布文章时的表单里,是给管理员看的,作者”、“视频地址”。
    • 字段类型: 根据你的需求选择,常用的有:
      • text: 单行文本
      • textarea: 多行文本
      • editor: 编辑器(可以插入图片、视频等富文本)
      • varchar: 单行文本(和text类似)
      • datetime: 日期时间
      • img: 图片(上传一张图片)
      • media: 多媒体(可以上传视频、音频、附件)
      • select: 下拉选择
      • radio: 单选按钮
      • checkbox: 复选框
    • 字段值: 如果是 select, radio, checkbox 类型,这里需要填写选项,用 分隔,选项一|选项二|选项三
    • 默认值: (可选)设置一个默认值。
    • 是否为空: 选择“否”表示这个字段是必填的。
    • 显示在发布页: 选择“是”,这样在后台发布文章时才能看到这个字段。
  6. 点击 [保存]

你去后台发布一篇新文章,就能看到你添加的自定义字段了,填写一些测试数据,然后我们就可以在前端模板里调用了。


第二步:在列表页调用自定义字段 ({dede:list}

列表页是指栏目页、首页列表等使用 {dede:list} 标签循环输出文章摘要的地方。

基本调用方法

{dede:list} 标签内部,直接使用 {dede:field.你的字段名/} 即可。

织梦 自定义字段 调用
(图片来源网络,侵删)

示例: 假设我们添加了一个名为 myauthor 的字段(字段名称是 myauthor),想在列表页显示文章作者。

在模板文件 list_article.htm (或其他栏目列表模板) 中:

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 在这里调用自定义字段 myauthor -->
        <p>作者:[field:myauthor/]</p>
    </li>
{/dede:list}

注意:

  • {dede:list} 默认是不支持调用所有自定义字段的,因为它为了性能考虑,只获取了部分核心数据。
  • 如果直接调用 {field:myauthor/} 显示为空,你需要进行以下设置:

解决列表页调用自定义字段为空的问题

  1. 进入后台 [系统] -> [系统基本参数] -> [其他选项]
  2. 找到 “列表页调用自定义字段” 这个选项。
  3. 在输入框中填入你希望在列表页调用的所有自定义字段名,用英文逗号 分隔myauthor, myprice, myvideo
  4. 点击 [确定保存]

完成这一步后,列表页的自定义字段就可以正常显示了。

织梦 自定义字段 调用
(图片来源网络,侵删)

第三步:在内容页调用自定义字段 ({dede:field}

页是指文章的详情页,模板文件通常是 article_article.htm。 页调用自定义字段非常简单,直接使用 {dede:field.字段名/} 即可。

示例: 假设我们有一个多行文本字段 description(字段名称为 description),和一个图片字段 mycover(字段名称为 mycover)。

article_article.htm 模板中:

<h1>{dede:field.title/}</h1>
<!-- 调用多行文本字段,通常用于副标题或补充说明 -->
<h2>{dede:field.description/}</h2>
<!-- 调用图片字段,需要配合img标签使用 -->
{dede:field.mycover function='(@me)'}
    <img src="{@me}" alt="封面图" />
{/dede:field.mycover}
<!-- 调用编辑器字段,它本身就是HTML代码,直接输出即可 -->
{dede:field.mycontent/}
<!-- 调用其他字段 -->
<p>发布时间:{dede:field.pubdate function='GetDateTimeMK(@me)'/}</p>
<p>来源:{dede:field.source/}</p>
<p>作者:{dede:field.myauthor/}</p>

特别注意 function 的使用:

  • 对于 图片、文件、多媒体 等字段,它们的值通常是路径,如果你想获取路径里的文件名,或者对路径进行处理,可以使用 function
  • mycover 字段存储的是 /uploads/allimg/20251010/123.jpg,你想直接显示这个图片:
    {dede:field.mycover function='(@me)'}
        <img src="{@me}" />
    {/dede:field.mycover}

    或者更简洁的写法:

    <img src="[field:mycover/]" />
  • 对于 日期时间 字段,通常需要格式化:
    {dede:field.mydate function='strftime("%Y-%m-%d %H:%M:%S", @me)'/}

第四步:在首页/频道页调用自定义字段 ({dede:arclist}

首页或频道页如果使用了 {dede:arclist} 标签来调用文章,其调用方法与 {dede:list} 完全相同。

示例: 在首页模板 index.htm 中:

{dede:arclist titlelen='30' row='5'}
    <div class="item">
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
        <!-- 调用自定义字段 -->
        <span>价格:[field:myprice/]</span>
    </div>
{/dede:arclist}

同样,如果调用为空,也需要去 [系统] -> [系统基本参数] -> [其他选项] 中,设置 “首页/栏目列表页调用自定义字段”,填入你的字段名,用逗号分隔。


第五步:常用技巧与注意事项

判断字段是否为空 (非常重要)

如果某个自定义字段用户可能不填写,直接调用可能会显示空白数据,影响美观,我们可以使用织梦的 if 标签进行判断。

示例: 只有当 myauthor 字段不为空时才显示作者信息。

{dede:list}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 使用 if 标签判断 -->
        [field:myauthor runphp='yes']
            if(@me != '') {
                @me = "<p>作者:".@me."</p>";
            } else {
                @me = ""; // 为空时输出空
            }
        [/field:myauthor]
    </li>
{/dede:list}

更简洁的写法 (推荐):

{dede:list}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- myauthor 不为空,则显示 -->
        [field:myauthor runphp='yes']
            if(@me) @me = "<p>作者:".@me."</p>";
        [/field:myauthor]
    </li>
{/dede:list}

调用下拉选择/单选/复选框的值

如果字段类型是 select, radio, checkbox,你在后台设置的选项(如 选项一|选项二|选项三)会被存储为 选项一,选项二,选项三 (用英文逗号分隔)。

如果你想美化显示,可以替换逗号:

<!-- 假设字段名为 mytags -->
<p>标签:{dede:field.mytags function='str_replace(",", " | ", @me)'/}</p>

这样 选项一,选项二 就会显示为 选项一 | 选项二

字段命名规范

  • 字段名称(英文)不要使用 dede_ 开头,这是系统保留前缀。
  • 不要使用SQL关键字或函数名作为字段名,如 order, group, value 等。
  • 使用有意义的名称,方便后期维护。

性能考虑

在列表页({dede:list}{dede:arclist})中调用过多自定义字段会增加数据库查询压力,降低页面加载速度,只调用列表页真正需要显示的字段,不要贪多。

调用位置 调用方法 注意事项
列表页 {dede:list} {dede:field.字段名/} 需要在后台开启“列表页调用自定义字段”功能。
首页/频道页 {dede:arclist} {dede:field.字段名/} 需要在后台开启“首页/栏目列表页调用自定义字段”功能。
通用技巧 runphp [field:字段名 runphp='yes']...[/field:字段名] 用于判断、处理和格式化字段值。

希望这份详细的教程能帮助你完全掌握织梦自定义字段的调用!

-- 展开阅读全文 --
头像
dede网站换logo的详细步骤是什么?
« 上一篇 02-16
dede会员发布文章如何调用?
下一篇 » 02-16
取消
微信二维码
支付宝二维码