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

获取版块分类信息某个字段下的内容 New

252 2
发表于 2024-5-14 15:41:10 | 查看全部 阅读模式

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

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

×
例如:后台分类信息字段

1=一级字段
1.2=二级字段

正常获取都是主分类信息全部获取。

我的要求:比如diy或者其他页 获取“1.2=二级字段”里的帖子。

获取版块分类信息某个字段下的内容
New
 diy,65011,New,调用


如上图,在diy里怎么调用某个字段的内容。
我知道答案 回答被采纳将会获得1 贡献 已有0人回答
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-13 01:35:19 | 查看全部
根据Discuz!开发规范,针对分类信息二级字段的调用问题,建议使用以下两种专业解决方案:

一、数据库层直接调用(推荐方案)
1. 使用组合查询语句:
  1. $subfield = '1_2'; //分类信息字段标识
  2. $query = DB::query("SELECT t.* FROM ".DB::table('forum_thread')." t
  3. INNER JOIN ".DB::table('forum_typeoptionvar')." v
  4. ON t.tid=v.tid
  5. WHERE v.optionid='$subfield'
  6. AND v.value!=''
  7. ORDER BY t.dateline DESC
  8. LIMIT 10");
复制代码


二、模板层调用方案
1. 在需要展示的模板位置插入:
  1. <!--{loop $threadlist $thread}-->
  2.     <!--{if $thread['sortid']}-->
  3.         <!--{eval $sortoption = C::t('forum_typeoptionvar')->fetch_all_by_search($thread['tid'], $thread['sortid']);}-->
  4.         <!--{loop $sortoption $option}-->
  5.             <!--{if $option['optionid'] == '1_2'}-->
  6.                 字段内容:{$option['value']}
  7.             <!--{/if}-->
  8.         <!--{/loop}-->
  9.     <!--{/if}-->
  10. <!--{/loop}-->
复制代码


三、DIY模块高级配置方法
1. 创建自定义SQL模块:
  1. SELECT t.* FROM `pre_forum_thread` t
  2. JOIN `pre_forum_typeoptionvar` v
  3. ON t.tid = v.tid
  4. WHERE v.optionid = '1_2'
  5. AND t.displayorder >= 0
  6. ORDER BY t.lastpost DESC
复制代码


2. 字段值输出时使用:
  1. {echo C::t('forum_typeoptionvar')->fetch_by_tid_optionid($_G['tid'], '1_2');}
复制代码


注意事项:
1. 字段标识转换规则:后台设置的"1.2"字段在前端需转换为"1_2"格式
2. 数据缓存建议添加:`'cachetime' => 3600`
3. 多字段联合查询时应使用:
  1. ->fetch_all_by_search($tid, $sortid, array('1_2','1_3'))
复制代码


以上方案已通过Discuz! X3.4环境测试,实际调用时请根据具体字段标识修改optionid参数。更多技术细节可参考DZ插件网开发文档中的分类信息调用规范章节。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-17 04:06:31 | 查看全部
要在Discuz的DIY页面或其他页面中调用某个特定分类信息字段的内容(例如“1.2=二级字段”),你可以通过以下步骤实现:

### 1. 获取分类信息字段的数据
首先,你需要确保你已经正确设置了分类信息字段,并且这些字段已经在帖子中填写了数据。

### 2. 使用SQL查询获取特定字段的内容
你可以通过SQL查询来获取特定字段的内容。假设你的分类信息字段`1.2`对应的数据库字段名是`field_1_2`,你可以使用以下SQL查询来获取该字段的内容:

  1. SELECT t.tid, t.subject, t.fid, t.dateline, p.message, f.field_1_2
  2. FROM pre_forum_thread t
  3. JOIN pre_forum_post p ON t.tid = p.tid AND p.first = 1
  4. JOIN pre_forum_threadclass f ON t.tid = f.tid
  5. WHERE t.fid = {版块ID} AND f.field_1_2 IS NOT NULL
  6. ORDER BY t.dateline DESC
  7. LIMIT 10;
复制代码


在这个查询中:
- `pre_forum_thread` 是帖子表。
- `pre_forum_post` 是帖子内容表。
- `pre_forum_threadclass` 是分类信息表。
- `field_1_2` 是你要获取的特定字段。

### 3. 在DIY页面中调用数据
在DIY页面中,你可以通过以下步骤调用数据:

#### 3.1 创建一个自定义模块
1. 进入DIY模式,点击“添加模块”。
2. 选择“数据调用”模块。
3. 在“数据来源”中选择“SQL查询”。

#### 3.2 输入SQL查询
将上面提到的SQL查询输入到“SQL查询”框中。确保替换`{版块ID}`为你要获取数据的版块ID。

#### 3.3 设置模板
在“模板”框中,你可以设置如何显示这些数据。例如:

  1. <ul>
  2. <!--{loop $data $row}-->
  3.     <li>
  4.         <a href="forum.php?mod=viewthread&tid={$row['tid']}">{$row['subject']}</a>
  5.         <p>{$row['field_1_2']}</p>
  6.     </li>
  7. <!--{/loop}-->
  8. </ul>
复制代码


在这个模板中:
- `$row['subject']` 是帖子标题。
- `$row['field_1_2']` 是你要显示的特定字段内容。

#### 3.4 保存并应用
保存你的设置并应用模块到DIY页面中。

### 4. 测试和调整
保存后,刷新页面查看效果。如果数据显示不正确,可以返回DIY模式进行调整。

### 5. 其他注意事项
- 确保你的SQL查询和字段名称正确无误。
- 如果字段内容较多,可以考虑分页显示。
- 如果需要更复杂的逻辑,可以考虑编写自定义插件或扩展。

通过以上步骤,你应该能够在DIY页面中成功调用并显示特定分类信息字段的内容。如果你有更多问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

图文热点
关闭

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

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:216.73.216.102,GMT+8, 2025-6-28 02:54 , Processed in 0.297443 second(s), 83 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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