## 一、标签概述
mtindexlists 是多商户扩展标签,用于获取指定商家的 详细信息 、 商品分类列表 以及 对应商品数据 。该标签特别适用于商家详情页、店铺主页等场景。
## 三、标签语法
### 基本语法
```
{eyou:mtindexlists merchant_id="商家ID" typeid="分类ID" id="变量名" key="索引名" empty="空数据提示"}
<!-- 循环内容 -->
{$field.字段名}
{/eyou:mtindexlists}
```
### 闭合标签
这是一个 闭合标签 ,必须有开始和结束标签。
## 四、参数说明
### 1. 必需参数
参数 说明 示例
merchant_id 商家ID (必须) merchant_id="1" 或 merchant_id="$merchant_id"
### 2. 可选参数
参数 默认值 说明
typeid 0 商品分类ID, 0 表示获取所有分类商品
id field 循环变量名,在标签内通过 {$field.字段名} 访问
key i 循环索引变量名,通过 {$i} 访问(从1开始)
empty 空字符串 无数据时显示的提示内容
注意 :虽然属性定义只列出了 merchant_id, typeid, id ,但解析方法实际支持 key 和 empty 参数。
## 五、返回数据结构
### 1. 商家基本信息 ({$field})
字段名 类型 说明
merchant_id 整数 商家ID
merchant_name 字符串 商家名称
merchant_pic 数组 商家图片集,包含 merchant_logo
merchant_content 字符串 商家介绍内容
merchant_contact 数组 商家联系地址信息
merchant_url 字符串 商家主页URL(自动生成)
typeid 整数 当前选中的分类ID
### 2. 商家地址信息 ({$field.merchant_contact})
字段名 类型 说明
contactProvince 字符串 省份
contactCity 字符串 城市
contactDistrict 字符串 区县
contactAddress 字符串 完整地址(省+市+区+详细地址)
### 3. 商品分类列表 ({$field.arctype})
字段名 类型 说明
id 整数 分类ID, 0 表示"全部"
typename 字符串 分类名称
url 字符串 该分类下的商家商品列表URL
### 4. 商品列表 ({$field.product})
字段名 类型 说明
aid 整数 商品文档ID
title 字符串 商品标题
litpic 字符串 商品缩略图URL(已处理)
arcurl 字符串 商品详情页URL(已生成)
users_price 浮点数 商品价格
typeid 整数 商品所属分类ID
## 六、使用示例
### 示例1:基本商家信息展示
```
{eyou:mtindexlists merchant_id="1" id="merchant"}
<div class="merchant-card">
<!-- 商家Logo和名称 -->
<img src="{$merchant.merchant_pic.merchant_logo}" alt="{$merchant.merchant_name}" />
<h2>{$merchant.merchant_name}</h2>
<!-- 商家地址 -->
<p class="address">
{$merchant.merchant_contact.contactAddress}</p>
<!-- 商家介绍 -->
<div class="description"> {$merchant.merchant_content}</
div>
</div>
{/eyou:mtindexlists}
```
### 示例2:商品分类导航 + 商品列表
```
{eyou:mtindexlists merchant_id="$merchant_id" typeid="$typeid" empty="暂无商品"}
<!-- 分类导航 -->
<div class="category-tabs">
{eyou:volist name="$field.arctype"}
<a href="{$field.arctype.url}" {eyou:eq name='$field.typeid' value='$field.arctype.id'}class="active"{/eyou:eq}>
{$field.arctype.typename}
</a>
{/eyou:volist}
</div>
<!-- 商品列表 -->
<div class="product-grid">
{eyou:volist name="$field.product"}
<div class="product-item">
<a href="{$field.product.arcurl}">
<img src="{$field.product.litpic}" alt="{$field.product.title}" />
<h3>{$field.product.title}</h3>
<p class="price">¥{$field.product.users_price}</p>
</a>
</div>
{/eyou:volist}
</div>
{/eyou:mtindexlists}
```
### 示例3:在商品详情页显示商家信息
```
<!-- 假设当前商品文档包含 merchant_id
字段 -->
{eyou:mtindexlists merchant_id="$field.merchant_id”}
<div class="merchant-info-box">
<a href="{$field.merchant_url}"
class="merchant-link">
<span
class="merchant-icon"></
span>
<span class="merchant-name">
{$field.merchant_name}</
span>
</a>
<p>商家地址:{$field.merchant_contact.contactAddress}
</p>
<!-- 显示商家的其他商品 -->
<h4>该商家的其他商品:</h4>
<div class="other-products">
{eyou:volist name="$field.product" limit="4"}
<a href="{$field.product.
arcurl}">{$field.product.
title}</a>
{/eyou:volist}
</div>
</div>
{/eyou:mtindexlists}
```
## 七、高级用法
### 1. 动态商家ID
```
<!-- 从URL参数获取商家ID -->
{eyou:mtindexlists merchant_id="{:input('merchant_id/d', 0)}"}
<!-- 从当前文档字段获取 -->
{eyou:mtindexlists merchant_id="$eyou.field.merchant_id"}
<!-- 使用变量 -->
{eyou:mtindexlists merchant_id="$merchant_id"}
```
### 2. 嵌套其他标签
```
{eyou:mtindexlists merchant_id="1" id="shop"}
<!-- 在商家循环内嵌套商品循环 -->
{eyou:volist name="$shop.product" id="goods"}
<div class="goods-item">
{eyou:eq name='$goods.typeid' value='5'}
<span class="hot-tag">热销</span>
{/eyou:eq}
<a href="{$goods.arcurl}">{$goods.title}</a>
</div>
{/eyou:volist}
{/eyou:mtindexlists}
```
### 3. 分页集成
```
<!-- 注意:该标签本身不支持分页,但可以结
合其他分页方案 -->
{eyou:mtindexlists merchant_id="1"
typeid="{$typeid}"}
<!-- 显示商品总数 -->
<p>共 {eyou:count name="$field.
product" /} 件商品</p>
<!-- 手动分页 -->
{eyou:volist name="$field.
product" offset="0" limit="12"}
<!-- 显示前12个商品 -->
{/eyou:volist}
{/eyou:mtindexlists}
```
## 八、注意事项
### 1. 数据过滤规则
- 商家状态 :只查询 audit_status=2 (审核通过)、 merchant_status=1 (正常营业)、 is_del=0 (未删除)的商家
- 商品状态 :只查询 status=1 (已发布)、 arcrank>=0 (权限正常)、 is_del=0 (未删除)的商品
- 分类显示 :只显示有商品归属的分类,空分类不显示
### 2. URL生成规则
- 商家主页URL : url('home/MultiMerchant/merchant_index', ['merchant_id'=>$merchant_id])
- 分类URL : url('home/MultiMerchant/merchant_index', ['merchant_id'=>$merchant_id, 'typeid'=>$分类ID])
- 商品URL :通过 arcurl('home/Product/view', $archivesData) 生成
### 3. 图片处理
所有图片URL都经过:
1. get_default_pic() - 获取默认图片
2. handle_subdir_pic() - 处理子目录图片路径
确保图片链接始终有效。
### 4. 性能建议
- 如果只需要商家基本信息,不需要商品列表,建议使用更轻量级的标签
- 商品数量多时,考虑结合分页标签使用
- 合理使用 typeid 参数缩小查询范围
## 九、错误排查
### 1. 无数据显示
```
{eyou:mtindexlists merchant_id="1"
empty="<p class='no-data'>暂无商家信
息</p>"}
<!-- 正常内容 -->
{/eyou:mtindexlists}
```
### 2. 调试商家ID
```
<!-- 先确认商家ID是否正确 -->
当前商家ID:{$eyou.field.merchant_id}
{eyou:mtindexlists merchant_id="
{$eyou.field.merchant_id}"}
商家名称:{$field.merchant_name}
{/eyou:mtindexlists}
```
### 3. 检查数据字段
```
<!-- 使用 dump 查看数据结构(开发环境)
-->
{eyou:mtindexlists merchant_id="1"}
{eyou:dump var="$field" /}
{/eyou:mtindexlists}
```
## 十、与您之前的修改关联
您之前在 view_product_mtshop.htm 中优化的商家链接:
```
<a href="{$eyou.field.merchant.
merchant_url}"
class="merchant-link">
<span class="merchant-icon"></
span>{$eyou.field.merchant.
merchant_name}
</a>
```
可以使用 mtindexlists 标签获取更完整的商家信息:
```
{eyou:mtindexlists merchant_id="
{$eyou.field.merchant_id}"}
<a href="{$field.merchant_url}"
class="merchant-link">
<span class="merchant-icon"></
span>{$field.merchant_name}
</a>
<p class="merchant-address">{$field.
merchant_contact.contactAddress}</p>
{/eyou:mtindexlists}
```
通过以上介绍,您可以充分利用 mtindexlists 标签在易优CMS中实现丰富的多商户功能展示。