菜鸟科技网

织梦首页如何调用字段?

在织梦CMS(DedeCMS)中,调用首页字段是网站内容展示的核心操作,掌握不同场景下的字段调用方法,能灵活构建首页布局,以下从基础调用、高级调用、常见问题及解决方案等方面,详细解析织梦首页字段的调用技巧。

织梦首页如何调用字段?-图1
(图片来源网络,侵删)

基础字段调用:常用标签与参数

织梦首页字段调用主要通过{dede:arclist}{dede:channel}等标签实现,针对不同内容类型需选择对应标签。

文章列表字段调用

{dede:arclist}是调用文章列表的核心标签,常用字段及参数如下:调用[field:title/],默认调用标题全文,可通过function函数截取,如[field:title function='cn_substr(@me,30)'/](截取前30字符),调用[field:description function='cn_substr(@me,80)'/],调用文章摘要并截取80字符,未填写摘要时默认从内容提取。

  • 时间调用[field:pubdate function='strftime("%Y-%m-%d",@me)'/],格式化发布时间为“年-月-日”。
  • 点击量调用[field:click/],直接调用文章点击次数,需在后台“系统参数-核心设置”中开启“启用文档点击计数”。
  • 缩略图调用
    <img src="[field:litpic/]" alt="[field:title/]">  

    若需判断缩略图是否存在,可结合if语句:

    {dede:arclist}  
    [field:array runphp='yes']  
    if(@me['litpic'] != '/images/defaultpic.gif'){  
        @me = '<img src="'.$_row['litpic'].'" alt="'.$_row['title'].'">';  
    }else{  
        @me = '<img src="/images/none.jpg" alt="'.$_row['title'].'">';  
    }  
    [/field:array]  
    {/dede:arclist}

栏目导航字段调用

{dede:channel}用于调用栏目列表,基础调用如下:

织梦首页如何调用字段?-图2
(图片来源网络,侵删)
  • 栏目名称[field:typename/]
  • 栏目链接[field:typeurl/]
  • 栏目描述[field:description/]
    示例:调用顶级栏目(typeid='0')及子栏目:
    {dede:channel type='top' row='8'}  
    <a href="[field:typeurl/]">[field:typename/]</a>  
    {/dede:channel}  
    {dede:channel typeid='2' type='son' row='5'}  
    <a href="[field:typeurl/]">[field:typename/]</a>  
    {/dede:channel}

自定义字段调用:扩展内容展示

当默认字段无法满足需求时,需调用自定义字段(需在后台“模型-管理字段”中添加并勾选“使字段在列表页可用”)。

单行文本/多行文本字段

假设添加自定义字段author(作者)、content_intro简介),调用方式:

{dede:arclist}  
作者:[field:author/]  
简介:[field:content_intro/]  
{/dede:arclist}

图片类字段

若添加字段product_img(产品图片),需注意路径处理:

{dede:arclist}  
<img src="[field:product_img/]" alt="[field:title/]">  
{/dede:arclist}

若图片字段存储相对路径,需补全域名:[field:product_img function='str_replace("../", "https://www.example.com/", @me)'/]

织梦首页如何调用字段?-图3
(图片来源网络,侵删)

枚举/单选字段

若字段status(状态)选项为“热销|新品|推荐”,调用时需显示对应文字:

{dede:arclist}  
[field:status runphp='yes']  
$types = array('热销', '新品', '推荐');  
$option = explode('|', @me);  
@me = $types[$option[0]-1];  
[/field:status]  
{/dede:arclist}

调用自定义字段时的参数说明

  • 底层模板:通过[field:自定义字段名/]直接调用,若需格式化,可结合function,如[field:price function='number_format(@me,2)'/](保留两位小数)。
  • 关联模型:若自定义字段属于附加表(如商品模型),需在{dede:arclist}中添加addfields='字段名1,字段名2'参数,否则无法调用。

综合案例:首页多模块字段调用

假设首页包含“推荐文章”“热门产品”“最新资讯”三个模块,具体调用如下:

推荐文章模块(调用带摘要和缩略图的文章)

{dede:arclist flag='c' row='4' titlelen='30' descriptionlen='80'}  
<div class="article-item">  
  <img src="[field:litpic/]" alt="[field:title/]">  
  <h3><a href="[field:arcurl/]">[field:title/]</a></h3>  
  <p>[field:description function='cn_substr(@me,80)'/]...</p>  
  <span class="time">[field:pubdate function='strftime("%m-%d",@me)'/]</span>  
</div>  
{/dede:arclist}

热门产品模块(调用自定义字段“价格”和“标签”)

{dede:arclist channelid='3' row='3' addfields='price,tag'}  
<div class="product-item">  
  <img src="[field:litpic/]" alt="[field:title/]">  
  <h4>[field:title/]</h4>  
  <p>价格:¥[field:price function='number_format(@me,2)'/]</p>  
  <span>标签:[field:tag/]</span>  
</div>  
{/dede:arclist}

channelid='3'需替换为产品模型所在的栏目ID,addfields用于指定调用自定义字段。

最新资讯模块(调用子栏目文章)

{dede:channelartlist typeid='5,6'}  
<h2>{dede:field name='typename'/}</h2>  
<ul>  
  {dede:arclist row='5'}  
  <li><a href="[field:arcurl/]">[field:title/]</a></li>  
  {/dede:arclist}  
</ul>  
{/dede:channelartlist}

typeid='5,6'指定资讯类子栏目ID,{dede:channelartlist}可循环调用子栏目及其文章。

常见问题与解决方案

自定义字段调用不显示

  • 原因:未勾选“使字段在列表页可用”或未在标签中添加addfields参数。
  • 解决:进入后台“模型-管理字段”,编辑自定义字段,勾选“列表页使能”;在{dede:arclist}中添加addfields='字段名',如addfields='author,price'

缩略图调用默认图片

  • 原因:文章未上传缩略图,织梦默认调用/images/defaultpic.gif
  • 解决:通过if语句判断并替换默认图片,如基础调用中的示例代码;或修改系统文件include/helpers/archive.helper.php,找到GetMInfos函数,修改默认图片路径。

时间格式显示异常

  • 原因:未使用function函数格式化时间,或时区设置错误。
  • 解决:通过[field:pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/]格式化;检查后台“系统参数-核心设置”中的“时间格式”配置。

相关问答FAQs

Q1: 织梦首页如何调用指定栏目的自定义字段?
A: 需在{dede:arclist}标签中添加typeid='栏目ID'addfields='自定义字段名'参数,例如调用栏目ID为“10”的“产品简介”字段:

{dede:arclist typeid='10' addfields='product_intro' row='5'}  
[field:product_intro/]  
{/dede:arclist}

Q2: 调用文章列表时,如何让标题鼠标悬停显示完整内容?
A: 使用title属性实现,在标题标签中添加[field:title/]作为title值:

<a href="[field:arcurl/]" title="[field:title/]">[field:title function='cn_substr(@me,20)'/]</a>

这样鼠标悬停时会显示完整标题,同时标题文字超过20字符时自动截取。

分享:
扫描分享到社交APP
上一篇
下一篇