修改ecshop网站后台,实现文章内容可以按会员等级分配阅读权限,需要向数据库表ecs_article中,增加user_rank字段,类型为varchar型即可。
一、需要修改的文件:
1、后台目录下一般为:admin//article.PHP,这是数据处理程序文件
2、后台目录下:admin/templets/article_info.htm这是后台添加文档时的模板显示文件
3、文章访问时,前台显示页面:即网站根目录下article.php文件
4、文章访问前台的模板文件:根目录下/themes/default/article.dwt文件
以上总共4个文件,都需要做相应的修改。
二、每个文件中需要修改的内容:
1、article.php文件中:
在文件最后,添加获取用户等级函数:get_rank_list_wxch(),代码如下:
function get_rank_list_wxch()
{
$sql = "SELECT * FROM " . $GLOBALS['ecs']->table('user_rank') .
" ORDER BY min_points";
return $GLOBALS['db']->getAll($sql);
}
函数文件名称可以自行定义,也就是get_rank_list_wxch(),表示函数名称。在article.php这个文件中,分别有添加与编辑文档两处备注,
我们需要使用get_rank_list_wxch()这个函数,将系统中所有用户等级读取出来,并传值给模板文件,代码是
$smarty->assign('user_ranks', get_rank_list_wxch());
将以上代码,分别复制到编辑与添加相应位置中,目的是为了在添加文档及编辑文档时都将系统中的用户级别读取出来
在添加文章时,将用户等级保存到数据库即在
/*------------------------------------------------------ */
//-- 添加文章
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'insert')这个判断中,有一个sql语句:
$sql = "INSERT INTO ".$ecs->table('article')."(title, cat_id, article_type, is_open, author, ".
"author_email, keywords, content, add_time, file_url, open_type, link, description,user_rank,keyword1,keyword2,remarkdata) ".
"VALUES ('$_POST[title]', '$_POST[article_cat]', '$_POST[article_type]', '$_POST[is_open]', ".
"'$_POST[author]', '$_POST[author_email]', '$_POST[keywords]', '$_POST[FCKeditor1]', ".
"'$add_time', '$file_url', '$open_type', '$_POST[link_url]', '$_POST[description]','$ranks', '$_POST[keyword1]', '$_POST[keyword2]', '$_POST[remarkdata]')";
以上是已经修改好的语句了,中间增加了一个user_rank字段值的内容。
还需要在修改文章时,将文档权限读取出来,保存时将修改后的用户等级保存到数据库,所以需要在
/*------------------------------------------------------ */
//-- 编辑
/*------------------------------------------------------ */
if ($_REQUEST['act'] =='update'){
这段条件代码中修改成以下内容:
if ($exc->edit("title='$_POST[title]', cat_id='$_POST[article_cat]', article_type='$_POST[article_type]', is_open='$_POST[is_open]', author='$_POST[author]', author_email='$_POST[author_email]', keywords ='$_POST[keywords]', file_url ='$file_url', open_type='$open_type', content='$_POST[FCKeditor1]', link='$_POST[link_url]', description = '$_POST[description]',user_rank='$ranks',keyword1='$_POST[keyword1]',keyword2='$_POST[keyword2]',remarkdata='$_POST[remarkdata]'", $_POST['id']))
即增加保存到数据库的用户等级字段:即增加了user_rank='$ranks'这个内容。以上是修改好的内容,直接复制就行了。
程序文件就修改完了,接下来需要修改admin/templets/article_info.htm模板文件了。
2、admin/templets/article_info.htm模板文件:
在模板文件中,html是以表格进行布局的,你需要做的是在相应的表格行列位置,添加等级复选框,一般将他放在是否显示这一行下方即:
{$article.content}
,增加对用户等级的判断:{$article.content}
{else}对不起,您没有阅读权限!
{/if}