### 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
- 代码如下
点击:<i id="jsid_field_news:2019-87-65ab:click">{=$click}<!--,add1--></i>次
评论:<i id="cnt_nrem">0</i>条 (下一行会通过`id=cnt_nrem`属性吧结果更新到这此)
评论:(<i id="jsid_count_nrem:2019-87-65ab">0<!--`news,cnt_nrem`--></i>条)
网站留言:(<i id="jsid_count_gbook:0">0</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_`开头,且同一页不要重复;
- 格式,`广告模型:广告栏目`,用<!--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-