各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > phpcms

解决网站建设中phpcms会员投稿显示全部栏目的问题

管理员 2022-08-28
phpcms
244
  phpcms是开源的一套cms系统程序,目前也是网站建设公司程序员使用最多的cms系统之一,在phpcms中有集成的会员系统,会员可以进行在线投稿,网站管理员可设置哪些栏目允许投稿,哪些栏目不允许投稿。当用户在个人中心进行投稿的过程中,选择需要投稿栏目,进行投稿。但是我们发现,phpcms v9自带的投稿功能,在选择栏目时,及时没有设置允许投稿的栏目,也会在下拉菜单中显示,用户点击不允许投稿的栏目,会提示“没有投稿权限”,这样很不方便,所以需要修改程序,让只有允许投稿的栏目才会显示,不允许投稿的栏目不显示。

一、先直接说明解决办法:

①、打开phpcms---libs---classes---form.class.php文件
②、找到“public static function select_category”函数
③、在该函数中,找到“”if($is_push=='1' and $r['child']=='0'){“这句话
④、把它下面一行修改为”$sql = array('catid'=>$r['catid'],'is_admin'=>'0','roleid'=>$user_groupid,'action'=>'add');“
⑤、进入后台,更新缓存,刷新用户中心
注:以下是分析原因,只修改问题的用户可忽略以下所有文字。
二、分析造成该情况的原因:

①、在后台添加了新的管理员,并对管理员设置了对应的管理栏目权限。
②、PHPCMS本身只是读取了”category_priv“这个表的所有内容,并没有对是否是管理员进行判断。
③、如果没有添加新的管理员,并没有为新管理员设置管理栏目权限,不会出现以上问题。
④、在$sql语句中加入”is_admin'=>'0'“是为了,增加一条SQL判断,区分是否为管理员还是用户组。



以上信息转自:腾飞网络 http://www.0531soso.com/wlzs/phpcms_tougao.html


【网上通用方法】  这种方法我没有设置成功 ,不知道是不是我修改的问题,大家也可以试一下!


把phpcms/modules/member/content.php第114行至121行
foreach ($CATEGORYS as $catid=>$cat) {

if($cat['siteid']==$siteid && $cat['child']==0 && $cat['type']==0 && $priv_db->get_one(array('catid'=>$catid, 'roleid'=>$memberinfo['groupid'], 'is_admin'=>0, 'action'=>'add'))) break;

}
$catid = $_GET['catid'] ? intval($_GET['catid']) : $catid;
if (!$catid) showmessage(L('category').L('publish_deny'), APP_PATH.'index.php?m=member');

//判断本栏目是否允许投稿

if (!$priv_db->get_one(array('catid'=>$catid, 'roleid'=>$memberinfo['groupid'], 'is_admin'=>0, 'action'=>'add'))) showmessage(L('category').L('publish_deny'), APP_PATH.'index.php?m=member');


上面一块替换成:

foreach ($CATEGORYS as $catid=>$cat) {
if($cat['siteid']==$siteid && $cat['child']==0 && $cat['type']==0 && (!$priv_db->get_one(array('catid'=>$catid, 'is_admin'=>0, 'action'=>'add')) || $priv_db->get_one(array('catid'=>$catid, 'roleid'=>$memberinfo['groupid'], 'is_admin'=>0, 'action'=>'add')))) break;

}

$catid = $_GET['catid'] ? intval($_GET['catid']) : $catid;
//判断本栏目是否允许投稿
if ($priv_db->get_one(array('catid'=>$catid, 'is_admin'=>0, 'action'=>'add')) && !$priv_db->get_one(array('catid'=>$catid, 'roleid'=>$memberinfo['groupid'], 'is_admin'=>0, 'action'=>'add'))) showmessage(L('category').L('publish_deny'), APP_PATH.'index.php?m=member');

我没有修改成功,不代表此段代码不能用,大家可以试一下,如果成功,希望能留言发出来,谢谢了

相关推荐

扫码关注

qrcode

QQ交谈

回顶部