PageAdmin网站内容管理系统(CMS)交流论坛

注册

 

QQ登录

只需一步,快速开始

发新话题 回复该主题

折腾了一下午,总算凑合出了单条详细内容只有登录用户才能看的设... [复制链接]

1#
最初的想法是某个栏目下,非登录用户只能看标题,但不能看详细内容。
一开始安装的PA版本是没有设置栏目组权限的功能的,后来升级了新版本后有这功能了,那就利用勾选会员组来限制某个栏目的阅读权限的:




但这样有个问题,就是整个栏目内的具体条目内容根本看不到,屏幕上是空白的,提示要登陆后才能访问。

因为设想是要能看到list,但不能看到具体内容。

后来看了一遍官网的“帮助”文件,翻了一遍本论坛的内容,总算通过修改该栏目的模板解决了。
最后编辑reachall 最后编辑于 2024-08-06 15:04:36
分享 转发
TOP
2#

凑合的解决办法是 :

为这个栏目专门在Templates的目录里的views专门建一个文件夹,把要参考的Detail.cshtml拷贝进来,对这个模板进行修改,然后要限制观看栏目的内容就调用这个模板就可以。
官网上参考的网页是https://www.pageadmin.net/help/113.cshtml
TOP
3#

@{
    var infoData=Html.InfoData();
    int infoId =Html.CurrentInfoId();
    int columnId=infoData.ColumnId;
    //参数3和参数4分别为sql条件和sql参数
    var prevData=Html.InfoDataPrevious(columnId,infoId,"columnId=@columnId",new{columnId=columnId});
    var nextData=Html.InfoDataNext(columnId,infoId,"columnId=@columnId",new{columnId=columnId});
}

@{
    CurrentUser currentUser=ViewBag.CurrentUser; //获取当前登录用户
    int uid=currentUser.Uid; //获取用户Id,未登录uid为0
    string userName=currentUser.UserName;//获取用户名

}

<div class="container padding-top-20">
    <div class="row">
        <div class="col-md-3">
            @Html.Partial("subNavPartial")
        </div>
        <div class="col-md-9">
            @Html.Partial("BreadcrumbPartial")
            <div class="info-content">
                <h4 class="text-center line-height-3">@infoData.Title</h4>
                <div class="text-center">
                    <span title="发布时间" class="margin-right-20"><i class="fa fa-clock-o"></i> @infoData.Thedate.ToString("yyyy-MM-dd")</span>
                    <span title="点击数"><i class="fa fa-eye"></i> <span id="lb_clicks">0</span></span>
                </div>
@{
    if (uid == 0)
    {
        //未登录的逻辑
                <div><br><a href="/member/login/"> <font color='blue'><center><u>已注册用户请登录后阅读受限内容</u></center></font></a> <br><center>
                    <a href="/member/reg/"> <font color='blue'><u>未注册者请注册新用户登陆后阅读</u></font></a></center> </div>
    }
    else
    {
        //已经登录的逻辑
                <div><center>欢迎您,@currentUser.UserName !</center> @Html.Raw(infoData.Content)</div>
    
    }
}      
                
                
            <div class="info-content padding-top-20" id="Content">
                </div>
            </div>

            <div class="clearfix padding-top-20 line-height-2">
                <ul>
                    @if (prevData != null)
                    {
                        string url = Html.InfoDataUrl((int)prevData.ColumnId, (int)prevData.Id);
                        <li class="text-gray">上一篇:<a href="@url">@prevData.Title</a></li>
                    }
                    @if (nextData != null)
                    {
                        string url = Html.InfoDataUrl((int)nextData.ColumnId, (int)nextData.Id);
                        <li class="text-gray">下一篇:<a href="@url">@nextData.Title</a></li>
                    }
                </ul>
            </div>

        </div>
    </div>
</div>


<script type="text/javascript">
    var $lb_clicks = $("#lb_clicks");
    $.post("/E/InfoData/AddClicks", { ColumnIdinfoData.ColumnId,IdinfoData.Id}, function (data) { $lb_clicks.text(data)})
</script>
TOP
4#

上面那个是判断是否为注册登陆的用户,如果是的话,可以阅读栏目文章的内容,如果不是的话,转去登陆或者新用户注册。
TOP
5#

下午又修改了一种新模式,就是判断是否是某个特定用户组的成员,如果是的话可以阅读相应栏目文章的内容,如果不是则显示无权限。对应判断的代码如下:
@{
    CurrentUser currentUser = ViewBag.CurrentUser; // 获取当前登录用户
    int memberGroupId = currentUser.MemberGroupId; // 尝试获取用户所属的memberGroupId
    int targetMemberGroupId = 6; // 假设你要允许阅读栏目内容的目标memberGroupId是6,这个值在后台用户设置里面可以查询到设置的用户组相应的Id。

    // 显示信息内容的条件改为判断memberGroupId
    if (memberGroupId == targetMemberGroupId)
    {
        // 用户属于指定的memberGroupId,显示信息内容
        <div><center>欢迎您,@currentUser.UserName !</center> @Html.Raw(infoData.Content)</div>
    }
    else
    {
        // 用户不属于指定的memberGroupId,显示错误信息或引导用户进行相应操作
        <div><br><a href="/member/"> <font color='blue'><center><u>您没有权限查看此内容,仅供公司在职员工登陆后查阅</u></center></font></a></div>
    }
}
最后编辑reachall 最后编辑于 2024-08-08 19:13:42
TOP
6#

厉害,辛苦了,感谢分享!
TOP
发新话题 回复该主题