源码网_提供网站源码、discuz、wordpress主题与插件和站长教程等资源的下载服务

eyoucms内容详情页无法调用会员昵称及手机号

好的,这个问题非常典型。在 EyouCMS 内容详情页(show.Html)无法调用会员昵称和手机号,通常是因为 “当前登录的会员信息”“当前文章的作者信息” 这两个概念被混淆了,或者没有正确的获取方式。下面我将详细解释原因,并提供几种解决方案。

image.png

核心原因分析

EyouCMS 中,内容详情页的核心变量是 $list,它包含了当前文章的所有信息。但是,$list对象里默认不包含作者(会员)的敏感信息,如手机号,这是出于安全考虑。昵称可能在某些配置下可以调用。

问题的关键在于:您想调用的是当前文章作者的昵称和手机号,还是当前正在浏览网页的已登录会员的昵称和手机号?

场景A:调用文章作者的资料(例如:在文章末尾显示作者联系方式)

场景B:调用当前登录会员的资料(例如:显示“欢迎您,[昵称]”)

我们将分别针对这两种场景提供解决方案。

场景A:调用当前文章作者的昵称和手机号

这是更常见的需求,比如在文章底部显示“本文作者:XXX,联系方式:XXX”。

方法一:使用内置字段(首选,但可能不包含手机号)

EyouCMS 可能已经将作者的基本信息映射到了 $list变量中。请在您的 show.html模板中尝试调用以下代码来检查:

<PRe class="ybc-pre-component ybc-pre-component_not-math"><!-- 在 show.html 模板中尝试打印 $list 数组,看有哪些作者信息 --> {php} dump($list); {/php}

这会显示 $list变量的所有内容。寻找与作者相关的字段,通常是:

$list.author(作者笔名)

$list.users_id(作者的用户ID)

如果幸运的话,可能会有 $list.nickname,但基本不可能有 $list.mobile(手机号)。

方法二:通过作者ID查询会员表(标准做法)

这是最可靠的方法。我们通过文章的 users_id去查询会员表,获取该会员的详细信息。

show.html模板中需要调用作者信息的地方,使用 EyouCMS 的数据库查询类:

<?php
// 1. 获取当前文章的作者ID
$authorId = $list['users_id'];

// 2. 如果作者ID存在,则查询会员表
if (!empty($authorId)) {
    $authorInfo = \think\Db::name('users') // 查询 users 表
                ->where('id', $authorId)   // 条件:id 等于 作者ID
                ->field('nickname, mobile') // 要查询的字段:昵称和手机号
                ->find();                   // 查询一条结果

    // 3. 判断是否查询到结果,然后输出
    if ($authorInfo) {
        echo "本文作者昵称:" . $authorInfo['nickname'];
        // 注意:手机号是敏感信息,请谨慎显示,例如部分打码
        if (!empty($authorInfo['mobile'])) {
            $mobile = $authorInfo['mobile'];
            $safeMobile = substr($mobile, 0, 3) . '****' . substr($mobile, -4); // 138****8888
            echo "联系方式:" . $safeMobile;
        }
    }
}
?>

注意: 直接显示用户手机号可能涉及隐私问题,请务必谨慎,最好做打码处理或征得用户同意。


场景B:调用当前已登录会员的昵称和手机号

这个需求通常用于在页面顶部显示登录状态。

方法:使用EyouCMS的会员全局变量

EyouCMS 会将已登录会员的信息存储在全局变量中,通常是 $users$user

show.html模板的顶部或任何需要的地方,使用以下代码:

{// 判断用户是否已登录}
{if isset($users) &AMP;& !empty($users)}
    <div class="user-info">
        <p>欢迎您,{$users.nickname}!</p>
        {//// 手机号同样是敏感信息,需要谨慎处理 ////}
        {if !empty($users.mobile)}
            <p>您的手机尾号是:{substr($users.mobile, -4)}</p>
        {/if}
    </div>
{else /}
    <div class="user-info">
        <a href="{:url('user/login/index')}">请登录</a>
    </div>
{/if}

关键点:

$users$user是系统为已登录会员预定义的全局变量。

你需要确认你的 EyouCMS 版本中使用的变量名是 $users还是 $user。可以尝试打印出来看看:{php} dump($users); {/php}


总结与排查步骤

场景

你想要的信息来自

关键变量/方法

注意事项

文章作者信息

写这篇文章的人

1. 检查 $list是否有相关字段。
2. 使用 $list[‘users_id’]查询数据库。

手机号是敏感信息,需打码或授权。

当前登录会员信息

正在浏览网页的用户

使用全局变量 $users$user

必须先判断用户是否已登录 (if isset($users))。

排查流程:

确认需求: 你到底要显示谁的信息?(作者 vs 访客)

打印变量调试(最重要的一步):show.html模板顶部附近加入以下代码,然后刷新页面查看输出结果,这是找到正确变量名的关键。

{php}
echo "<h4>当前文章信息 (\$list):</h4>";
dump($list);
echo "<h4>当前登录会员信息 (\$users):</h4>";
dump($users);
{/php}

根据调试结果选择上述方法: 看到数据结构后,你就能清楚地知道该用哪个变量了。

安全处理: 如果涉及手机号等隐私信息,务必进行打码显示。

按照以上步骤,你应该能成功在内容页调用到所需的会员信息。如果打印出的变量为空,那说明当前没有登录信息或数据关联有问题,需要检查会员登录状态或文章的数据关联。

本文链接:http://www.7ov.cn/xinwendongtai/2096.html

版权声明:站内所有文章皆来自网络转载,只供模板演示使用,并无任何其它意义!

联系客服
网站客服 业务合作 在线客服QQ
294169012
微信号
微信号
微信号
返回顶部