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

Discuz! 让分类信息代码功能研究

375 1

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

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

×
隐藏空值方法

template/default/forum/viewthread_node_body.htm找到



  1. function threadsortshow($sortid, $tid) {        global $_G;        loadcache(array('threadsort_option_'.$sortid, 'threadsort_template_'.$sortid));        $sortoptionarray = $_G['cache']['threadsort_option_'.$sortid];        value        $templatearray = $_G['cache']['threadsort_template_'.$sortid];        $threadsortshow = $optiondata = $searchtitle = $searchvalue = $searchunit = $memberinfofield = $_G['forum_option'] = array();        if($sortoptionarray) {                foreach(C::t('forum_typeoptionvar')->fetch_all_by_tid_optionid($tid) as $option) {                        $optiondata[$option['optionid']]['value'] = $option['value'];                        $optiondata[$option['optionid']]['expiration'] = $option['expiration'] && $option['expiration'] <= TIMESTAMP ? 1 : 0;                        $sortdataexpiration = $option['expiration'];                }                foreach($sortoptionarray as $optionid => $option) {                        $_G['forum_option'][$option['identifier']]['title'] = $option['title'];                        $_G['forum_option'][$option['identifier']]['unit'] = $option['unit'];                        $_G['forum_option'][$option['identifier']]['type'] = $option['type'];                        if(($option['expiration'] && !$optiondata[$optionid]['expiration']) || empty($option['expiration'])) {                                if(!protectguard($option['protect'])) {                                        if($option['type'] == 'checkbox') {                                                $_G['forum_option'][$option['identifier']]['value'] = '';                                                foreach(explode("\t", $optiondata[$optionid]['value']) as $choiceid) {                                                        $_G['forum_option'][$option['identifier']]['value'] .= $option['choices'][$choiceid].' ';                                                }                                        } elseif($option['type'] == 'radio') {                                                $_G['forum_option'][$option['identifier']]['value'] = $option['choices'][$optiondata[$optionid]['value']];                                        } elseif($option['type'] == 'select') {                                                $tmpchoiceid = $tmpidentifiervalue = array();                                                foreach(explode('.', $optiondata[$optionid]['value']) as $choiceid) {                                                        $tmpchoiceid[] = $choiceid;                                                        $tmpidentifiervalue[] = $option['choices'][implode('.', $tmpchoiceid)];                                                }                                                $_G['forum_option'][$option['identifier']]['value'] = implode(' » ', $tmpidentifiervalue);                                                unset($tmpchoiceid, $tmpidentifiervalue);                                        } elseif($option['type'] == 'image') {                                                $imgoptiondata = dunserialize($optiondata[$optionid]['value']);                                                $threadsortshow['sortaids'][] = $imgoptiondata['aid'];                                                if(empty($templatearray['viewthread'])) {                                                        $maxwidth = $option['maxwidth'] ? 'width="'.$option['maxwidth'].'"' : '';                                                        $maxheight = $option['maxheight'] ? 'height="'.$option['maxheight'].'"' : '';                                                        if(!defined('IN_MOBILE')) {                                                                $_G['forum_option'][$option['identifier']]['value'] = $imgoptiondata['url'] ? "<img src="".$imgoptiondata['url']."" onload="thumbImg(this)" $maxwidth $maxheight border="0">" : '';                                                        } else {                                                                $_G['forum_option'][$option['identifier']]['value'] = $imgoptiondata['url'] ? "<a href="".$imgoptiondata['url']."" target="_blank">".lang('forum/misc', 'click_view')."</a>" : '';                                                        }                                                } else {                                                        $_G['forum_option'][$option['identifier']]['value'] = $imgoptiondata['url'] ? $imgoptiondata['url'] : './static/image/common/nophoto.gif';                                                }                                        } elseif($option['type'] == 'url') {                                                $_G['forum_option'][$option['identifier']]['value'] = $optiondata[$optionid]['value'] ? "<a href="".$optiondata[$optionid]['value']."" target="_blank">".$optiondata[$optionid]['value']."</a>" : '';                                        } elseif($option['type'] == 'number') {                                                $_G['forum_option'][$option['identifier']]['value'] = $optiondata[$optionid]['value'];                                        } else {                                                if($option['protect']['status'] && $optiondata[$optionid]['value']) {                                                        $optiondata[$optionid]['value'] = $option['protect']['mode'] == 1 ? '<image src="'.stringtopic($optiondata[$optionid]['value']).'">' : (!defined('IN_MOBILE') ? '<span id="sortmessage_'.$option['identifier'].'"><a href="###" onclick="ajaxget(\'forum.php?mod=misc&action=protectsort&tid='.$tid.'&optionid='.$optionid.'\', \'sortmessage_'.$option['identifier'].'\');return false;">'.lang('forum/misc', 'click_view').'</a></span>' : $optiondata[$optionid]['value']);                                                        $_G['forum_option'][$option['identifier']]['value'] = $optiondata[$optionid]['value'] ? $optiondata[$optionid]['value'] : $option['defaultvalue'];                                                } elseif($option['type'] == 'textarea') {                                                        $_G['forum_option'][$option['identifier']]['value'] = $optiondata[$optionid]['value'] != '' ? nl2br($optiondata[$optionid]['value']) : '';                                                } else {                                                        $_G['forum_option'][$option['identifier']]['value'] = $optiondata[$optionid]['value'] != '' ? $optiondata[$optionid]['value'] : $option['defaultvalue'];                                                }                                        }                                } else {                                        if(empty($option['permprompt'])) {                                                $_G['forum_option'][$option['identifier']]['value'] = lang('forum/misc', 'view_noperm');                                        } else {                                                $_G['forum_option'][$option['identifier']]['value'] = $option['permprompt'];                                        }                                }                        } else {                                $_G['forum_option'][$option['identifier']]['value'] = lang('forum/misc', 'has_expired');                        }                }                $typetemplate = '';                if($templatearray['viewthread']) {                        foreach($sortoptionarray as $option) {                                $searchtitle[] = '/{('.$option['identifier'].')}/';                                $searchvalue[] = '/\[('.$option['identifier'].')value\]/';                                $searchvalue[] = '/{('.$option['identifier'].')_value}/';                                $searchunit[] = '/\[('.$option['identifier'].')unit\]/';                                $searchunit[] = '/{('.$option['identifier'].')_unit}/';                        }                        $threadexpiration = $sortdataexpiration ? dgmdate($sortdataexpiration) : lang('forum/misc', 'never_expired');                        $typetemplate = preg_replace(array("/\{expiration\}/i"), array($threadexpiration), stripslashes($templatearray['viewthread']));                        $typetemplate = preg_replace_callback($searchtitle, "threadsortshow_callback_showoption_title1", $typetemplate);                        $typetemplate = preg_replace_callback($searchvalue, "threadsortshow_callback_showoption_value1", $typetemplate);                        $typetemplate = preg_replace_callback($searchunit, "threadsortshow_callback_showoption_unit1", $typetemplate);                }        }        $threadsortshow['optionlist'] = !$optionexpiration ? $_G['forum_option'] : 'expire';        $threadsortshow['typetemplate'] = $typetemplate;        $threadsortshow['expiration'] = dgmdate($sortdataexpiration, 'd');        return $threadsortshow;}
复制代码
我要说一句 收起回复

评论1

Discuz智能体Lv.8 发表于 2025-3-17 06:22:19 | 查看全部
在Discuz!中,分类信息功能允许用户在发帖时选择特定的分类,并根据分类的不同显示不同的字段。你提到的代码片段是用于处理分类信息显示的逻辑,特别是如何隐藏空值的字段。

### 隐藏空值字段的方法

要隐藏空值的字段,你可以通过修改模板文件 `template/default/forum/viewthread_node_body.htm` 中的相关代码来实现。具体来说,你可以在显示分类信息字段时,检查字段的值是否为空,如果为空则不显示该字段。

以下是一个简化的示例,展示如何在模板中隐藏空值的字段:

  1. function threadsortshow($sortid, $tid) {
  2.     global $_G;
  3.     loadcache(array('threadsort_option_'.$sortid, 'threadsort_template_'.$sortid));
  4.     $sortoptionarray = $_G['cache']['threadsort_option_'.$sortid];
  5.     $templatearray = $_G['cache']['threadsort_template_'.$sortid];
  6.     $threadsortshow = $optiondata = $searchtitle = $searchvalue = $searchunit = $memberinfofield = array();

  7.     if($sortoptionarray) {
  8.         foreach(C::t('forum_typeoptionvar')->fetch_all_by_tid_optionid($tid) as $option) {
  9.             $optiondata[$option['optionid']] = $option['value'];
  10.             if(!empty($option['value'])) {
  11.                 // 如果字段值不为空,则继续处理
  12.                 if($option['type'] == 'checkbox') {
  13.                     $threadsortshow[$option['optionid']] = implode(', ', explode("\t", $option['value']));
  14.                 } elseif($option['type'] == 'radio' || $option['type'] == 'select') {
  15.                     $threadsortshow[$option['optionid']] = $option['value'];
  16.                 } elseif($option['type'] == 'image') {
  17.                     $imgoptiondata = dunserialize($option['value']);
  18.                     $threadsortshow[$option['optionid']] = $imgoptiondata ? "<img src='$imgoptiondata' />" : '';
  19.                 } elseif($option['type'] == 'url') {
  20.                     $threadsortshow[$option['optionid']] = $option['value'] ? "<a href='$option[value]' target='_blank'>$option[value]</a>" : '';
  21.                 } elseif($option['type'] == 'number') {
  22.                     $threadsortshow[$option['optionid']] = $option['value'];
  23.                 } else {
  24.                     $threadsortshow[$option['optionid']] = $option['value'];
  25.                 }
  26.             }
  27.         }

  28.         $typetemplate = '';
  29.         if($templatearray) {
  30.             foreach($sortoptionarray as $option) {
  31.                 $searchtitle = '/{('.$option['identifier'].')}/';
  32.                 $searchvalue = '/{('.$option['identifier'].')_value}/';
  33.                 $searchunit = '/{('.$option['identifier'].')_unit}/';
  34.             }
  35.             $threadexpiration = $sortdataexpiration ? dgmdate($sortdataexpiration) : lang('forum/misc', 'never_expired');
  36.             $typetemplate = preg_replace(array("/\{expiration\}/i"), array($threadexpiration), stripslashes($templatearray));
  37.             $typetemplate = preg_replace_callback($searchtitle, "threadsortshow_callback_showoption_title1", $typetemplate);
  38.             $typetemplate = preg_replace_callback($searchvalue, "threadsortshow_callback_showoption_value1", $typetemplate);
  39.             $typetemplate = preg_replace_callback($searchunit, "threadsortshow_callback_showoption_unit1", $typetemplate);
  40.         }
  41.     }

  42.     return $typetemplate;
  43. }
复制代码


### 关键点解释:
1. **检查字段值是否为空**:在遍历分类信息字段时,通过 `if(!empty($option['value']))` 检查字段值是否为空。如果为空,则不处理该字段。
2. **根据字段类型处理显示**:根据字段的类型(如 `checkbox`、`radio`、`select`、`image` 等),对字段值进行相应的处理,并将其存储在 `$threadsortshow` 数组中。
3. **模板替换**:最后,使用 `preg_replace_callback` 将模板中的占位符替换为实际的值。

### 注意事项:
- 该代码片段是一个简化的示例,实际应用中可能需要根据你的具体需求进行调整。
- 如果你对Discuz!的模板和PHP代码不熟悉,建议在修改前备份相关文件,以免造成不必要的错误。

通过这种方式,你可以实现隐藏空值字段的功能,使分类信息显示更加简洁和用户友好。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

关闭

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

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:3.14.146.45,GMT+8, 2025-4-11 03:51 , Processed in 0.276686 second(s), 73 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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