home-code

示例❤源码



### js标签概述

* 设想情景
  - 设想一下,一个站点有10w篇资讯,每篇资讯有几个广告,生成了htm静态文件;
  - 有一天,我们要把某个广告换下来,那这10w个静态文件,是否要重新更新一次???
  - 10w个不愿意!所以就用`js标签`来解决此问题。

* 使用场景
  - js标签 用于 在静态文件中(当然也可以是动态文件),js动态显示一些信息块,如:
  - 动态显示广告信息块,
  - 动态显示 点击量,评论数,
  - 动态显示 评论列表 ……


### js数据标签

* 对应的 js标签
  - 参考上节的 数据标签,除分页Page标签外,都有对应的js标签;
  - 在原有类别前加小写js即可;
  - 所有属性,除了`order`,`where`外,其它几乎不变;

* Demo
  -  (js标签的news列表) [模板代码]({=PATH_PROJ}/demo.php?home-code&fp=demo/tptag/jstag.htm),
    [查看效果]({=PATH_PROJ}/demo.php?tptag-jstag),
  - 查看效果页html源代码:模板解析结果:  
  `<div id='jsid_tags_{tpldir}_{tplname}_t1'><!--[{tpldir}/{tplname},t1][List][modid,news][limit,3]--></div>`
  - {tpldir} 为模板目录下的子目录,{tplname} 为模板(文件)名

* js效果渲染
  - 解析的结果并非最终效果,仅仅是一个标记位;
  - 此时需要加载系统的js,并运行一个js函数进行渲染:
  - 加载系统的js:  
  `<script src='/index.php?ajax-comjs&act=initJs&tpldir=demo'></script>`
  - 运行js函数:`<script>jtagSend()</script>`

* 重要提示
  - 常规数据,应尽量避免使用js标签调用;
  - 如果一定要用,应尽量避免复杂的条件和排序;
  - 为了安全(否则可任意在url中组装sql字句)起见,系统屏蔽了`order`,`where`属性;


### js动态字段

* 调用情景
  - 新闻模型为`news`,id为:`2019-87-65ab`,
  - 评论模型为:`nrem`,网站留言模型为:`gbook`,
  - 需要动态显示新闻的点击量,评论数;

* Demo 
  - 代码如下  
  点击:&lt;i id="jsid_field_news:2019-87-65ab:click">&#123;=$click}&lt;!--,add1-->&lt;/i>次  
  评论:&lt;i id="cnt_nrem">0&lt;/i>条 (下一行会通过`id=cnt_nrem`属性吧结果更新到这此)  
  评论:(&lt;i id="jsid_count_nrem:2019-87-65ab">0&lt;!--`news,cnt_nrem`-->&lt;/i>条)  
  网站留言:(&lt;i id="jsid_count_gbook:0">0&lt;/i>条) //所有留言条数  

* 代码/效果
  - [模板代码]({=PATH_PROJ}/demo.php?home-code&fp=demo/tptag/jstag.htm),
    [查看效果]({=PATH_PROJ}/demo.php?tptag-jstag),

<!--
    {php $did = '2013-ck-jc01'; $etime = '321123'; }
    点击<i id="jsid_field_{=$this->mod}:{=$did}:click">{=$click}<!--,add1--/></i>次
    评论:<i id="cnt_nrem">0</i>条 
    评论(<i id="jsid_count_{=$pmod}:{=$did}">0<!--`{=$this->mod},cnt_{=$pmod}`--/></i>条) (变量需要`符号分开)
    评论(<i id="jsid_count_{=$pmod}:{=$did}">0<!--news,cnt_nrem--/></i>条)
    评论(<i id="jsid_count_nrem:2013-ck-jc01">0<!--`news,cnt_nrem`--/></i>条)
    网站留言(<i id="jsid_count_{=$modid}:0">0</i>条) //所有留言条数
-->


### js广告调用

* 调用情景
  - 有广告模型为`adpic`,`adxxx`,
  - 广告位(栏目分类)为:`aphom`,`apinn`,`yyhom`,
  - 动态显示如上广告;

* Demo 
  - 代码如下  
  `<div id='jsid_advs_adv1'><!--adpic:aphom--></div>`  
  `<span id='jsid_advs_adv2'><!--adpic:apinn--></span>`  
  `<div id='jsid_advs_advx'><!--adxxx:yyhom--></div>`

* 代码/效果
  - [模板代码]({=PATH_PROJ}/demo.php?home-code&fp=demo/tptag/jstag.htm),
    [查看效果]({=PATH_PROJ}/demo.php?tptag-jstag),

* 规范:
  - 广告的id属性,用`jsid_advs_`开头,且同一页不要重复;
  - 格式,`广告模型:广告栏目`,用&lt;!--model:catid-->包起来,是避免广告加载前显示这些字符;
  - 多个js广告标签,统计标签,js常规标签,会合并,减少http请求;
  - 但因为url地址长度有限,目前同一页js标签太多,参数超过2000会分多次获取;

* 提示:List:列表标签 调用广告
  - 具体见 上一节:【数据标签】 > 【List:列表标签】
  - 注意切换 广告的 模型,栏目类别

* 广告被屏蔽说明
  - 某些浏览器,会屏蔽`ad`,`adv`,`banner`等字符开头的广告图片;
  - html-dom, css-class, 文件夹名称, 文件名称·······,都尽量不用这些关键词;
  - 本系统默认影响:初步测试,暂未影响;
  - [广告终结者规则语法](https://www.adtchrome.com/extension/filtersyntax.html)(参考)。

-End-