list_product.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. {include file="header" /}
  2. <link rel="stylesheet" href="/assets/xtu/vendor/swiper-bundle.min.css">
  3. <link rel="stylesheet" href="/assets/xtu/page-compare.css?v=20260422-1749">
  4. <link rel="stylesheet" href="/assets/xtu/product-list.css?v=20260625-hero-isb">
  5. <main class="product-channel-page product-list-page">
  6. <section class="product-list-top-products" aria-label="{:cms_t('product_quick_nav','产品快捷导航')}">
  7. <div class="product-list-top-products-inner">
  8. <div class="product-list-top-products-row">
  9. {yzn module="cms" action="lists" catid="$catid" cache="3600" order="listorder desc,id desc" num="12" return="topProducts" moreinfo="1"}
  10. {volist name="topProducts" id="topProduct"}
  11. <a class="product-list-top-product" href="{$topProduct.url}" title="{$topProduct.title}">
  12. <span class="product-list-top-product-media">
  13. <img src="{if !empty($topProduct.thumb)}{$topProduct.thumb}{elseif !empty($topProduct.thumb2) /}{$topProduct.thumb2}{/if}" alt="{$topProduct.title}">
  14. </span>
  15. <span class="product-list-top-product-title">{$topProduct.title}</span>
  16. {if !empty($topProduct.title1)}<span class="product-list-top-product-tag">{$topProduct.title1}</span>{/if}
  17. </a>
  18. {/volist}
  19. {/yzn}
  20. <a class="product-list-top-product product-list-top-product-utility" href="{:getCategory(41,'url')}" title="{:cms_t('product_compare','产品对比')}">
  21. <span class="product-list-top-product-media"><i class="bi bi-columns-gap"></i></span>
  22. <span class="product-list-top-product-title">{:cms_t('product_compare','产品对比')}</span>
  23. </a>
  24. {if !empty($currentRegionShopUrl)}
  25. <a class="product-list-top-product product-list-top-product-utility" href="{$currentRegionShopUrl}" target="_blank" rel="noopener noreferrer" title="{:cms_t('buy_now','立即购买')}">
  26. <span class="product-list-top-product-media"><i class="bi bi-bag"></i></span>
  27. <span class="product-list-top-product-title">{:cms_t('buy_now','立即购买')}</span>
  28. </a>
  29. {/if}
  30. </div>
  31. </div>
  32. </section>
  33. <section class="product-channel-hero">
  34. <div class="content-1300-wrap text-center">
  35. <h1>{if getCategory($catid,'catname')}{:getCategory($catid,'catname')}{else /}{$category.catname|default=''}{/if}</h1>
  36. <p>{if getCategory($catid,'description')}{:getCategory($catid,'description')}{elseif !empty($category.description) /}{$category.description}{else /}{:cms_t('product_channel_default_desc','探索适合你的产品,了解核心亮点、适用场景与支持服务。')}{/if}</p>
  37. </div>
  38. </section>
  39. {yzn module="cms" action="lists" catid="$catid" flag="6" cache="3600" order="listorder desc,id desc" num="6" return="bannerData" moreinfo="1"}
  40. {if !empty($bannerData)}
  41. <section class="product-recommend-banner-section">
  42. <div class="swiper product-list-hero-swiper" id="productRecommendSwiper">
  43. <div class="swiper-wrapper">
  44. {volist name="bannerData" id="vo"}
  45. {if !empty($vo.thumb1)}
  46. <div class="swiper-slide product-list-hero-slide" data-is-b="{$vo.is_b|default='1'}">
  47. <div class="product-list-hero-media">
  48. <img src="{$vo.thumb1}" alt="{$vo.title}">
  49. </div>
  50. <div class="product-list-hero-overlay"></div>
  51. <div class="content-1300-wrap product-list-hero-inner">
  52. <div class="product-list-hero-copy">
  53. {if !empty($vo.title1)}<span class="product-list-hero-subtitle">{$vo.title1}</span>{/if}
  54. <h2 class="product-list-hero-title">{$vo.title}</h2>
  55. {if !empty($vo.title2)}
  56. <p class="product-list-hero-slogan">{$vo.title2}</p>
  57. {elseif !empty($vo.description) /}
  58. <p class="product-list-hero-slogan">{$vo.description|strip_tags|mb_substr=0,120,'utf-8'}</p>
  59. {/if}
  60. <div class="product-list-hero-actions">
  61. <a href="{$vo.url}" class="product-list-hero-btn">
  62. {:cms_t('learn_more','了解更多')}
  63. <i class="bi bi-chevron-right"></i>
  64. </a>
  65. {if !empty($vo.shopurl)}
  66. <a href="{$vo.shopurl}" class="product-list-hero-btn" target="_blank">
  67. {:cms_t('buy_now','立即购买')}
  68. <i class="bi bi-chevron-right"></i>
  69. </a>
  70. {/if}
  71. </div>
  72. </div>
  73. </div>
  74. </div>
  75. {/if}
  76. {/volist}
  77. </div>
  78. <button class="product-list-hero-arrow product-list-hero-prev" type="button">‹</button>
  79. <button class="product-list-hero-arrow product-list-hero-next" type="button">›</button>
  80. <div class="product-list-hero-controls">
  81. <div class="swiper-pagination product-list-hero-pagination"></div>
  82. </div>
  83. </div>
  84. </section>
  85. {/if}
  86. {/yzn}
  87. <section class="section-space image-grid-full hero-next-section-tight product-grid-unified product-list-home-grid">
  88. <div class="container-fluid px-3 product-grid-shell">
  89. <div class="row g-2 g-lg-3 product-grid-row">
  90. {yzn module="cms" action="lists" catid="$catid" flag="4" order="listorder DESC,id DESC" num="20" return="recommendList" moreinfo="1"}
  91. {volist name="recommendList" id="vo"}
  92. <div class="col-12 col-lg-6">
  93. <article class="overlay-card flat-card grid-card tall-card">
  94. <img src="{if !empty($vo.thumb2)}{$vo.thumb2}{elseif !empty($vo.thumb) /}{$vo.thumb}{else /}/uploads/20260409/15d257a4faf1bc9aadd0095112b6b7f7.png{/if}" alt="{$vo.title}">
  95. <div class="overlay-copy top-copy product-tile-copy">
  96. {if !empty($vo.title1)}
  97. <span class="product-subtitle">{$vo.title1}</span>
  98. {/if}
  99. <h3>{$vo.title}</h3>
  100. <p>{if !empty($vo.title2)}{$vo.title2}{elseif !empty($vo.description) /}{$vo.description|strip_tags|mb_substr=0,80,'utf-8'}{/if}</p>
  101. <div class="product-links">
  102. <a href="{$vo.url}">{:cms_t('learn_more','了解更多')} ></a>
  103. {if !empty($vo.shopurl)}<a href="{$vo.shopurl}" target="_blank">{:cms_t('buy_now','立即购买')} ></a>{/if}
  104. </div>
  105. </div>
  106. </article>
  107. </div>
  108. {/volist}
  109. {/yzn}
  110. </div>
  111. </div>
  112. </section>
  113. <section class="product-compare-lite-section compare-page">
  114. <div class="compare-shell">
  115. <div class="product-channel-hero product-compare-heading">
  116. <div class="content-1300-wrap text-center">
  117. <h1>{:cms_t('product_compare_and_recommend','哪款设备适合你')}</h1>
  118. </div>
  119. </div>
  120. {yzn module="cms" action="lists" catid="$catid" order="listorder desc" num="4" return="compareList" moreinfo="1"}
  121. {if !empty($compareList)}
  122. <div class="compare-products compare-products-4up compare-products-detail-grid">
  123. {volist name="compareList" id="cp"}
  124. <article class="compare-product-card compare-product-card-detailed">
  125. <div class="compare-product-media">
  126. <img src="{$cp.thumb}" alt="{$cp.title}">
  127. </div>
  128. <h3 class="compare-product-title">{$cp.title}</h3>
  129. <p class="compare-product-subtitle">{if !empty($cp.title2)}{$cp.title2}{elseif !empty($cp.title1) /}{$cp.title1}{/if}</p>
  130. <div class="compare-product-actions">
  131. {if !empty($cp.shopurl)}<a class="compare-buy-btn" href="{$cp.shopurl}" target="_blank">{:cms_t('buy_now','立即购买')}</a>{/if}
  132. <a class="compare-more-link" href="{$cp.url}">{:cms_t('learn_more','了解更多')}</a>
  133. </div>
  134. <div class="compare-product-specs">
  135. <?php
  136. $where = "project_id=".$cp['id'];
  137. ?>
  138. {yzn module="cms" action="lists" catid="10" where="$where" order="listorder asc,id desc" num="1" return="paramList" moreinfo="1"}
  139. {volist name="paramList" id="param"}
  140. <div class="compare-product-spec-item">
  141. <span class="compare-product-spec-label">{:cms_t('compare_label_size','尺寸')}</span>
  142. <div class="compare-product-spec-value">{$param.size|default='-'}</div>
  143. </div>
  144. <div class="compare-product-spec-item">
  145. <span class="compare-product-spec-label">{:cms_t('compare_label_weight','重量')}</span>
  146. <div class="compare-product-spec-value">{$param.weight|default='-'}</div>
  147. </div>
  148. <div class="compare-product-spec-item">
  149. <span class="compare-product-spec-label">{:cms_t('compare_label_waterproof','防水')}</span>
  150. <div class="compare-product-spec-value">{$param.waterproof|default='-'}</div>
  151. </div>
  152. <div class="compare-product-spec-item">
  153. <span class="compare-product-spec-label">{:cms_t('compare_label_image_sensor','影像传感器')}</span>
  154. <div class="compare-product-spec-value">{$param.image_sensor|default='-'}</div>
  155. </div>
  156. <div class="compare-product-spec-item">
  157. <span class="compare-product-spec-label">{:cms_t('compare_label_normal_video','普通录影')}</span>
  158. <div class="compare-product-spec-value">{$param.normal_video|default='-'}</div>
  159. </div>
  160. <div class="compare-product-spec-item">
  161. <span class="compare-product-spec-label">{:cms_t('compare_label_stabilization','防抖')}</span>
  162. <div class="compare-product-spec-value">{$param.stabilization|default='-'}</div>
  163. </div>
  164. <div class="compare-product-spec-item">
  165. <span class="compare-product-spec-label">{:cms_t('compare_label_battery_life','续航时间')}</span>
  166. <div class="compare-product-spec-value">{$param.battery_life|default='-'}</div>
  167. </div>
  168. <div class="compare-product-spec-item">
  169. <span class="compare-product-spec-label">{:cms_t('compare_label_charge_time','充电时间')}</span>
  170. <div class="compare-product-spec-value">{$param.charge_time|default='-'}</div>
  171. </div>
  172. {/volist}
  173. {/yzn}
  174. </div>
  175. </article>
  176. {/volist}
  177. </div>
  178. <div class="compare-all-entry-wrap">
  179. <a class="compare-all-entry" href="{:getCategory(41,'url')}">{:cms_t('product_compare_all_cameras','对比所有相机')} <i class="bi bi-chevron-right"></i></a>
  180. </div>
  181. {/if}
  182. {/yzn}
  183. </div>
  184. </section>
  185. <section class="product-support-links-section">
  186. <div class="content-1300-wrap">
  187. <div class="product-channel-hero product-support-heading">
  188. <div class="content-1300-wrap text-center">
  189. <h1>{:cms_t('product_support_title','产品支持')}</h1>
  190. </div>
  191. </div>
  192. <div class="product-support-links-grid">
  193. <a class="product-support-link-card" href="{:getCategory(24,'url')}">
  194. <div class="product-support-link-media">
  195. <img src="/assets/xtu/vendor/img/support-service-card.jpg" alt="{:getCategory(24,'catname')}">
  196. </div>
  197. <div class="product-support-link-copy">
  198. <h3>{:getCategory(24,'catname')}</h3>
  199. <p>{if getCategory(24,'description')}{:getCategory(24,'description')}{/if}</p>
  200. <span class="product-support-link-action">{:cms_t('learn_more','了解更多')} <i class="bi bi-chevron-right"></i></span>
  201. </div>
  202. </a>
  203. <a class="product-support-link-card" href="{:getCategory(56,'url')}">
  204. <div class="product-support-link-media">
  205. <img src="/assets/xtu/vendor/img/support-download-card.jpg" alt="{:getCategory(56,'catname')}">
  206. </div>
  207. <div class="product-support-link-copy">
  208. <h3>{:getCategory(56,'catname')}</h3>
  209. <p>{if getCategory(56,'description')}{:getCategory(56,'description')}{/if}</p>
  210. <span class="product-support-link-action">{:cms_t('learn_more','了解更多')} <i class="bi bi-chevron-right"></i></span>
  211. </div>
  212. </a>
  213. </div>
  214. </div>
  215. </section>
  216. <section class="section-space industry-strip-section industry-strip-clean">
  217. <div class="content-1300-wrap">
  218. {yzn module="cms" action="lists" catid="13" order="listorder DESC" num="1" return="data" moreinfo="1"}
  219. {volist name="data" id="vo"}
  220. <div class="row align-items-center g-3 g-lg-4 industry-clean-row">
  221. <div class="col-12 col-lg-5">
  222. <div class="industry-copy industry-copy-clean text-center text-lg-start">
  223. <span class="industry-eyebrow">
  224. {$vo.title}
  225. </span>
  226. <h2>
  227. {$vo.title1}
  228. </h2>
  229. <a href="{:getCategory(55,'url')}" class="ui-btn ui-btn-primary">
  230. {:cms_t('learn_more','了解更多')}
  231. </a>
  232. </div>
  233. </div>
  234. <div class="col-12 col-lg-7">
  235. <div class="industry-image-clean">
  236. <img src="{$vo.thumb}" alt="industry visual">
  237. </div>
  238. </div>
  239. </div>
  240. {/volist}
  241. {/yzn}
  242. </div>
  243. </section>
  244. {include file="footer-links" /}
  245. </main>
  246. <script src="/assets/xtu/vendor/swiper-bundle.min.js"></script>
  247. <script>
  248. (function () {
  249. var el = document.getElementById('productRecommendSwiper');
  250. if (!el || typeof Swiper === 'undefined') return;
  251. new Swiper(el, {
  252. loop: true,
  253. speed: 700,
  254. autoplay: {
  255. delay: 5000,
  256. disableOnInteraction: false
  257. },
  258. pagination: {
  259. el: '#productRecommendSwiper .product-list-hero-pagination',
  260. clickable: true
  261. },
  262. navigation: {
  263. nextEl: '#productRecommendSwiper .product-list-hero-next',
  264. prevEl: '#productRecommendSwiper .product-list-hero-prev'
  265. }
  266. });
  267. })();
  268. </script>
  269. {include file="footer" /}