当前位置: 首页 > news >正文

[fastadmin] 第三十四篇 FastAdmin 商城模块标签使用详解

FastAdmin 商城模块标签使用详解

一、标签基本语法

1.1 基础语法格式

{shop:goodslist flag="参数值" id="变量名" row="数量"}<!-- 循环内容 -->
{/shop:goodslist}

1.2 常用参数说明

  • flag: 商品标记筛选
  • id: 循环变量名
  • row: 显示数量

1.3 flag 参数配置

在系统配置内,也可以自己定义配置文件和项目
[fastadmin] 第三十四篇 FastAdmin 商城模块标签使用详解

具体代码实现在这里:

[fastadmin] 第三十四篇 FastAdmin 商城模块标签使用详解

[fastadmin] 第三十四篇 FastAdmin 商城模块标签使用详解

二、标签使用示例

2.1 基础用法

<!-- 获取推荐商品 -->
{shop:goodslist flag="recommend" id="goods" row="4"}<div class="goods-item"><img src="{$goods.image|cdnurl}" alt="{$goods.title}"><h3>{$goods.title}</h3><p>¥{$goods.price}</p></div>
{/shop:goodslist}

2.2 多条件筛选

<!-- 获取推荐且热销的商品 -->
{shop:goodslist flag="recommend,hot" id="goods" row="4"}<!-- 循环内容 -->
{/shop:goodslist}

2.3 常用 flag 参数值

  • recommend: 推荐商品
  • hot: 热销商品
  • new: 新品
  • discount: 特价商品
  • flag: 可组合使用,用逗号分隔

三、代码实现原理

3.1 标签解析位置

文件路径:application/common/taglib/Shop.php

class Shop extends TagLib
{protected $tags = ['goodslist' => ['attr' => 'flag,id,row', 'close' => 1]];public function tagGoodslist($tag, $content){$id = $tag['id'];$empty = isset($tag['empty']) ? $tag['empty'] : '';$key = !empty($tag['key']) ? $tag['key'] : 'i';$mod = isset($tag['mod']) ? $tag['mod'] : '2';// 处理参数$params = [];foreach ($tag as $k => & $v) {$origin = $v;if (in_array($k, ['category', 'condition', 'tags'])) {$this->autoBuildVar($v);}$v = $origin == $v ? '"' . $v . '"' : $v;$params[] = '"' . $k . '"=>' . $v;}// 生成查询代码$var = Random::alnum(10);$parse = '<?php ';$parse .= '$__' . $var . '__ = \addons\shop\model\Goods::getGoodsList([' . implode(',', $params) . ']);';$parse .= ' ?>';$parse .= '{volist name="$__' . $var . '__" id="' . $id . '" empty="' . $empty . '" key="' . $key . '" mod="' . $mod . '"}';$parse .= $content;$parse .= '{/volist}';$parse .= '{php}$__LASTLIST__=$__' . $var . '__;{/php}';return $parse;}
}

3.2 商品查询实现

文件路径:addons/shop/model/Goods.php

namespace addons\shop\model;class Goods extends Model
{public static function getGoodsList($params){$query = self::where('status', 'normal');// 处理 flag 参数if (isset($params['flag'])) {$flags = explode(',', $params['flag']);foreach ($flags as $flag) {$query->where($flag, 1);}}// 处理显示数量if (isset($params['row'])) {$query->limit(intval($params['row']));}return $query->select();}
}

四、标签渲染流程

  1. 模板解析

    • 识别 {shop:goodslist} 标签
    • 调用 tagGoodslist 方法处理
  2. 参数处理

    • 解析标签参数(flag、row等)
    • 转换为查询条件
  3. 数据查询

    • 调用 Goods::getGoodsList
    • 根据条件筛选商品
  4. 结果渲染

    • 循环输出商品数据
    • 替换模板变量

五、使用注意事项

  1. flag 参数组合

    • 多个标记使用逗号分隔
    • 组合查询是"与"的关系
  2. 性能优化

    • 合理设置 row 数量
    • 适当使用缓存
  3. 数据完整性

    • 确保商品字段完整
    • 处理空值情况

六、实际应用案例

6.1 首页推荐商品

<div class="recommend-section">{shop:goodslist flag="recommend" id="goods" row="4"}<div class="goods-item"><a href="{$goods.url}"><img src="{$goods.image|cdnurl}" alt="{$goods.title}"><div class="info"><h3>{$goods.title}</h3><div class="price"><span class="current">¥{$goods.price}</span><span class="original">¥{$goods.marketprice}</span></div></div></a></div>{/shop:goodslist}
</div>

6.2 热销新品组合

<div class="hot-new-section">{shop:goodslist flag="hot,new" id="goods" row="6"}<div class="goods-card"><!-- 商品展示内容 --></div>{/shop:goodslist}
</div>

总结

FastAdmin 商城模块的标签系统提供了灵活的商品列表获取方式,通过简单的标签语法就能实现复杂的商品筛选和展示功能。理解其实现原理对于二次开发和功能扩展都很有帮助。


这篇博客详细介绍了 FastAdmin 商城模块标签的使用方法和实现原理,希望对你有帮助!如果需要补充或修改,请告诉我。

http://www.lryc.cn/news/518928.html

相关文章:

  • (2024,LLaVA-Bench (Wilder),LLaVA-NeXT,LLaMA3,Qwen-1.5,语言模型扩展)
  • IPEX-LLM开发项目过程中的技术总结和心得
  • HTTP/HTTPS ②-Cookie || Session || HTTP报头
  • 【软考】软件设计师
  • K8s Pod OOMKilled,监控却显示内存资源并未打满
  • C++ 原子变量
  • linux网络 | http结尾、理解长连接短链接与cookie
  • 金融项目实战 02|接口测试分析、设计以及实现
  • 二、智能体强化学习——深度强化学习核心算法
  • Mysql--架构篇--存储引擎InnoDB(内存结构,磁盘结构,存储结构,日志管理,锁机制,事务并发控制等)
  • JVM实战—13.OOM的生产案例
  • client-go 的 QPS 和 Burst 限速
  • 使用docker-compose安装Redis的主从+哨兵模式
  • 数据结构(Java版)第七期:LinkedList与链表(二)
  • ant-design-vue 1.X 通过id获取a-input组件失败
  • Flutter:吸顶效果
  • MATLAB语言的数据类型
  • priority_queue优先队列
  • HarmonyOS 鸿蒙Next 预览pdf文件
  • vscode开启调试模式,结合Delve调试器调试golang项目详细步骤
  • 身份鉴权(PHP)(小迪网络安全笔记~
  • 【git】-初始git
  • CSS 盒模型
  • [0405].第05节:搭建Redis主从架构
  • 6 分布式限流框架
  • sosadmin相关命令
  • 关于大数据的基础知识(四)——大数据的意义与趋势
  • 【EI,Scopus检索 | 往届均已检索见刊】第四届智能系统、通信与计算机网络国际学术会议(ISCCN 2025)
  • smplx blender插件笔记
  • 【算法】移除元素