返回列表 发布新帖
查看: 36|回复: 2

[代码技巧] 解决社区名人堂/荣誉榜插件的用户资料页钩子挂载显示问题

[复制链接]
SunJu_FaceMall
社区贡献

123

主题

177

回帖

1万

积分

等级头衔
Icon组别 : 管理员
Icon等级 :

积分成就
   钻石 : 544 颗
   贡献 : 929 点
   金币 : 4 枚
Icon在线时间 : 1221 小时
Icon注册时间 : 2024-11-22
Icon最后登录 : 2025-10-2

荣誉勋章

会员LV.1会员LV.2会员LV.3会员LV.4会员LV.5会员LV.6会员LV.7会员LV.8会员LV.9会员LV.10

覆盖·可能

飞流名人堂成员

1

实名认证 vip vip-year FLLTCN发表于 4 天前 | 查看全部 |阅读模式 浙江金华

资源无需等待,交易就趁现在,全面资源整合网络大咖云集,让你轻松玩转互联网!

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

×
我在六月份时候开始使用这个功能插件,早先就发现了这个问题,也没有深入研究,现在终于解决了,下面记录一下解决方法。
首先我们定位问题文件/source/plugin/viewui_famous/hook.class.php(此为插件PC钩子文件)
搜索关键词space_profile_baseinfo_top_output
image.webp
我们替换为优化后的代码
public function space_profile_baseinfo_middle_output(){
  •     global $_G;
  •     $output = '';
  •    
  •     // 获取当前访问的目标用户ID
  •     $targetUid = intval($_GET['uid']);
  •     if(empty($targetUid)){
  •         return $output; // 用户ID为空,返回空
  •     }
  •    
  •     // 关键:查询目标用户的用户组ID
  •     $targetGroupId = DB::result_first(
  •         "SELECT groupid FROM %t WHERE uid = %d",
  •         array('common_member', $targetUid)
  •     );
  •     if(empty($targetGroupId)){
  •         return $output; // 无用户组信息,返回空
  •     }
  •    
  •     // 查询该用户的名人堂荣誉
  •     $honors = C::t('#viewui_famous#viewui_famous_people')->FetchPeopleHonors($targetUid);
  •    
  •     // 验证条件:用户组权限+是名人堂用户+有荣誉信息
  •     if($this->CheckUse($targetGroupId) && $this->CheckFamous($targetUid) && !empty($honors)){
  •         $output .= '<h2 class="mbn" style="color: red;">'.lang('plugin/viewui_famous', 'gethonortitle').'</h2><ul>';
  •         foreach($honors as $honor){
  •             // 拼接荣誉信息HTML(包含链接和描述)
  •             $output .= '<li>';
  •             $output .= '<a href="plugin.php?id=viewui_famous&type='.$honor['typeid'].'#viewui-famous-famouslist-'.$honor['honorid'].'">';
  •             $output .= $honor['name'].lang('plugin/viewui_famous', 'doc').$honor['honorname'];
  •             if(!empty($honor['summary'])){
  •                 $output .= '<span style="color: #ff4800;">'.$honor['summary'].'</span>';
  •             }
  •             $output .= '</a></li>';
  •         }
  •         $output .= '</ul>';
  •     }
  •    
  •     return $output;
  • }
  • 我们继续搜索关键词space_profile_baseinfo_top_output
    image.webp
    替换为优化后的代码
    public function space_profile_baseinfo_top_output(){
  •     global $_G;
  •     $output = '';
  •    
  •     // 获取当前访问的目标用户ID(从URL参数中获取)
  •     $targetUid = intval($_GET['uid']);
  •     if(empty($targetUid)){
  •         return $output; // 若用户ID为空,直接返回空
  •     }
  •    
  •     // 关键:通过用户ID查询其对应的用户组ID(groupid)
  •     $targetGroupId = DB::result_first(
  •         "SELECT groupid FROM %t WHERE uid = %d",
  •         array('common_member', $targetUid) // 查询Discuz用户表(common_member)
  •     );
  •     // 若查询不到用户组(如用户不存在),直接返回
  •     if(empty($targetGroupId)){
  •         return $output;
  •     }
  •    
  •     // 验证条件:使用用户组ID调用CheckUse,同时验证是否为名人堂用户及功能是否启用
  •     if($this->CheckUse($targetGroupId) && $this->CheckFamous($targetUid) && ($this->openUserNameColor || $this->openUserNameBlod || $this->openIcon)){
  •         $script = '';
  •         // 目标元素选择器:用户名称容器(.kmtit .kmname)
  •         $targetSelector = 'document.querySelector(\'.kmtit .kmname\')';
  •         
  •         // 1. 设置字体加粗(如果启用)
  •         if($this->openUserNameBlod){
  •             $script .= 'var targetEl = '.$targetSelector.';';
  •             $script .= 'if(targetEl) targetEl.style.fontWeight = \'800\';';
  •         }
  •         
  •         // 2. 设置文字颜色/渐变(如果启用)
  •         if($this->openUserNameColor){
  •             $script .= 'var targetEl = '.$targetSelector.';';
  •             $script .= 'if(targetEl){';
  •             // 处理渐变色(若颜色值含linear-gradient)
  •             if(strpos($this->userNameColor, 'linear-gradient') !== false){
  •                 $script .= 'targetEl.style.background = \''.$this->userNameColor.'\';';
  •                 $script .= 'targetEl.style.webkitBackgroundClip = \'text\';';
  •                 $script .= 'targetEl.style.backgroundClip = \'text\';';
  •                 $script .= 'targetEl.style.color = \'transparent\';';
  •             }else{
  •                 // 普通颜色直接设置color
  •                 $script .= 'targetEl.style.color = \''.$this->userNameColor.'\';';
  •             }
  •             $script .= '}';
  •         }
  •         
  •         // 3. 添加名人堂图标(如果启用)
  •         if($this->openIcon){
  •             $script .= 'var targetEl = '.$targetSelector.';';
  •             $script .= 'if(targetEl){';
  •             $script .= 'targetEl.innerHTML += \'<a href="plugin.php?id=viewui_famous&mod=my"></a>\';';
  •             $script .= '}';
  •         }
  •         
  •         $output .= '<script>'.$script.'</script>';
  •     }
  •    
  •     return $output;
  • }
  • 解释一下不加载钩子的原因及修复关键
    • 已修正 CheckUse 参数传递错误,确保传入用户组 ID 而非用户 ID
    • 由于我使用的是第三方模板,原代码依赖的 .vwmy和.hud 元素不存在,需将目标元素替换为自己的哦

    路虽远,行则将至;事虽难,做则必成。
    SunJu_FaceMall
    社区贡献

    29

    主题

    66

    回帖

    2716

    积分

    等级头衔
    Icon组别 : 管理员
    Icon等级 :

    积分成就
       钻石 : 48 颗
       贡献 : 8423 点
       金币 : 0 枚
    Icon在线时间 : 209 小时
    Icon注册时间 : 2025-5-6
    Icon最后登录 : 2025-10-2

    荣誉勋章

    神评新秀

    风云·优秀版主

    飞流管家名人堂成员

    10000

    vip ChuanQi发表于 3 天前 来自手机端 | 查看全部 浙江金华
    宝藏主题,千万别火,我不想被别人看到!
    诚信连接交易,资源创造价值。
    社区贡献

    57

    主题

    257

    回帖

    5741

    积分

    等级头衔
    Icon组别 : 老兵
    Icon等级 :

    积分成就
       钻石 : 1 颗
       贡献 : 14453 点
       金币 : 0 枚
    Icon在线时间 : 1090 小时
    Icon注册时间 : 2024-12-15
    Icon最后登录 : 2025-10-1

    荣誉勋章

    在线时间LV.1在线时间LV.2起源之星(限定)儿童节端午节钉卡在线时间LV.3

    难怪刚刚在天上没看见你呢,原来是下凡了!
    诚信连接交易,资源创造价值。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    飞流广播+ 发布

    系统消息:柒沐已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    09-24 09:00
    系统消息:柒沐已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    09-11 11:40
    系统消息:柒沐已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    09-02 09:17
    系统消息:柒沐已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    08-27 08:56
    系统消息:柒沐已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    08-20 15:12
    系统消息:柒沐已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    08-03 10:22
    系统消息:柒沐已经连续答对10道难题,逆天学霸谁与争锋?!#每日答题#
    06-30 08:57
    系统消息:柒沐已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    06-18 09:14
    系统消息:清风网络已经连续答对10道难题,逆天学霸谁与争锋?!#每日答题#
    04-11 09:40
    系统消息:清风网络已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    04-10 09:31
    系统消息:IXM77777已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    04-09 13:44
    系统消息:清风网络已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    04-09 09:22
    系统消息:柒沐已经连续答对10道难题,逆天学霸谁与争锋?!#每日答题#
    04-09 08:52
    系统消息:清风网络已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    04-08 09:24
    系统消息:柒沐已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    04-07 09:02
    系统消息:柒沐已经连续答对10道难题,逆天学霸谁与争锋?!#每日答题#
    02-27 09:35
    系统消息:柒沐已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    02-26 09:06
    系统消息:柒沐已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    02-25 08:49
    系统消息:飞流安卓客户端APP已上线,请在QQ群(123129)群文件内获取下载。
    02-21 02:22
    系统消息:四哥已经连续答对3道难题,逆天学霸谁与争锋?!#每日答题#
    12-14 12:55
    站内通告

    提供资源交易、信息共享、靓号交流、技术变现、学习问答、兴趣娱乐等全面服务。

    1.丰富功能系统,扩展社区特色玩法,打造最好的互联网聚集圈子。

    2.准确信息真实交易,安全快捷又方便,让虚拟交易面对面。

    3. 天上不会掉馅饼,话术骗术迷人心,切勿脱离平台线下交易,被骗与平台无关!

    4. 欺诈骗钱,违规违法将视情受到警告&禁言&封号甚至检举至👮🏻‍♀️处理!

    官方Q群:123129钉推群:BAYR2383 站长QQ:3220000000

    投诉/建议/商务合作联系

    fl@fllt.cn

    严禁私下交易,被骗与本站无关。
    违反交易细则,取证立查严惩。
    • 钉钉新帖推送群
    • 官方交流QQ群
    • 站长唯一微信号

    👮曝光Ta|🧿小黑屋|📴手机页|飞流网 ( 渝ICP备2025054677号-1|电信增值许可 渝B2-20250789 )|网站地图

    GMT+8, 2025-10-2 03:27 , Processed in 0.082133 second(s), 68 queries, MemCached On , Gzip On.

    Based on XJ-TX X3.5 Licensed

    飞流论坛 HanAnalytics icp Astro vhAstro-Theme

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