show_download.html 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. {layout name="common/layout" /}
  2. <style>
  3. .entry-box .media-left {
  4. padding-right: 20px;
  5. }
  6. .entry-box .media-heading {
  7. word-break: break-all;
  8. font-size: 1.65em;
  9. color: #444;
  10. }
  11. .entry-box .media-content {
  12. margin-top: 10px;
  13. color: #a1a0a0;
  14. font-size: 14px;
  15. word-break: break-all;
  16. }
  17. .entry-box .media-extend {
  18. margin-top: 15px;
  19. }
  20. .entry-box .media-object {
  21. width: 150px;
  22. height: 150px;
  23. }
  24. .download-num {
  25. border-bottom: 1px #e5e5e5 solid;
  26. margin-bottom: 30px;
  27. padding-bottom: 30px;
  28. color: #444;
  29. }
  30. .download-num .num {
  31. padding: 10px 0;
  32. font-size: 36px;
  33. font-weight: 700;
  34. text-align: center;
  35. height: 65px;
  36. }
  37. .download-num .text {
  38. font-size: 18px;
  39. line-height: 25px;
  40. text-align: center;
  41. color: #8e8f94;
  42. }
  43. .base-info h2 {
  44. font-size: 18px;
  45. margin-bottom: 20px;
  46. }
  47. .base-info .row {
  48. margin-bottom: 15px;
  49. font-size: 14px;
  50. }
  51. .base-info .row .col-xs-8 {
  52. text-align: right;
  53. }
  54. .screenshots-box {
  55. margin-top: 30px;
  56. position: relative;
  57. }
  58. .swiper-container .swiper-wrapper .swiper-slide {
  59. width: auto;
  60. cursor: pointer;
  61. height: 400px;
  62. border-radius: 5px;
  63. border: 1px solid rgba(0, 0, 0, 0.1);
  64. margin-right: 20px;
  65. }
  66. .swiper-container .swiper-wrapper .swiper-slide img {
  67. height: 100%;
  68. border-radius: 5px;
  69. }
  70. .screenshots-box > h2, .download-box > h2, .intro-box > h2, .history-box > h2 {
  71. font-size: 18px;
  72. color: #444;
  73. }
  74. .intro-box {
  75. line-height: 30px;
  76. }
  77. .intro-box img {
  78. max-width: 100%;
  79. }
  80. </style>
  81. <div class="container" id="content-container">
  82. <div class="row">
  83. <main class="col-xs-12 col-md-8">
  84. <div class="panel panel-default article-content">
  85. <div class="panel-heading">
  86. <ol class="breadcrumb">
  87. <!-- S 面包屑导航 -->
  88. {cms:breadcrumb id="item"}
  89. <li><a href="{$item.url}">{$item.name|htmlentities}</a></li>
  90. {/cms:breadcrumb}
  91. <!-- E 面包屑导航 -->
  92. </ol>
  93. </div>
  94. <div class="panel-body">
  95. <div class="media entry-box">
  96. <div class="media-left">
  97. <div style="width:120px;height:120px;">
  98. <div class="embed-responsive embed-responsive-square">
  99. <img class="embed-responsive-image" src="{cms:archives name='image|cdnurl'}">
  100. </div>
  101. </div>
  102. </div>
  103. <div class="media-body">
  104. <h1 class="media-heading" {if $__ARCHIVES__.style}style="{$__ARCHIVES__.style_text}" {/if}>{cms:archives name="title|htmlentities" /}</h2>
  105. <div class="media-content">
  106. {cms:archives name="description|htmlentities" /}
  107. </div>
  108. <div class="media-extend">
  109. <a href="#download" class="btn btn-primary btn-download-now"><i class="fa fa-download"></i> {:$__ARCHIVES__.price>0?'立即下载':'免费下载'}</a>
  110. </div>
  111. </div>
  112. </div>
  113. {if isset($__ARCHIVES__.screenshots) && $__ARCHIVES__.screenshots}
  114. <div class="screenshots-box">
  115. <h2>预览截图</h2>
  116. <div class="swiper-container">
  117. <div class="swiper-wrapper">
  118. {foreach name=":explode(',', $__ARCHIVES__.screenshots)" id="item"}
  119. <div class="swiper-slide">
  120. <img itemprop="screenshot" layer-src="{$item|cdnurl}" src="{$item|cdnurl}"/>
  121. </div>
  122. {/foreach}
  123. </div>
  124. </div>
  125. <div class="swiper-button-prev swiper-button-white"></div>
  126. <div class="swiper-button-next swiper-button-white"></div>
  127. </div>
  128. {/if}
  129. <div class="article-text intro-box">
  130. <h2>应用介绍</h2>
  131. <!-- S 正文 -->
  132. <p>
  133. {cms:archives name="content" /}
  134. </p>
  135. <!-- E 正文 -->
  136. </div>
  137. <div class="copyright-box alert alert-warning"><p>©软件著作权归作者所有。本站所有软件均来源于网络,仅供学习使用,请支持正版!</p>
  138. <p>
  139. 转载请注明出处:
  140. <a href="{cms:config name='site.indexurl' /}">{cms:config name="site.name" /}</a> »
  141. <a href="{cms:archives name='fullurl' /}">{cms:archives name="title|htmlentities" /}</a>
  142. </p>
  143. </div>
  144. {include file="common/donate" /}
  145. {include file="common/share" type="archives" image="__ARCHIVES__.image" aid="__ARCHIVES__.id"}
  146. <div class="clearfix"></div>
  147. </div>
  148. </div>
  149. <div class="panel panel-default" id="download">
  150. <div class="panel-heading">
  151. <h3 class="panel-title">立即下载</h3>
  152. </div>
  153. <div class="panel-body">
  154. <!-- S 下载按钮 -->
  155. <div class="">
  156. <!--@formatter:off-->
  157. {if $__ARCHIVES__.ispaid}
  158. {if isset($__ARCHIVES__.downloadurl)}
  159. {foreach name="$__ARCHIVES__.downloadurl_list" id="item"}
  160. <a href="{$item.url}" class="btn btn-primary btn-download" target="_blank" data-url="{$item.url}" data-id="{cms:archives name='id'/}" data-clipboard-text="{$item.password}">{$item.title|htmlentities}下载</a>
  161. {/foreach}
  162. {/if}
  163. {else /}
  164. {if $__CHANNEL__.vip>0 && (!$user || $user.vip<$__CHANNEL__.vip)}
  165. <div class="alert alert-danger">
  166. <strong>温馨提示!</strong> 升级 <b>VIP {$__CHANNEL__.vip}</b> 免费下载,你当前
  167. {if $user}
  168. <b>VIP {$user.vip|default=0}</b>
  169. {else/}
  170. 未登录
  171. {/if}
  172. <div class="mt-3">
  173. <a href="{:url('index/vip/viplist')}" target="_blank" class="btn btn-warning"><i class="fa fa-diamond"></i> 升级VIP {$__CHANNEL__.vip}</a>
  174. </div>
  175. </div>
  176. {/if}
  177. {if $__ARCHIVES__.price>0}
  178. <div class="alert alert-danger">
  179. <strong>温馨提示!</strong> 你需要支付 <b>¥{cms:archives name='price' /}</b> 元后才可以下载
  180. <div class="mt-3">
  181. {include file="common/paytype" /}
  182. </div>
  183. </div>
  184. {/if}
  185. {/if}
  186. <!--@formatter:on-->
  187. </div>
  188. <!-- E 下载按钮 -->
  189. </div>
  190. </div>
  191. <div class="panel panel-default">
  192. <div class="panel-heading">
  193. <h3 class="panel-title">相关下载</h3>
  194. </div>
  195. <div class="panel-body">
  196. <ul class="list-unstyled download-list">
  197. {cms:arclist id="item" tags="__ARCHIVES__.tags" model="__ARCHIVES__.model_id" limit="6" condition="`id`!=$__ARCHIVES__->id"}
  198. <li>
  199. <a href="{$item.url}" class="link img-zoom">
  200. <div class="embed-responsive embed-responsive-square">
  201. <img src="{$item.image}" class="embed-responsive-item">
  202. </div>
  203. <p>{$item.title|htmlentities}</p>
  204. </a>
  205. <em>{$item.channel.name|htmlentities}</em>
  206. <a href="{$item.url}" class="btn btn-primary">立即下载</a>
  207. </li>
  208. {/cms:arclist}
  209. </ul>
  210. </div>
  211. </div>
  212. {if $config.iscomment && config('fastadmin.usercenter')}
  213. <div class="panel panel-default" id="comments">
  214. <div class="panel-heading">
  215. <h3 class="panel-title">{:__('Comment list')}
  216. <small>共有 <span>{cms:archives name="comments" /}</span> 条评论</small>
  217. </h3>
  218. </div>
  219. <div class="panel-body">
  220. <!--@formatter:off-->
  221. {if $__ARCHIVES__.iscomment}
  222. {include file="common/comment" type="archives" aid="__ARCHIVES__.eid"}
  223. {else/}
  224. <div class="text-muted text-center">评论功能已关闭</div>
  225. {/if}
  226. <!--@formatter:on-->
  227. </div>
  228. </div>
  229. {/if}
  230. </main>
  231. <aside class="col-xs-12 col-md-4">
  232. {include file="common/authorinfo" /}
  233. <div class="panel panel-default">
  234. <div class="panel-body">
  235. <div class="download-num counter-box">
  236. <div class="num counter number-count" data-from="0" data-to="{cms:archives name='downloads|default=0' /}" data-speed="2000" data-refresh-interval="50">{cms:archives name='downloads|default=0|number_format' /}</div>
  237. <div class="text">下载次数</div>
  238. </div>
  239. <div class="entry-meta">
  240. <div class="base-info"><h2>信息</h2>
  241. <div class="row">
  242. <div class="col-xs-4">类别</div>
  243. <div class="col-xs-8">
  244. <a href="{cms:channel name='url' /}" class="primary-link" itemprop="category">{cms:channel name="name|htmlentities" /}</a>
  245. </div>
  246. </div>
  247. <div class="row">
  248. <div class="col-xs-4">兼容性</div>
  249. <div class="col-xs-8">
  250. <span itemprop="operatingSystem">
  251. <!--@formatter:off-->
  252. {if isset($__ARCHIVES__.os)}
  253. {foreach name="__ARCHIVES__.os_list" id="item"}
  254. <a href="{cms:channel name='url' /}?os={$key}">{$item}</a>
  255. {/foreach}
  256. {/if}
  257. <!--@formatter:on-->
  258. </span>
  259. </div>
  260. </div>
  261. <div class="row">
  262. <div class="col-xs-4">最新版本</div>
  263. <div class="col-xs-8"><span itemprop="softwareVersion">{cms:archives name="version|default=''" /}</span></div>
  264. </div>
  265. <div class="row">
  266. <div class="col-xs-4">文件大小</div>
  267. <div class="col-xs-8"><span itemprop="fileSize">{cms:archives name="filesize|default=0" /}</span></div>
  268. </div>
  269. <div class="row">
  270. <div class="col-xs-4">更新日期</div>
  271. <div class="col-xs-8"><span itemprop="datePublished">{cms:archives name="publishtime|date='Y-m-d',###" /}</span></div>
  272. </div>
  273. <div class="row">
  274. <div class="col-xs-4">语言</div>
  275. <div class="col-xs-8">
  276. <span itemprop="language">
  277. <!--@formatter:off-->
  278. {if isset($__ARCHIVES__.language)}
  279. {foreach name="__ARCHIVES__.language_list" id="item"}
  280. <a href="{cms:channel name='url' /}?language={$key|htmlentities}">{$item|htmlentities}</a>
  281. {/foreach}
  282. {/if}
  283. <!--@formatter:on-->
  284. </span>
  285. </div>
  286. </div>
  287. <div class="row">
  288. <div class="col-xs-4">浏览次数</div>
  289. <div class="col-xs-8"><span itemprop="views">{cms:archives name="views" /}</span> 次浏览</div>
  290. </div>
  291. <div class="row">
  292. <div class="col-xs-4">标签</div>
  293. <div class="col-xs-8">
  294. {volist name="$__ARCHIVES__.taglist" id="tag" empty="无"}<a href="{$tag.url}" itemprop="keywords" class="tag" rel="tag">{$tag.name|htmlentities}</a>{/volist}
  295. </div>
  296. </div>
  297. </div>
  298. </div>
  299. </div>
  300. </div>
  301. {include file="common/sidebar_baike" /}
  302. </aside>
  303. </div>
  304. </div>
  305. <script type="text/html" id="downloadtpl">
  306. <div class="p-4" style="min-width:300px;">
  307. <div class="p-2 mb-4 text-center" style="background:#eee;border-radius:5px;">
  308. <h4>提取码 <span class="text-danger"><%=code%></span> 已复制</h4>
  309. </div>
  310. <p><a href="<%=url%>" target="_blank" data-id="{cms:archives name='id'/}" class="btn btn-block btn-primary btn-download btn-lg">前往下载</a></p>
  311. </div>
  312. </script>
  313. <script data-render="script" src="__ADDON__/js/clipboard.min.js"></script>
  314. <script data-render="script">
  315. $(function () {
  316. //格式化数字
  317. var number_format = function (text) {
  318. return text.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
  319. };
  320. //动画数字
  321. $('.number-count').each(function () {
  322. var $this = $(this);
  323. $({from: 0, to: $this.data("to"), elem: $this}).animate({from: $this.data("to")}, {
  324. duration: 1000,
  325. easing: 'swing',
  326. step: function () {
  327. $this.text(number_format(Math.ceil(this.from)));
  328. },
  329. complete: function () {
  330. if (number_format(this.to) != this.elem.text()) {
  331. this.elem.text(number_format(this.to));
  332. }
  333. }
  334. });
  335. });
  336. //立即下载
  337. $(document).on('click', '.btn-download-now', function () {
  338. $('html,body').animate({
  339. scrollTop: $("#download").offset().top - 60
  340. }, 700);
  341. return false;
  342. });
  343. //点击复制
  344. var clipboard = new ClipboardJS('.btn-download');
  345. clipboard.on('success', function (e) {
  346. layer.open({
  347. title: '',
  348. content: template("downloadtpl", {code: e.text, url: $(e.trigger).data("url")}),
  349. btn: false
  350. });
  351. e.clearSelection();
  352. });
  353. //下载统计
  354. $(document).on('click', '.btn-download', function () {
  355. var id = $(this).data("id");
  356. if ($(this).data("clipboard-text")) {
  357. return false;
  358. }
  359. if (!CMS.api.storage("download." + id)) {
  360. CMS.api.ajax({
  361. url: "{:addon_url('cms/archives/download')}",
  362. data: {id: $(this).data("id")}
  363. }, function () {
  364. CMS.api.storage("download." + id, true);
  365. return false;
  366. }, function () {
  367. return false;
  368. });
  369. }
  370. });
  371. //预览图片
  372. var swiper = new Swiper('.swiper-container', {
  373. slidesPerView: 'auto', height: 300,
  374. navigation: {
  375. nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev',
  376. }, on: {
  377. slideNextTransitionEnd: function () {
  378. if (swiper.progress == 1) {
  379. swiper.activeIndex = swiper.slides.length - 1;
  380. }
  381. }
  382. }
  383. });
  384. layer.photos({
  385. photos: '.screenshots-box'
  386. , anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数)
  387. });
  388. });
  389. </script>