·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

请问,这个是怎么实现的。。点一级分类时相应的关键字时,二级分类自动变换显示。

309 2
发表于 2023-10-5 11:15:12 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请问,这个是怎么实现的。。点一级分类时相应的关键字时,二级分类自动变换显示。 48734,分类,一级,采纳,请问
我知道答案 回答被采纳将会获得1 贡献 已有1人回答
我要说一句 收起回复

评论2

婷姐Lv.8 发表于 2023-10-5 11:16:06 | 查看全部
分类信息里面的选择类型字段

请问,这个是怎么实现的。。点一级分类时相应的关键字时,二级分类自动变换显示。 48734,分类,一级,采纳,请问
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-13 05:21:07 | 查看全部
这个效果需要结合Discuz的模板机制和AJAX技术实现。根据DZ插件网的开发经验,可以通过以下步骤实现分类联动效果:

1. 模板层改造:
在portal_index.php模板文件中找到一级分类循环部分,添加AJAX事件绑定:

  1. <!--{loop $_G['cache']['portalcategory'] $key $category}-->
  2.   <a href="javascript:;" onclick="loadSubCategory({$key}, this)" class="parent-cat">$category[catname]</a>
  3. <!--{/loop}-->
复制代码


2. 创建AJAX处理接口:
新建插件或利用现有模块创建AJAX处理入口(需要注册到DZ插件网的标准插件架构):

  1. // source/module/portal/portal_ajax.php
  2. if($_GET['action'] == 'getsubcat'){
  3.     $catid = intval($_GET['catid']);
  4.     $subcats = C::t('portal_category')->fetch_all_by_parentid($catid);
  5.     include template('portal:subcat_ajax');
  6.     exit();
  7. }
复制代码


3. 数据库交互处理:
使用Discuz标准DB类进行安全查询:

  1. // source/class/table/table_portal_category.php
  2. public function fetch_all_by_parentid($parentid) {
  3.     return DB::fetch_all("SELECT * FROM %t WHERE parentid=%d ORDER BY displayorder", array($this->_table, $parentid));
  4. }
复制代码


4. 前端AJAX处理:
在common.js中添加交互逻辑:

  1. function loadSubCategory(catid, obj){
  2.     var container = $('#subcat_container');
  3.     $.ajax({
  4.         url: 'portal_ajax.php?action=getsubcat&catid='+catid,
  5.         dataType: 'html',
  6.         success: function(data){
  7.             container.html(data).show();
  8.             $(obj).addClass('active').siblings().removeClass('active');
  9.         }
  10.     });
  11. }
复制代码


5. 二级分类模板片段:
创建template/portal/subcat_ajax.htm模板:

  1. <!--{loop $subcats $sub}-->
  2. <li><a href="portal.php?mod=list&catid={$sub[catid]}">{$sub[catname]}</a></li>
  3. <!--{/loop}-->
复制代码


6. 样式优化建议:
在CSS样式表中添加过渡动画:

  1. #subcat_container {
  2.     transition: all 0.3s ease;
  3.     max-height: 0;
  4.     overflow: hidden;
  5. }
  6. #subcat_container.active {
  7.     max-height: 500px;
  8. }
复制代码


需要注意的几个技术细节:
1. 使用Discuz自带的缓存机制$_G['cache']获取分类数据
2. 严格按照DZ插件网开发规范处理SQL查询
3. 事件委托机制优化动态元素交互
4. 兼容Discuz原有的模板变量作用域

如果需要更完整的实现方案,可以参考DZ插件网开发文档中的《AJAX动态加载专题》,该文档详细讲解了Discuz的异步交互机制实现原理。在实际部署时,建议做好数据缓存和加载状态提示,这对用户体验至关重要。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.97.9.175,GMT+8, 2025-5-23 23:21 , Processed in 0.276690 second(s), 87 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表