国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

260 строки
10KB

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
  6. <title>{dede:field.title/}-{dede:global.cfg_webname/}</title>
  7. <meta name="keywords" content="{dede:field.keywords/}">
  8. <meta name="description" content="{dede:field.description/}">
  9. <link rel="stylesheet" href="/static/web/css/font-awesome.min.css">
  10. <link rel="stylesheet" href="/static/web/css/bootstrap.min.css">
  11. <link rel="stylesheet" href="/static/web/css/style.css">
  12. </head>
  13. <body>
  14. {dede:include filename='top.htm'/}
  15. {dede:include filename='head.htm'/}
  16. <div class="container py-3">
  17. <ol class="breadcrumb mb-0">
  18. <li class="breadcrumb-item">当前位置</li>
  19. {dede:field name='position'/}
  20. </ol>
  21. </div>
  22. <main class="container py-3">
  23. <div class="row">
  24. <div class="col-md-9">
  25. <article class="article-main bg-white shadow-sm rounded p-3">
  26. <div class="title">
  27. <h1>{dede:field.title/}</h1>
  28. </div>
  29. <div class="meta py-3">
  30. <a href="{dede:field.userurl/}"><span><img src="{dede:field.face/}" class="user-img-xs mr-2">{dede:field.uname/}</span></a>
  31. <span><i class="fa fa-calendar mr-2"></i>{dede:field.pubdate function="MyDate('Y-m-d',@me)"/}</span>
  32. <span><i class="fa fa-globe mr-2"></i>{dede:field.source/}</span>
  33. <span><i class="fa fa-user mr-2"></i>{dede:field.writer/}</span>
  34. <span><i class="fa fa-eye mr-2"></i><script src="{dede:global.cfg_phpurl/}/count.php?view=yes&aid={dede:field.id/}&mid={dede:field name='mid'/}"></script>次</span>
  35. </div>
  36. <div class="img py-3">{dede:field.image/}</div>
  37. <div class="info py-3">
  38. <p>软件类型:{dede:field.softtype/}</p>
  39. <p>授权方式:{dede:field.accredit/}</p>
  40. <p>界面语言:{dede:field.language/}</p>
  41. <p>软件大小:{dede:field.softsize/}</p>
  42. <p>文件类型:{dede:field.filetype/}</p>
  43. <p>运行环境:{dede:field.os/}</p>
  44. <p>软件等级:{dede:field.softrank function='GetRankStar(@me)'/}</p>
  45. <p>发布时间:{dede:field.pubdate function="GetDateMk('@me')"/}</p>
  46. <p>官方网址:{dede:field.officialurl/}</p>
  47. <p>演示网址:{dede:field.officialdemo/}</p>
  48. <p>下载次数:<script src="{dede:field.phpurl/}/disdls.php?aid={dede:field.id/}"></script></p>
  49. </div>
  50. <div class="body py-3">
  51. {dede:field.introduce/}
  52. <p>工具于 {dede:field.senddate function="MyDate('Y-m-d H:i',@me)"/} 修改</p>
  53. </div>
  54. <div class="download py-3">
  55. <h4>下载地址</h4>
  56. <ul class="downurllist">
  57. {dede:field.softlinks/}
  58. </ul>
  59. </div>
  60. <div class="alert alert-success my-3">{dede:softmsg/}</div>
  61. <div class="edit py-3">责任编辑:{dede:adminname/}</div>
  62. <div class="page py-3 row">
  63. <div class="col-md-4 prenext">
  64. <div class="pagination-previous mb-3">{dede:prenext get='pre'/}</div>
  65. <div class="pagination-next">{dede:prenext get='next'/}</div>
  66. </div>
  67. <div class="col-md-8">
  68. <div class="row actbox">
  69. <ul>
  70. <li><i class="fa fa-star-o mr-2"></i><a href="{dede:global.cfg_phpurl/}/stow.php?aid={dede:field.id/}">收藏</a></li>
  71. <li><i class="fa fa-bug mr-2"></i><a href="javascript:ErrorAddSave({dede:field.id/}, '{dede:field.title/}');">挑错</a></li>
  72. <li><i class="fa fa-thumbs-o-up mr-2"></i><a href="{dede:global.cfg_phpurl/}/recommend.php?aid={dede:field.id/}">推荐</a></li>
  73. <li><i class="fa fa-print mr-2"></i><a href="javascript:;" onclick="window.print();">打印</a></li>
  74. </ul>
  75. </div>
  76. </div>
  77. </div>
  78. {dede:include filename='widget_article_likes.htm'/}
  79. {dede:include filename='widget_article_feedback.htm'/}
  80. </article>
  81. </div>
  82. <aside class="col-md-3">
  83. <div class="pb-3">{dede:include filename='widget_search.htm'/}</div>
  84. <div class="pb-3">{dede:include filename='widget_menu.htm'/}</div>
  85. <div class="pb-3">{dede:include filename='widget_hot.htm'/}</div>
  86. </aside>
  87. </div>
  88. </main>
  89. <script>const PHPURL = '{dede:global.cfg_phpurl/}';</script>
  90. {dede:include filename='foot.htm'/}
  91. <script>
  92. //顶踩功能
  93. function GetDigg(aid,cid) {
  94. let url = `{dede:global.cfg_phpurl/}/digg_ajax.php?id=${aid}&cid=${cid}&format=json`;
  95. $.get(url, function(data) {
  96. let reval = JSON.parse(data);
  97. if (reval.code === 200) {
  98. $("#goodpost").html(reval.data.goodpost);
  99. $("#badpost").html(reval.data.badpost);
  100. $("#goodper").css("width", `${reval.data.goodper}%`)
  101. $("#badper").css("width", `${reval.data.badper}%`)
  102. }
  103. })
  104. }
  105. function PostDigg(ftype, aid) {
  106. var saveid = GetCookie('diggid');
  107. if (saveid != null) {
  108. var saveids = saveid.split(',');
  109. var hasid = false;
  110. saveid = '';
  111. j = 1;
  112. for (i = saveids.length - 1; i >= 0; i--) {
  113. if (saveids[i] == aid && hasid) continue;
  114. else {
  115. if (saveids[i] == aid && !hasid) hasid = true;
  116. saveid += (saveid == '' ? saveids[i] : ',' + saveids[i]);
  117. j++;
  118. if (j == 20 && hasid) break;
  119. if (j == 19 && !hasid) break;
  120. }
  121. }
  122. if (hasid) { ShowMsg("您已经顶过该帖,请不要重复顶帖"); return; }
  123. else saveid += ',' + aid;
  124. SetCookie('diggid', saveid, 1);
  125. } else {
  126. SetCookie('diggid', aid, 1);
  127. }
  128. let url = "{dede:global.cfg_phpurl/}/digg_ajax.php?action=" + ftype + "&id=" + aid + "&format=json&cid={dede:field.channel/}";
  129. $.get(url, function(data) {
  130. let reval = JSON.parse(data);
  131. if (reval.code === 200) {
  132. $("#goodpost").html(reval.data.goodpost);
  133. $("#badpost").html(reval.data.badpost);
  134. $("#goodper").css("width", `${reval.data.goodper}%`)
  135. $("#badper").css("width", `${reval.data.badper}%`)
  136. }
  137. });
  138. }
  139. GetDigg("{dede:field.id/}", "{dede:field.channel/}");
  140. //发表评论
  141. function SendFeedback() {
  142. let feedback = {
  143. action: "send",
  144. comtype: "comments",
  145. aid: "{dede:field.id/}",
  146. msg: $("#iptMsg").val(),
  147. username: $("#iptUsername").val(),
  148. validate: $("#iptValidate").val(),
  149. notuser: $("#iptAny").is(":checked") ? "1" : "",
  150. };
  151. $.post("{dede:global.cfg_phpurl/}/feedback.php", feedback, function(data) {
  152. let result = JSON.parse(data);
  153. if (result.code === 200) {
  154. ShowAlert("#feedback-alert", result.msg, "success");
  155. $("#iptMsg").val("");
  156. $("#iptValidate").val("");
  157. ($("#iptUsername").attr("disabled") !== "disabled") && $("#iptUsername").val("");
  158. $("#validateimg").attr("src", '{dede:global.cfg_phpurl/}/vdimgck.php?' + new Date().getTime() + Math.round(Math.random() * 10000));
  159. } else {
  160. ShowAlert("#feedback-alert", `评论失败:${result.msg}`, "danger");
  161. $("#validateimg").attr("src", '{dede:global.cfg_phpurl/}/vdimgck.php?' + new Date().getTime() + Math.round(Math.random() * 10000));
  162. }
  163. });
  164. }
  165. //回复评论,回复必须登录
  166. function SendReplyFeedback(fid) {
  167. let content = $(`._feedback_reply[for="${fid}"]`).find(".iptReplyContent").val();
  168. let reply = {
  169. action : "send",
  170. comtype : "reply",
  171. fid : fid,
  172. aid : "{dede:field.id/}",
  173. msg : content,
  174. }
  175. $.post("{dede:global.cfg_phpurl/}/feedback.php", reply, function(data) {
  176. let result = JSON.parse(data);
  177. if (result.code === 200) {
  178. ShowAlert(`._feedback_reply[for="${fid}"]`, result.msg, "success");
  179. } else {
  180. ShowAlert(`._feedback_reply[for="${fid}"]`, `评论失败:${result.msg}`, "danger");
  181. }
  182. })
  183. $(`._feedback_reply[for="${fid}"]`).find(".btn-send").attr("disabled", "disabled");
  184. }
  185. //回复某个评论
  186. function ReplyFeedback(fid) {
  187. let replyPannel = `<div class="form-group">
  188. <div class="input-group">
  189. <input type="text" class="form-control iptReplyContent">
  190. <div class="input-group-append"><button type="button" class="btn btn-success btn-send" onclick='SendReplyFeedback(${fid})'>评论</button></div>
  191. </div>
  192. </div>`;
  193. $.get("{dede:global.cfg_memberurl/}/api.php?format=json", function(result) {
  194. if (result.code !== 200) {
  195. $(`._feedback_reply`).html("");
  196. ShowAlert(`._feedback_reply[for="${fid}"]`, '回复需要登录会员中心,您可以<a href="{dede:global.cfg_memberurl/}/login.php">点击登录</a>后再来回复', 'warning', 3000);
  197. } else {
  198. $(`._feedback_reply`).html("");
  199. $(`._feedback_reply[for="${fid}"]`).html(replyPannel);
  200. }
  201. });
  202. $(`._feedback_reply[for="${fid}"]`).html('<i class="fa fa-spinner"></i>');
  203. }
  204. //加载回复评论
  205. function LoadReplyFeedbacks(fid) {
  206. $(`.feedback_replies[for="${fid}"]`).html('<i class="fa fa-spinner"></i>');
  207. $.get("{dede:global.cfg_phpurl/}/feedback.php", {
  208. "aid" : "{dede:field.id/}",
  209. "fid" : fid,
  210. }, function(data) {
  211. let result = JSON.parse(data);
  212. let tpl = `<div class="media py-3">
  213. <img src="~face~" class="face mr-3">
  214. <div class="media-body">
  215. <div class="feedback-infos pb-3">
  216. <div class="feedback-basic">
  217. <span>~username~</span>
  218. <span>~dtimestr~</span>
  219. </div>
  220. <div class="feedback-action">
  221. <a href="javascript:GoodFeedback(~id~, ~good~)">
  222. <i class="fa fa-thumbs-up"></i>
  223. <i id="feedbackGood~id~">~good~</i>
  224. </a>
  225. </div>
  226. </div>
  227. <div class="feedback-content">~msg~</div>
  228. </div>
  229. </div>`;
  230. if (result.code === 200) {
  231. $(`.feedback_replies[for="${fid}"]`).html("");
  232. for (let i = 0; i < result.data.length; i++) {
  233. const feedback = result.data[i];
  234. let rs = tpl;
  235. for (const key in feedback) {
  236. if (feedback.hasOwnProperty(key)) {
  237. rs = rs.replace(new RegExp(`~${key}~`,"gm"), feedback[key])
  238. }
  239. }
  240. $(`.feedback_replies[for="${fid}"]`).append(rs);
  241. }
  242. }
  243. })
  244. }
  245. //评论点赞
  246. function GoodFeedback(fid, g) {
  247. let good = {
  248. action : "send",
  249. feedbacktype : "good",
  250. good : g,
  251. fid : fid,
  252. }
  253. $.post("{dede:global.cfg_phpurl/}/feedback.php", good, function(data) {
  254. let result = JSON.parse(data);
  255. $(`#feedbackGood${fid}`).html(result.data);
  256. })
  257. }
  258. </script>
  259. </body>
  260. </html>