下面讲解,在首页,如何调用圈子的同时也调用他们相关的贴子.

单单调用圈子,就像调用文章一样,很多人都能轻松实现,
比如下面的代码

{qb:tag name="xxx" type="qun" rows="4"}
<div style="border:1px solid #333;margin:20px;">
<div>圈子名称:{$rs.title}</div>
</div>
{/qb:tag}

如果还要调用圈子的贴子或商品的话,很多人就会想到内循环,在过去,包括现在很多同行,也是这么做的,通过内循环去调用相关的数据,
但是我们非常反对这样做,因为这样效率非常低,容易把页面卡死,所以齐博标签不支持内循环.
要实现内部数据相关联,我们要借助JS实现异步加载, 这样就不会影响页面的打开,提高用户体验.
代码如下

{qb:tag name="xxx" type="qun" rows="4"}
<div style="border:1px solid #333;margin:20px;">
<div>圈子名称:{$rs.title}</div>
<div class="qun_bbs_title" data-id="{$rs.id}">
<!--圈子的相关联的贴子数据,外层的qun_bbs_title是给JS处理数据做标志的,data-id就是标志圈子的ID,外层的这两个元素必须要存在-->
</div>
</div>
{/qb:tag} <div style="display:none;">
<!--圈子相关联的贴子数据的标签,移动这里来了,这是一个孤岛,他要通过下面的JS处理,才能把数据转移到圈子里边-->
<!--其中关键点 ext_id=$ext_id 就是贴子数据表中的字段,用来跟圈子做关联的 -->
{qb:tag name="bbs_tpl_001" type="bbs" rows="3" js="xx01" where="ext_id=$ext_id"}
<li>{$i}、<a href="{:urls('bbs/content/show','id='.$rs.id)}">{$rs.title}</a></li>
{/qb:tag}
</div> <!--JS异步获取相关数据-->
<script type="text/javascript">
$(".qun_bbs_title").each(function(){
var that = $(this); //下面进行DIV赋值贴子数据要用
var id = $(this).data('id'); //对应每个圈子的ID
var page = 1; //只显示第一页的内容
var url = "{qb:url name='bbs_tpl_001'}" + page + "&ext_id=" + id; //这里的跟之前讲的标签获取更多数据一样的,重点就ext_id是贴子里的字段要跟圈子相关联
//下面这一段,都是通用代码,取得贴子数据后,就传给圈子
$.get(url,function(res){
if(res.code==0){
if(res.data!=''){
that.html(res.data);
}
}
}); });
</script>

上面的代码当中,由于标签不支持嵌套, 所以把 圈子的相关数据,即贴子的标签移了出来.
以下这部分就是圈子的贴子标签部分,其中标签里边的内容,才是有用的.标签外的就是把他隐藏起来,不要影响页面布局.

<div style="display:none;">
<!--圈子的相关数据的标签,移动这里来了-->
{qb:tag name="bbs_tpl_001" type="bbs" rows="3" js="xx01" where="ext_id=$ext_id"}
<li>{$i}、<a href="{:urls('bbs/content/show','id='.$rs.id)}">{$rs.title}</a></li>
{/qb:tag}
</div>

另外在圈子部分中关联贴子的DIV代码也有两项关键参数

<div class="qun_bbs_title" data-id="{$rs.id}"> 

其中data-id="{$rs.id}" 就是标志圈子的ID值
class="qun_bbs_title" 就是标志给下面JS处理数据用的.

贴子标签中,有一项关键的参数
where="ext_id=$ext_id" 这个就是非常关键的地方, 之前跟大家讲解过where就是条件筛选用的.这里要用变量参数,
在这里,贴子里边的ext_id字段是跟圈子相关联的.所以这里就这么写,如果是用户相关联的话,就要换成where="uid=$uid"

下面这段JS代码,大家必须要熟练,因为到处都会用到

<script type="text/javascript">
$(".qun_bbs_title").each(function(){
var that = $(this);
var id = $(this).data('id'); //对应圈子的ID
var page = 1; //只显示第一页的内容
var url = "{qb:url name='bbs_tpl_001'}" + page + "&ext_id=" + id;
$.get(url,function(res){
if(res.code==0){
if(res.data!=''){
that.html(res.data);
}
}
}); });
</script>

其中下面这个就是JQ的知识,就是说寻找 qun_bbs_title这样的类的元素,对他进行相关处理, 我们上面标注了圈子里相关的贴子,要进行相关处理

$(".qun_bbs_title").each(function(){
//执行相关操作
});

而其中这个

var url = "{qb:url name='bbs_tpl_001'}" + page + "&ext_id=" + id;

就跟之前跟大家讲解的标签获取分页数据,异步更新类似的. 用得非常多,所以大家必须要熟悉. 这里的标签名bbs_tpl_001跟上面的贴子标签名必须是一致的, 这里的页码,只取第一页, "&ext_id=" + id 这个就是关键之处了,圈子id就是通过JS得到的,然后传递给贴子数据表中的关联字段 ext_id ,这样就可以调取到对应的贴子了


上面讲解的是调用论坛的贴子, 换一下就能调用圈子的商品 或文章 .

另外,还可以同时调用的. 需要把JS复制多一份, 标签名与类名不要重复即可.

齐博x1标签实例:调用多个圈子同时调用贴子的更多相关文章

  1. 齐博x1标签实例:标签的嵌套用法,调用聚合数据

    齐博标签非常强大,可以让不懂程序的你,轻松就能实现所见即所得. 下面跟大家讲解一下,最复杂的运用, 同时使用了union 动态变量参数 与 分页处理标签 比如下面这张图,不仅仅想调用圈子,还想同时调用 ...

  2. 齐博x1标签实例:标签如何调用论坛内容

    论坛的内容不像CMS其它模块可以直接用变量 {$rs.content} 因为论坛的内容数据表是放在另一个表的,单独分开的. 当前也是为了考试效率问题而这样设计的. 所以他的调用要用下面的代码 {:fu ...

  3. 齐博x1标签实例:调用多个圈子同时调用相关会员

    看这一篇之前,请先看上一篇,因为他们有关联性比如要实现这样的效果 可以通过下面的代码可以实现 {qb:tag name="xxx" type="qun" row ...

  4. 齐博x1标签实例:做模板组图单图无图混排的处理

    代码如下, {qb:tag name="xxx" type="cms" rows="10"} {if ( count($rs['picurl ...

  5. 齐博x1标签实例:标签设置取组图不存在就取内容中的图片

    对于CMS或者是其它,使用下面的代码 <div class="morepic"> {volist name=":getArray($pics=$rs.picu ...

  6. 齐博x1标签动态调用数据

    示例代码如下: {qb:tag name="news_list_page_listdata02" type="cms" union="fid" ...

  7. 什么是齐博x1标签

    X系列的标签跟V系列的标签区别还是很大的.在V系列的时候,只有一种很简单的标签比如$label[XXXX]以前的标签相对现在的来说太简单的点,所以在功能上也比较受限.X系列目前有几下几种标签 {qb: ...

  8. 齐博x1标签之异步加载标签数据

    为什么要异步加载标签?他有什么好处 如果一个页面的标签太多,又或者是页面中某一个标签调用数据太慢的话,就会拖慢整个页面的打开,非常影响用户体验.这个时候,用异步加载的话,就可以一块一块的显示,用户体验 ...

  9. 齐博x1标签之无刷新显示更多

    示范代码如下: <div class="ListMoreInfos"> {qb:tag name="news_list_page_listdata02&quo ...

随机推荐

  1. 2. 组复制技术架构 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 传统主从复制技术架构 传统主从复制的方式是在master节点上执行数据更新事务,而后记录这些事务到binlog中,再 ...

  2. ABP中的数据过滤器

      本文首先介绍了ABP内置的软删除过滤器(ISoftDelete)和多租户过滤器(IMultiTenant),然后介绍了如何实现一个自定义过滤器,最后介绍了在软件开发过程中遇到的实际问题,同时给出了 ...

  3. P1980 计数问题 - 记录

    P1980 计数问题 题目描述 试计算在区间 1 到 n的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1到11中,即在 1,2,3,4,5,6,7,8,9,10,11中,数字1出 ...

  4. 理解vue中v-for循环中得key原理及一些错误

    作用:给节点做一个标识,相当于人类的身份证号,虚拟DOM中的标识 下列是key值的一些使用场景和带来的问题:   js:    const vm = new Vue({             el: ...

  5. python金牌班第五周周末总结

    python金牌班第五周周末总结 常见内置函数 1.abs # 求绝对值,将负数变为整数,并且得出的值只有正数print(abs(-999)) # 999 2.all # 当在经历条件判断时所有的返回 ...

  6. 大家都能看得懂的源码 - ahooks 是怎么处理 DOM 的?

    本文是深入浅出 ahooks 源码系列文章的第十三篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 本篇文章探讨一下 ahooks 对 DOM 类 Hooks 使用 ...

  7. Java-随机数据生成器(造数据)

    概述 简单易用的随机数据生成器.一般用于开发和测试阶段的数据填充.模拟.仿真研究.演示等场景.可以集成到各种类型的java项目中使用. 优点 非常轻量级(不到1M),容易集成,无需过多第三方依赖 简单 ...

  8. x64dbg 插件开发环境配置

    x64dbg 是一款开源的应用层反汇编调试器,旨在对没有源代码的可执行文件进行恶意软件分析和逆向工程,同时 x64dbg 还允许用户开发插件来扩展功能,插件开发环境的配置非常简单,如下将简单介绍x64 ...

  9. .Net之接口小知识

    目的 通过一个简单的项目,在原来的文章基础上完善一下常用的几种WebApi编写方式以及请求方式,一方面是用于给我一个前端朋友用来学习调用接口,另一方面让我测试HttpClient的一些效果. 本文示例 ...

  10. [报错]-RuntimeError: Input type (torch.cuda.HalfTensor) and weight type (torch.cuda.FloatTensor) should be the same

    RuntimeError: Input type (torch.cuda.HalfTensor) and weight type (torch.cuda.FloatTensor) should be ...