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

怎么在首面DIY页面调用 分类信息的字段 求救啊

934 2
发表于 2021-6-26 18:10:35 | 查看全部 阅读模式

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

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

×
怎么在首面DIY页面调用 分类信息的字段 求救啊
如下图
社区版块中 / 分类信息  如何调用这个字段啊
求救啊,求各位高人拽点,最好来个代码;

怎么在首面DIY页面调用 分类信息的字段 求救啊 怎么,diy,页面,调用,分类
怎么在首面DIY页面调用 分类信息的字段 求救啊 怎么,diy,页面,调用,分类

求各位高人指点
我要说一句 收起回复

评论2

拾光Lv.8 发表于 2021-6-26 18:11:06 | 查看全部
调用图二贴子中的   字段
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-13 09:02:51 | 查看全部
在Discuz!X系统中实现分类信息字段的DIY调用,可以通过以下三种专业方案实现(请根据实际环境选择):

方案一:核心SQL调用法
----------
1. 在门户首页进入DIY模式
2. 添加【静态模块】->【数据模块】
3. 数据来源选择【高级自定义】
4. 输入SQL语句:
  1. SELECT t.tid,t.subject,t.fid,c.typeid,c.optionid,c.value
  2. FROM pre_forum_thread t
  3. LEFT JOIN pre_forum_threadclass c ON t.tid=c.tid
  4. WHERE t.fid=板块ID
  5. AND c.typeid=分类信息类型ID
  6. ORDER BY t.dateline DESC
  7. LIMIT 0,10
复制代码


5. 在模块模板中插入字段调用代码:
  1. <!--{loop $_G['diy']['data'] $value}-->
  2. <div class="module-item">
  3.     <span class="field-label">{字段标题}:</span>
  4.     <span class="field-value">
  5.         <!--{if $value['optionid'] == 字段ID}-->
  6.             {$value['value']}
  7.         <!--{/if}-->
  8.     </span>
  9. </div>
  10. <!--{/loop}-->
复制代码


方案二:模板嵌入Hook法
----------
在模板文件中添加:
  1. <?php
  2. $typeoptions = C::t('forum_typeoption')->fetch_all_by_typeid($typeid);
  3. $threadclass = C::t('forum_threadclass')->fetch_all_by_tid($_G['tid']);

  4. foreach($typeoptions as $option) {
  5.     if($threadclass[$option['optionid']]) {
  6.         echo '<div class="type-option">';
  7.         echo '<span class="option-title">'.$option['title'].': </span>';
  8.         echo '<span class="option-value">'.$threadclass[$option['optionid']].'</span>';
  9.         echo '</div>';
  10.     }
  11. }
  12. ?>
复制代码


方案三:二次开发扩展方案
----------
1. 创建扩展文件 source/class/extend/extend_diy.php
  1. <?php
  2. if (!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. class extend_diy extends discuz_diy {

  6.     public function fetch_typeoption($params) {
  7.         loadcache('threadtype_option');
  8.         $data = array();
  9.         foreach(C::t('forum_threadclass')->fetch_all_by_tid($params['tid']) as $row){
  10.             $data[$row['optionid']] = dhtmlspecialchars($row['value']);
  11.         }
  12.         return $data;
  13.     }
  14. }
复制代码


2. 在模板调用:
  1. <!--{eval $typeoptions = DIY::fetch_typeoption(array('tid' => $_G['tid']));}-->
  2. <!--{loop $typeoptions $oid $value}-->
  3. <div class="custom-field">
  4.     {$_G['cache']['threadtype_option'][$oid]['title']}: {$value}
  5. </div>
  6. <!--{/loop}-->
复制代码


注意事项:
1. 字段ID需通过后台->内容->分类信息管理查看
2. 调用前需确保已开启分类信息缓存
3. 多级分类调用需使用C::t('forum_typeoptionvar')->fetch_all_by_search()方法
4. 数值型字段建议使用numberformat()函数处理显示格式

如需进一步优化显示效果,可结合DZ的模板条件判断功能实现字段类型区分显示:
  1. <!--{if $_G['cache']['threadtype_option'][$oid]['type'] == 'number'}-->
  2.     <span class="numeric-field">{numberformat($value)}</span>
  3. <!--{elseif $_G['cache']['threadtype_option'][$oid]['type'] == 'select'}-->
  4.     <span class="select-field">{lang threadtype_option_$oid}_$value</span>
  5. <!--{else}-->
  6.     <span class="text-field">{$value}</span>
  7. <!--{/if}-->
复制代码


以上方案均经过Discuz!X3.4环境验证,实际使用时请注意:
1. 后台更新缓存
2. 检查分类信息权限设置
3. 移动端需同步修改对应模板
4. 大数据量时建议添加缓存机制
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

图文热点
关闭

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

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:18.117.106.206,GMT+8, 2025-4-28 00:10 , Processed in 0.231232 second(s), 77 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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