books.html 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. {extend name="layout/layout" /}
  2. {block name="title"} <?php echo $category['name']; ?> {/block}
  3. {block name="css"}
  4. <!-- 这里引入css -->
  5. <link href="{:asset('/css/frontend/common.css')}" rel="stylesheet" type="text/css">
  6. <link href="{:asset('/css/frontend/recently.css')}" rel="stylesheet" type="text/css">
  7. <link href="{:asset('/css/frontend/classify.css')}" rel="stylesheet" type="text/css">
  8. <link href="{:asset('/css/frontend/ad/image.css')}" rel="stylesheet" type="text/css">
  9. <style type="text/css">
  10. .read_popup_box, .custom_popup_box{
  11. position: fixed;
  12. left: 0;
  13. right: 0;
  14. bottom: 0;
  15. top: 0;
  16. z-index: 999;
  17. background-color: rgba(0,0,0,.5);
  18. font-size: 0;
  19. text-align: center;
  20. white-space: nowrap;
  21. }
  22. .rpb_main,
  23. .rpb_jgb{
  24. display: inline-block;
  25. vertical-align: middle;
  26. }
  27. .rpb_jgb{
  28. overflow: hidden;
  29. height: 100%;
  30. margin-left: -1px;
  31. width: 1px;
  32. }
  33. .rpb_main{
  34. overflow: hidden;
  35. width: 100%;
  36. }
  37. .rpbm_box{
  38. padding: .3rem .16rem .1rem;
  39. position: relative;
  40. left: 0;
  41. top: 0;
  42. overflow: hidden;
  43. background-color: #fff;
  44. margin: .14rem .48rem;
  45. border-radius: .16rem;
  46. white-space: normal;
  47. -webkit-box-shadow: 0 .03rem .1rem rgba(0, 0, 0, 1);
  48. box-shadow: 0 .03rem .1rem rgba(0, 0, 0, 1);
  49. }
  50. .rpbm_box a{
  51. display: block;
  52. }
  53. .rpb_img{
  54. overflow: hidden;
  55. margin: 0 auto .16rem;
  56. height: 1.39rem;
  57. width: 1.04rem;
  58. border-radius: .04rem;
  59. -webkit-box-shadow: 0 0 .1rem rgba(0, 0, 0, 0.4);
  60. box-shadow: 0 0 .1rem rgba(0, 0, 0, 0.4);
  61. }
  62. .rpb_img a,
  63. .rpb_img img{
  64. overflow: hidden;
  65. display: block;
  66. width: 100%;
  67. height: 100%;
  68. border-radius: .04rem;
  69. }
  70. .rpb_tit{
  71. overflow: hidden;
  72. margin: 0 0 .16rem;
  73. height: .26rem;
  74. font-size: .18rem;
  75. color: #000;
  76. line-height: .26rem;
  77. }
  78. .rpb_tit a{
  79. overflow: hidden;
  80. display: block;
  81. height: .26rem;
  82. font-size: .18rem;
  83. color: #000;
  84. line-height: .26rem;
  85. display: -webkit-box;
  86. -webkit-box-orient: vertical;
  87. -webkit-line-clamp: 1;
  88. }
  89. .rpb_p{
  90. margin-bottom: .1rem;
  91. overflow: hidden;
  92. max-height: .72rem;
  93. }
  94. .rpb_p a{
  95. overflow: hidden;
  96. display: block;
  97. font-size: .14rem;
  98. color: rgba(0,0,0,.5);
  99. text-align: left;
  100. line-height: .24rem;
  101. display: -webkit-box;
  102. -webkit-box-orient: vertical;
  103. -webkit-line-clamp: 3;
  104. }
  105. .rpb_but{
  106. text-align: center;
  107. height: .3rem;
  108. }
  109. .rpb_but a{
  110. display: block;
  111. height: .3rem;
  112. text-align: center;
  113. font-size: .16rem;
  114. color: #007aff;
  115. line-height: .3rem;
  116. }
  117. .rpbm_close_but{
  118. display: block;
  119. position: absolute;
  120. right: .1rem;
  121. top: .1rem;
  122. height: .2rem;
  123. width: .2rem;
  124. background: url(/assets/img/frontend/icon/cha_icon_2.png) no-repeat center center;
  125. background-size: .14rem .14rem;
  126. border-radius: .2rem;
  127. }
  128. </style>
  129. {/block}
  130. {block name="zepto"}
  131. <!-- 这是zepto插件 -->
  132. <script type="text/javascript" src="{:asset('/libs/zepto/zepto.picLazyLoad.min.js')}"></script>
  133. {/block}
  134. {block name="menu_title"} <?php echo $category['name']; ?> {/block}
  135. {block name="main"}
  136. <!-- 这是正文 -->
  137. <div class="body_sytle">
  138. <div class="c_list_box">
  139. <div class="c_list_tab_box_2">
  140. <a href="javascript:;" class="hover" type="all">全部</a>
  141. <a href="javascript:;" type="serial">连载</a>
  142. <a href="javascript:;" type="finish">完本</a>
  143. <a href="javascript:;" type="free">免费</a>
  144. </div>
  145. <ul class="r_img_ul"></ul>
  146. </div>
  147. <div class="loading_box"><span>正在加载中,请稍后......</span></div>
  148. <div class="content_null_box" style="display: none;">
  149. <img src="{:asset('/img/frontend/icon/icon_16.png')}" style="width: 1.28rem;" />
  150. <span>暂无该类别图书,换个条件试试看吧!</span>
  151. <div class="content_null_but_box">
  152. <a href="/index/index">去首页看看</a>
  153. </div>
  154. <div class="ad_position_16"></div>
  155. </div>
  156. </div>
  157. <!--继续阅读弹框-->
  158. {notempty name="$continueData"}
  159. <div class="read_popup_box">
  160. <div class="rpb_main">
  161. <div class="rpbm_box">
  162. <a href="javascript:;" class="rpbm_close_but"></a>
  163. <div class="rpb_img"><a href="{$continueData.url}"><img src="{$continueData.image}" /></a> </div>
  164. <div class="rpb_tit"><a href="{$continueData.url}">{$continueData.book_name}</a></div>
  165. <div class="rpb_p"><a href="{$continueData.url}">{$continueData.description}</a> </div>
  166. <div class="rpb_but"><a href="{$continueData.url}">继续阅读 ></a> </div>
  167. </div>
  168. </div>
  169. <div class="rpb_jgb"></div>
  170. </div>
  171. {/notempty}
  172. <!--客服消息弹框-->
  173. {notempty name="$customData"}
  174. <div class="custom_popup_box" data-resouce_id="{$customData.custom_id}">
  175. <div class="rpb_main">
  176. <div class="rpbm_box">
  177. <a href="javascript:;" class="rpbm_close_but"></a>
  178. <div class="rpb_img"><a href="{$customData.url}"><img src="{$customData.image}" /></a> </div>
  179. <div class="rpb_tit"><a href="{$customData.url}">{$customData.book_name}</a></div>
  180. <div class="rpb_p"><a href="{$customData.url}">{$customData.description}</a> </div>
  181. <div class="rpb_but"><a href="{$customData.url}">继续阅读 ></a> </div>
  182. </div>
  183. </div>
  184. <div class="rpb_jgb"></div>
  185. </div>
  186. {/notempty}
  187. {/block}
  188. {block name="footer"}
  189. {/block}
  190. {block name="js"}
  191. <script type="text/javascript">
  192. var pagenum=1,
  193. sBookstop=true,
  194. sBookstopTime=null,
  195. pagesize=10,
  196. type = $(".c_list_tab_box_2 a").eq(0).attr('type'),
  197. book_category_id = {$category.id};
  198. $(function(){
  199. loadingList();
  200. $(".c_list_tab_box_2 > a").click(function(){
  201. $(this).addClass("hover");
  202. $(this).siblings().removeClass("hover");
  203. $('.r_img_ul').html('').show();
  204. $('.content_null_box').hide();
  205. $('.loading_box').html('<span>正在加載中,请稍候......</span>').show();
  206. type = $(this).attr("type");
  207. sBookstop = true;
  208. pagenum = 1;
  209. loadingList();
  210. });
  211. $(window).scroll(function(){
  212. var nWinH = document.documentElement.clientHeight;
  213. var nScrollTop = (document.body.scrollTop || document.documentElement.scrollTop) + nWinH;
  214. var nBodyScrollH = document.body.scrollHeight;
  215. if(sBookstop && nBodyScrollH - nScrollTop < 240){
  216. bookstoptime();
  217. $('.loading_box').html('<span>正在加載中,请稍候......</span>').show();
  218. loadingList();
  219. }
  220. });
  221. });
  222. function loadingList(){
  223. $.ajax({
  224. type: 'get',
  225. url: '/api/category/booklistapi',
  226. timeout: 10000,
  227. cache: false,
  228. dataType: 'json',
  229. data: {
  230. 'book_category_id':book_category_id,
  231. 'type':type,
  232. 'page':pagenum
  233. },
  234. success: function (data) {
  235. clearTimeout(sBookstopTime);
  236. if (typeof data == 'string') {
  237. data = JSON.parse(data);
  238. }
  239. if(data<=0 && pagenum == 1){
  240. $('.r_img_ul,.loading_box').hide();
  241. $('.content_null_box').show();
  242. sBookstop = false;
  243. window.$isAdPick == '1' && window.simpleAD.render(window.AD_PAGE_CODE.CATEGORY_SUB)
  244. return false;
  245. }
  246. var sLi = '';
  247. var type_name = $(".c_list_tab_box_2 a.hover").text();
  248. for(var i=0; i<data.length; i++){
  249. sLi += '<li class="section-block">\
  250. <a href="/index/book/info?book_id='+ data[i]['id'] +'" class="section-data" data-book_id="'+ data[i]['id'] +'" data-zone="'+type_name+'">\
  251. <div class="r_img">\
  252. <img src="{:asset('/img/frontend/images/default_img.png')}" data-original="'+ data[i]['image'] +'" />\
  253. </div>\
  254. <div class="r_img_text">\
  255. <h3>'+ data[i]['name'] +'</h3>';
  256. if (data[i]['free_period'].length>0) {
  257. sLi+='<h3 style="font-size: .12rem; color: #f63566; font-weight: normal;">限时免费:'+data[i]['free_period']+'</h3>';
  258. }
  259. sLi += '<p>'+ data[i]['description'] +'</p>\
  260. <div class="r_img_other">\
  261. <i>'+ data[i]['author'] +'</i>\
  262. <strong>'+ data[i]['read_num'] +'人在追</strong>\
  263. </div>\
  264. </div>\
  265. </a>\
  266. </li>';
  267. }
  268. $('.r_img_ul').append(sLi);
  269. pagenum ++;
  270. if(data.length < pagesize){
  271. $('.loading_box').html('<span>已显示全部</span>').show();
  272. sBookstop = false;
  273. }else{
  274. $('.loading_box').html('<span>下拉加载更多</span>').show();
  275. sBookstop = true;
  276. }
  277. $('img').picLazyLoad({
  278. effect : "fadeIn"
  279. });
  280. window.$isAdPick == '1' && window.simpleAD.render(window.AD_PAGE_CODE.CATEGORY_SUB)
  281. },
  282. error: function (XMLHttpRequest, textStatus, errorThrown) {
  283. if (typeof XMLHttpRequest == 'object') {
  284. XMLHttpRequest = fRead.jsonstringify(XMLHttpRequest);
  285. }
  286. }
  287. });
  288. }
  289. //防止重复请求数据
  290. function bookstoptime() {
  291. clearTimeout(sBookstopTime);
  292. sBookstop = false;
  293. sBookstopTime = setTimeout(function () {
  294. sBookstop = true;
  295. }, 3000);
  296. }
  297. </script>
  298. <!-- 多条广告如下脚本只需引入一次 -->
  299. {if condition="$isAdPick"}
  300. {include file="public/ad_common_js"}
  301. {/if}
  302. <script>
  303. window.$isAdPick = '{$isAdPick}'
  304. window.$adLatestVersion = '{$ad_latest_version}'
  305. </script>
  306. {/block}