织梦自定义字段怎么调用?

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

准备工作:创建自定义字段

在调用之前,你必须确保你的自定义字段已经创建好并附加到了相应的模型上,如果你已经完成这一步,可以跳过此部分。

织梦如何调用自定义字段
(图片来源网络,侵删)
  1. 登录后台:进入织梦DedeCMS后台管理。
  2. 进入模型管理:在左侧菜单栏找到 核心 -> 内容模型管理
  3. 选择模型:在模型列表中,点击你想要修改的模型后面的 管理字段 链接,如果你想给“文章”模型添加一个“作者简介”字段,就点击“文章”模型对应的 管理字段
  4. 添加字段
    • 点击 添加新字段 按钮。
    • 字段名称:填写 author_intro (建议用英文,方便调用)。
    • :填写 作者简介 (这个会在后台表单显示)。
    • 字段类型选择,多行文本编辑器单选按钮下拉列表 等,对于“作者简介”,通常选择 多行文本编辑器
    • 字段值:留空。
    • 其他选项:根据需要设置,如是否为必填项、是否在列表页显示等。
    • 点击 保存 按钮。
  5. 更新缓存:添加完字段后,系统会提示你更新栏目缓存和系统缓存,务必点击 更新系统缓存,否则新字段不会在前台显示。

你的自定义字段 author_intro (作者简介) 已经准备就绪。


调用自定义字段的几种方法

调用自定义字段主要使用 {dede:field.字段名/} 标签,根据不同的页面(列表页、内容页、封面页),调用方式略有不同。

方法1:在内容页(文章详情页)调用

这是最简单、最直接的调用方式,在内容页模板(通常是 article_article.htm)中,可以直接使用 field

示例: 假设你添加了一个名为 source (来源) 的文本字段和一个名为 video (视频) 的编辑器字段。

<h1>{dede:field.title/}</h1>
<!-- 调用文本类型的自定义字段 'source' -->
<p class="source">来源:{dede:field.source/}</p>
<!-- 调用编辑器类型的自定义字段 'video',注意:编辑器字段通常需要用 function='Html2Text(@me)' 来过滤HTML标签,或者直接输出 -->
<!-- 如果希望保留HTML格式(比如视频代码、图片等),直接输出即可 -->
<div class="video-content">
    {dede:field.video/}
</div>
<!-- 如果是纯文本,希望去除HTML标签,可以这样用 -->
{dede:field.video function='Html2Text(@me)'/}
<!-- 文章正文 -->
{dede:field.body/}

语法说明

织梦如何调用自定义字段
(图片来源网络,侵删)
  • {dede:field.字段名/}:直接输出字段内容。
  • {dede:field.字段名 function='自定义函数'/}:对字段内容进行处理。Html2Text 是一个非常常用的函数,用于将HTML代码转换为纯文本。

方法2:在列表页(频道页、栏目页、首页列表)调用

在列表页调用自定义字段,需要使用 {dede:list}{dede:arclist} 标签,并在标签内使用 array 属性来指定需要调用的字段。

关键点:你必须在 array 属性中列出所有你希望在列表页显示的自定义字段名,用逗号隔开。

示例: 假设你在文章模型中添加了 price (价格) 和 author (作者) 两个字段,想在列表页显示它们。

<ul>
    {dede:list titlelen='40' infolen='160' orderby='pubdate'}
        <li>
            <a href="[field:arcurl/]">[field:title/]</a>
            <!-- 调用自定义字段 'price' 和 'author' -->
            <!-- 注意:必须在 list 标签的 array 属性中声明这些字段 -->
            <p>价格:[field:price/]</p>
            <p>作者:[field:author/]</p>
            <p>[field:info/]</p>
        </li>
    {/dede:list}
</ul>

语法说明

  • {dede:list}:列表循环标签。
  • array='price,author':这是必须的,告诉织梦在查询文章列表时,连同 priceauthor 这两个字段一起查询,如果不写,[field:price/] 将无法获取到值并显示为空。
  • [field:字段名/]:在 {dede:list} 循环内部,使用 [field:] 来调用当前文章的字段。

{dede:arclist} 的调用方式完全一样

{dede:arclist titlelen='40' row='10' channelid='1' array='price,author'}
    <a href="[field:arcurl/]">[field:title/]</a>
    价格:[field:price/] | 作者:[field:author/]
{/dede:arclist}
  • channelid='1':表示调用模型ID为1的频道(通常是“文章”模型),如果你的自定义字段在其他模型,需要指定对应的 channelid

方法3:使用SQL语句灵活调用

fieldlist 标签无法满足复杂需求时,可以直接使用SQL语句进行查询,这种方式非常灵活,但需要你具备一定的SQL基础。

适用场景

  • 调用非当前模型的数据。
  • 进行复杂的关联查询。
  • 在特定位置(如首页侧边栏)调用某个栏目的特定字段。

示例: 想在首页调用所有“产品”模型(假设模型ID为2)的文章,并显示其自定义字段 product_spec (产品规格)。

  1. 找到你的自定义字段在数据库中的表名

    • 登录你的网站数据库。
    • 找到 dede_archives 表,这是文章主表。
    • 你的自定义字段通常存储在一个附加表中,表名一般为 dede_addonXXXX 是你的模型ID,模型ID为2的附加表就是 dede_addon2
    • dede_addon2 表中,你会看到你创建的字段,如 product_spec
  2. 编写SQL语句并调用

在首页模板(index.htm)或其他可以使用PHP代码的文件中,使用 {dede:sql}

<h2>最新产品规格</h2>
<ul>
    {dede:sql sql="SELECT a.title, b.product_spec FROM dede_archives AS a LEFT JOIN dede_addon2 AS b ON a.id = b.aid WHERE a.channel = 2 ORDER BY a.pubdate DESC LIMIT 10"}
        <li>
            <a href="/plus/view.php?aid=[field:id/]">[field:title/]</a>
            <span>规格:[field:product_spec/]</span>
        </li>
    {/dede:sql}
</ul>

语法说明

  • {dede:sql sql='完整的SQL语句'/}:执行自定义SQL查询。
  • SELECT a.title, b.product_spec:选择需要显示的字段,a 代表 dede_archives 表,b 代表 dede_addon2 表。
  • FROM dede_archives AS a LEFT JOIN dede_addon2 AS b ON a.id = b.aid:将主表和附加表通过文章ID (aid) 关联起来。
  • WHERE a.channel = 2:筛选出模型ID为2(产品模型)的文章。
  • [field:字段名/]:在 {dede:sql} 循环内部,使用 [field:] 来调用SQL查询结果中的字段。

不同字段类型的调用注意事项

  1. 单选按钮/下拉列表: 字段存储的是选项的 value 值,如果你想显示选项的 text),需要使用 function 进行转换。

    • 假设你有一个字段 level,选项为:value='1' text='入门'value='2' text='进阶'
    • 页调用:{dede:field.level/} 会显示 12
    • 要显示“入门”或“进阶”,你需要一个自定义函数来处理,这个函数会读取字段的配置文件,将value映射为text,通常这类功能需要二次开发或使用现成的插件。
  2. 多选复选框: 字段存储的是多个选项的 value 值,通常用逗号 分隔,如 1,3

    • 直接调用 {dede:field.checkbox/} 会显示 1,3
    • 要将其转换为“选项A,选项C”这样的格式,同样需要自定义函数来解析和替换。
  3. 图片/附件

    • 如果字段类型是“图片”,存储的是图片路径,直接调用即可:<img src="{dede:field.image_url/}" alt="">
    • 如果字段类型是“附件”,存储的是附件路径,可以用 <a> 标签调用:<a href="{dede:field.attachment_url/}" target="_blank">下载附件</a>

| 调用位置 | 核心标签 | 关键步骤/示例 | | :--- | :--- | :--- |页 | {dede:field.字段名/} | 最简单,直接调用。 | | | {dede:field.字段名 function='函数'/} | 对内容进行处理,如去除HTML。 | | 列表页 | {dede:list} / {dede:arclist} | 必须在 array 属性中声明字段名。 | | | | {dede:list array='字段1,字段2'} ... [field:字段1/] ... {/dede:list} | | 任意位置** | {dede:sql} | 编写SQL语句,关联主表和附加表,灵活但复杂。 | | | | {dede:sql sql='SELECT...'} ... [field:字段名/] ... {/dede:sql} |

希望这份详细的指南能帮助你完全掌握在织梦中调用自定义字段的方法!如果遇到具体问题,可以提供你的字段名称、类型和想要调用的页面,我可以给出更精确的解决方案。

-- 展开阅读全文 --
头像
C语言switch中break为何必须用?
« 上一篇 01-14
织梦图标为何出现在网站标题上?
下一篇 » 01-14
取消
微信二维码
支付宝二维码