所属栏目:发布日期:2016-10-14 08:11浏览量:2755作者:admin
最近的网站建设项目中,需要实现点击省市名称时弹出公司在该省的业绩情况,并自动计算业绩总和。
大概的情况如下图,前期设计师分割地图,前端工程师给每个省的省会城市进行定位,背景的定位,加上js函数都是非常辛苦的工作。后期由我负责数据的调取和js的调整。
数据调取方法有很多种,可以使用AJAX异步传输。但考虑到数据较多,公司规模较大,频繁访问数据库会占用较多资源。最终选择一次性直接调取所有数据生成静态页面,然后通过JS动态显示各省市的业绩状况。
在数据调取和JS控制中的关键是子栏目ID {dede:field.id/}(将每个省作为一个子栏目,业绩以文章形式添加)。主要HTML如下:
{dede:channelartlist typeid=’6’ row=’1000’}
工程名称
...
{dede:arclist row='1000' orderby='pubdate' addfields='tech_gy,scale_gm' channelid='1'}
<>
{/dede:arclist}
{dede:sql sql="select sum(scale_gm) as 'total',count(scale_gm) as 'items' from `pgy_dment_article` where typeid= ~id~ "}
注:合计处理规模
[field:total runphp='yes']if(@me){@me=@me;}else{@me=0;}[/field:total]
万吨/日
{/dede:sql}
{/dede:channelartlist}
以上结构很简单主要是channelartlist和arclist标签的嵌套使用,为了获得统计数据需要另外使用sql标签,但如何将当前栏目id传递给sql作为条件是本次遇到的难题。前面多次使用{dede:field.id/}进行取值,但在sql标签中不能嵌套使用其他的dede标签。
查询资料才发现~ field~可以用于标签间的数据传递,类似于在栏目列表页中不需要指定父栏目id便可以直接使用list标签调用数据列表,可以理解为在调用数据时已经默认typeid=~reid~。
这次只是简单的使用,~field~还有更强大的使用方法待各位去深入挖掘研究。