dede产品列表页代码如何调用与修改?

99ANYc3cd6
预计阅读时长 25 分钟
位置: 首页 DEDE建站 正文

下面我将为你详细拆解产品列表页的代码构成,并提供一个完整的、可自定义的模板示例。

dede产品列表页代码
(图片来源网络,侵删)

核心文件构成

一个典型的DedeCMS产品列表页涉及以下三个核心文件:

  1. 列表模板文件: list_product.htm

    • 这是你在后台设置栏目时指定的列表页模板。
    • 路径:/templets/你的模板文件夹/ (/templets/default/list_product.htm)
    • 作用: 负责页面的HTML结构、CSS样式和调用DedeCMS标签来显示产品列表、分页等信息。这是你需要主要修改和编写的文件。
  2. 列表栏目设置: 在后台的“栏目管理”中设置

    • 当你创建一个“产品”栏目时,你需要指定它的列表模板为 list_product.htm
    • 作用: 告诉DedeCMS使用哪个模板文件来生成这个栏目的列表页,并定义列表页的标题、关键词、描述等SEO信息。
  3. 列表动态页面生成文件: list.php

    dede产品列表页代码
    (图片来源网络,侵删)
    • 这是一个PHP程序文件,位于网站根目录。
    • 作用: 当用户访问一个列表页链接(如 http://yourdomain.com/product/list_1.html)时,这个文件会接收请求,根据栏目ID(如 1)去数据库中读取对应的产品数据,然后加载你在栏目中指定的 list_product.htm 模板,将数据填充进去,最终生成HTML页面并返回给用户。

总结一下流程: 用户访问 list_1.html -> 服务器执行 list.php -> list.php 读取数据库和 list_product.htm 模板 -> 生成最终的HTML页面 -> 返回给用户。


list_product.htm 模板代码详解与示例

下面是一个功能完整、结构清晰的产品列表页模板代码,你可以基于这个模板进行修改,以适应你的设计需求。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">{dede:field.title/}_{dede:global.cfg_webname/}</title>
    <meta name="keywords" content="{dede:field.keywords/}" />
    <meta name="description" content="{dede:field.description function='html2text(@me)'/}" />
    <link rel="stylesheet" href="/templets/default/css/style.css"> <!-- 引入你的CSS文件 -->
</head>
<body>
    <!-- 顶部导航等公共部分 (通常使用 {dede:include filename='head.htm' /} 引入) -->
    {dede:include filename="head.htm"/}
    <!-- 主要内容区 -->
    <div class="main-container">
        <!-- 左侧产品分类导航 -->
        <div class="sidebar">
            <h3>产品分类</h3>
            {dede:channelartlist typeid='0' currentstyle='active'}
            <dl>
                <dt><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></dt>
                <dd>
                    {dede:channel type='son' noself='yes'}
                    <a href="[field:typelink/]">[field:typename/]</a>
                    {/dede:channel}
                </dd>
            </dl>
            {/dede:channelartlist}
        </div>
        <!-- 右侧产品列表 -->
        <div class="content-list">
            <!-- 当前栏目位置 (面包屑导航) -->
            <div class="breadcrumb">
                {dede:field name='position'/}
            </div>
            <!-- 列表标题和描述 -->
            <h1 class="list-title">{dede:field.title/}</h1>
            <p class="list-desc">{dede:field.description/}</p>
            <!-- 产品列表内容 -->
            <ul class="product-grid">
                {dede:list pagesize='12' titlelen='40'}
                <!--
                  {dede:list} 是循环标签,用于列出当前栏目的文章(产品)。
                  pagesize='12' 表示每页显示12条。
                  titlelen='40' 表示标题最多显示40个字符。
                -->
                <li class="product-item">
                    <!-- 产品缩略图,如果为空则显示默认图片 -->
                    <a href="[field:arcurl/]">
                        <img src="[field:litpic/]" alt="[field:title/]" onerror="this.src='/templets/default/images/default.jpg';">
                    </a>
                    <div class="product-info">
                        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
                        <!-- 如果产品模型有价格字段,可以这样调用 -->
                        <!-- <p class="price">价格:¥[field:price/]</p> -->
                        <p class="summary">[field:info function='cn_substr(@me, 100)'/]...</p> <!-- 产品摘要,截取100字符 -->
                    </div>
                </li>
                {/dede:list}
            </ul>
            <!-- 分页条 -->
            <div class="pagination">
                {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
            </div>
        </div>
    </div>
    <!-- 底部版权等公共部分 (通常使用 {dede:include filename='footer.htm' /} 引入) -->
    {dede:include filename="footer.htm"/}
</body>
</html>

核心标签详解

在上面的代码中,我们使用了几个关键的DedeCMS标签,下面是它们的详细说明:

{dede:list}

这是列表页的核心循环标签,用于遍历当前栏目下的所有内容(文章/产品)。

dede产品列表页代码
(图片来源网络,侵删)
  • 常用属性:
    • pagesize='数字': 设置每页显示多少条记录。pagesize='12'
    • titlelen='数字': 设置标题显示的字符长度。titlelen='30'
    • infolen='数字': 设置摘要(描述)显示的字符长度。
    • orderway='asc/desc': 排序方式。asc 为升序(默认),desc 为降序。

{dede:pagelist}

用于生成分页导航链接。

  • 常用属性:
    • listsize='数字': 设置页码显示的个数。listsize='4' 会显示 ... 3 4 [5] 6 7 ... 这样的效果。
    • listitem='...': 设置分页条显示哪些项目。
      • info: 显示 "共几页" 等信息。
      • index: 显示首页。
      • pre: 显示上一页。
      • next: 显示下一页。
      • end: 显示尾页。
      • pageno: 显示页码。

{dede:field}

用于获取当前栏目的某个字段信息。

  • field.title: 栏目标题。
  • field.keywords: 栏目关键词。
  • field.description: 栏目描述。
  • field.position: 获取栏目位置的面包屑导航代码,首页 > 产品中心 > 手机

{dede:channelartlist}

用于生成带有当前样式和子栏目的分类导航,非常适合用在列表页的侧边栏。

  • typeid='0': 从顶级栏目开始,如果只想显示某个栏目的子栏目,就写上它的ID,如 typeid='5'
  • currentstyle='...': 为当前栏目所在的 <a> 标签设置样式。currentstyle='class="active"',会生成 <a href="..." class="active">栏目名</a>

内部循环变量 (在 {dede:list} 内部使用)

这些变量用于获取每条产品(文章)的具体信息。

  • [field:arcurl/]: 文章的完整链接地址。
  • [field:title/]: 文章标题。
  • [field:litpic/]: 文章的缩略图地址。
  • [field:info/]: 文章的内容(正文)。
  • [field:description/]: 文章的摘要(描述)。
  • [field:pubdate function='strftime("%Y-%m-%d", @me)'/]: 发布日期,function 可以用来格式化日期。

常见问题与自定义技巧

如何显示产品的价格?

默认的“文章模型”没有价格字段,你需要:

  1. 在后台“核心” -> “内容模型管理” -> “添加新模型”,创建一个“产品”模型,并添加一个“价格”字段(建议使用“数字”类型)。
  2. 将你的产品栏目设置为使用这个新的“产品”模型。
  3. list_product.htm 中,使用 [field:price/] 来调用价格,注意:如果某个产品没有填写价格,可能需要用 if 标签判断一下是否显示。

如何修改列表的排序方式?

{dede:list} 标签中添加 orderway='desc' 可以实现按发布时间倒序排列,如果需要按其他字段(如价格)排序,你需要:

  1. 确保该字段在模型中存在。
  2. 在后台“系统” -> “系统基本参数” -> “核心设置” 中,找到 “列表页排序选项”,添加你的字段,如 价格 asc,desc
  3. 在列表页模板中,用户就可以通过点击表头等方式来切换排序了(这需要前端JS配合,比较复杂)。

如何调用子栏目的产品?

默认 {dede:list} 只调用当前栏目的内容,如果你想调用当前栏目及其所有子栏目的产品,可以使用 {dede:arclist}

{dede:arclist typeid='顶级栏目ID' channelid='你的产品模型ID' row='12' titlelen='40'}
    <!-- 循环内容与 {dede:list} 内部一样 -->
    <li>
        <a href="[field:arcurl/]"><img src="[field:litpic/]" alt="[field:title/]"></a>
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    </li>
{/dede:arclist}

希望这份详细的指南能帮助你理解和修改DedeCMS的产品列表页代码!

-- 展开阅读全文 --
头像
dede淘宝客模板如何搭建与优化?
« 上一篇 前天
dede站点设置为何保存失败?
下一篇 » 前天

相关文章

取消
微信二维码
支付宝二维码