dede新增欄目如何無(wú)限分類
時(shí)間: 2018-12-06 11:51
閱讀: 次
作者:素材無(wú)憂網(wǎng)
用織夢(mèng)做過(guò)比較大型的網(wǎng)站,或者建過(guò)多級(jí)欄目,并且對(duì)用戶進(jìn)行欄目授權(quán)的人可能遇到過(guò),織夢(mèng)默認(rèn)的是最高只能授權(quán)到二級(jí)欄目,再往下分就不可以了。這樣就將整個(gè)指定的二級(jí)欄目及其下級(jí)的所有欄目都授權(quán)給了這個(gè)用戶,但是有的時(shí)候,我們想要單獨(dú)的給其授權(quán)某一個(gè)三級(jí)欄目或者四級(jí)欄目。那么目前織夢(mèng)的這個(gè)欄目設(shè)置就不合適了。所以今天因?yàn)楣ぷ鞯男枰易隽艘幌赂膭?dòng)。
不以解決問(wèn)題的學(xué)習(xí)都是耍流氓,今天既然遇到了這個(gè)問(wèn)題,就應(yīng)該想辦法解決。首先我看了一下這樣改動(dòng)之后會(huì)產(chǎn)生的影響。第一,既然是這樣的欄目可能是給外部的人用,所以要讓之前所擁有的用戶欄目授權(quán)不受影響,這樣是最好了,因?yàn)槲铱戳艘幌逻@個(gè)授權(quán)欄目的規(guī)則,其實(shí)就是通過(guò)一個(gè)admin表的typeid字段,只要指定一個(gè)或多個(gè)二級(jí)欄目的id,就可以在欄目管理,和發(fā)布文章,編輯文章的模塊檢索出這個(gè)id對(duì)應(yīng)的一級(jí)欄目id和其下所有的多級(jí)欄目id,進(jìn)行授權(quán),這樣他就可以管理這個(gè)整個(gè)的二級(jí)欄目了,那么我們要保證之前的所有用戶的這個(gè)規(guī)則不變,而又對(duì)新加的這用外部用戶定義一個(gè)新的規(guī)則。之前寫的url過(guò)濾,也是為了防止這些外部用戶的。第二,要同時(shí)修改文章發(fā)布和文章編輯的文章欄目選項(xiàng)。所以,我們就要對(duì)這些用戶加以區(qū)分了,區(qū)分內(nèi)部用戶和外部用戶,所以我們可以在admin加一個(gè)字段。具體做法如下:我只是簡(jiǎn)單將一下,這里提供下載,將對(duì)應(yīng)的文件覆蓋一下就可以了。
1、給admin表增加一個(gè)字段區(qū)分授權(quán)用戶。我加的是一個(gè)‘yesno’字段,1為授權(quán)用戶,默認(rèn)為0。如果你不能直接操作數(shù)據(jù)庫(kù)可用sql語(yǔ)句
PHPALTER TABLE `dede_admin` ADD `yesno` SMALLINT( 1 ) NOT NULL DEFAULT '0' AFTER `loginip`1 ALTER TABLE `dede_admin` ADD `yesno` SMALLINT( 1 ) NOT NULL DEFAULT '0' AFTER `loginip`
2、修改系統(tǒng)用戶管理的添加賬戶操作,
這個(gè)是我修改之后將所有的欄目讀出,默認(rèn)的是只讀到第二級(jí)欄目。做法是借鑒了文章發(fā)布時(shí)的欄目選擇。
a.找到sys_admin_user_add.php這個(gè)文件,在頭部加上這一句,require_once(DEDEADMIN.’/inc/inc_catalog_options.php’);進(jìn)而加載必要的函數(shù),
b.z找到$dsql->Execute(‘op’);將從他到include DedeInclude(‘templets/sys_admin_user_add.htm’);之間的部分不包括這兩個(gè)東東,換成$typeOptions .= GetOptionList(0,$cuserLogin->getUserChannel(),0)。這個(gè)你可以看一下,模板中通過(guò)$typeOptions得到的這些欄目列表,這個(gè)GetOptionList函數(shù)就能獲得所喲的欄目。這你訪問(wèn)sys_admin_user_add.php這個(gè)文件時(shí)就出來(lái)所有的欄目了。
3、第一步我們?cè)黾恿艘粋€(gè)yesno字段,那么我們這里就應(yīng)該在添加賬戶時(shí)用到了,找到sys_admin_user_add.htm模板,在安全驗(yàn)證串的后面加這樣一個(gè)單選框
<tr>
<td height=”30″>是否為外部編輯人員:</td>
<td style=”text-align:left;”>
<input type=”radio” name=”yesno” checked value=”0″ />否
<input type=”radio” name=”yesno” value=”1″ />是
</td>
</tr>,然后在sys_admin_user_add.php文件的if($dopost==’add’)條件里面的$inquery改為這樣
PHP$inquery = "INSERT INTO `dedecp_admin`(id,usertype,userid,pwd,uname,typeid,tname,email,yesno)VALUES('$mid','$usertype','$userid','$pwd','$uname','$typeid','$tname','$email','$yesno'); ";1 $inquery = "INSERT INTO `dedecp_admin`(id,usertype,userid,pwd,uname,typeid,tname,email,yesno)VALUES('$mid','$usertype','$userid','$pwd','$uname','$typeid','$tname','$email','$yesno'); ";
因?yàn)榭棄?mèng)已經(jīng)自動(dòng)將提交的name獲取,所以這里$yesno可以直接用。這訪問(wèn),我們要添加授權(quán)用戶選是就可以了。這里要注意的是,如果你選一個(gè)三級(jí)欄目,必須要將其所有的上級(jí)欄目選中,這樣我們?cè)谙旅娴娘@示的時(shí)候才能正常使用。
3、這樣就可以將欄目的id寫入admin表的typeid了。下面要改的就是后臺(tái)核心-網(wǎng)站欄目管理的顯示了。我們要讓其只顯示他授權(quán)的欄目。為了不影響以前的賬戶,那么我們可以做一下分流,通過(guò)這個(gè)yesno字段。欄目管理首先訪問(wèn)的是catalog_main.php這個(gè)文件,我們就在這里做分流,讓以前的不變,新加的訪問(wèn)新的模板和函數(shù),我是將這個(gè)文件整體改為這樣
PHPrequire_once(dirname(__FILE__)."/config.php");
//讀取用戶的新定義類型
global $dsql;
$id = $_SESSION['dede_admin_id'];
$dsql->SetQuery("select `yesno` from `dedecp_admin` where `id` = $id limit 0,1");
$dsql->Execute();
$row = $dsql->GetObject();
if(1==$row->yesno){
require_once(DEDEINC."/typeunit.class.admin1.php");
$userChannel = $cuserLogin->getUserChannel();
include DedeInclude('templets/catalog_main1.htm');
}else{
require_once(DEDEINC."/typeunit.class.admin.php");
$userChannel = $cuserLogin->getUserChannel();
include DedeInclude('templets/catalog_main.htm');
}12345678910111213141516 require_once(dirname(__FILE__)."/config.php");//讀取用戶的新定義類型global $dsql;$id = $_SESSION['dede_admin_id'];$dsql->SetQuery("select `yesno` from `dedecp_admin` where `id` = $id limit 0,1");$dsql->Execute();$row = $dsql->GetObject();if(1==$row->yesno){ require_once(DEDEINC."/typeunit.class.admin1.php"); $userChannel = $cuserLogin->getUserChannel(); include DedeInclude('templets/catalog_main1.htm');}else{ require_once(DEDEINC."/typeunit.class.admin.php"); $userChannel = $cuserLogin->getUserChannel(); include DedeInclude('templets/catalog_main.htm');}
這樣通過(guò)yesno字段,讓授權(quán)用戶訪問(wèn)新的catalog_main1.html模板,下面我們就看一下這個(gè)模板和這個(gè)typeunit.class.admin1.php怎么寫的需要用的文章我都打包好可以有需要和我聯(lián)系。只有照著里面說(shuō)明上傳一下就可以。其實(shí)我的改動(dòng)就是將一些敏感的東西去掉了一下等等。有興趣的可以看一下,改動(dòng)比較多的是typeunit.class.admin1.php這個(gè)文件,從新定義了一下他的讀取規(guī)則。
5、然后就是文章添加和編輯的修改,在這里,我都是進(jìn)行了一下用戶類型的判斷,進(jìn)而調(diào)取不同的操作。以文章添加為例,找到article_add.php。在($dopost!=’save’)的操作中,最后的加上
PHPglobal $dsql;
$id = $_SESSION['dede_admin_id'];
$dsql->SetQuery("select `yesno` from `dedecp_admin` where `id` = $id limit 0,1");
$dsql->Execute();
$row = $dsql->GetObject();
if(1==$row->yesno){
include DedeInclude("templets/article_add1.htm");
}else{
include DedeInclude("templets/article_add.htm"); copyright dedecms
}12345678910 global $dsql; $id = $_SESSION['dede_admin_id']; $dsql->SetQuery("select `yesno` from `dedecp_admin` where `id` = $id limit 0,1"); $dsql->Execute(); $row = $dsql->GetObject(); if(1==$row->yesno){ include DedeInclude("templets/article_add1.htm"); }else{ include DedeInclude("templets/article_add.htm"); }
然后在article_add1.htm中只是將$typeOptions = GetOptionList($cid,$cuserLogin->getUserChannel(),$channelid);改為$typeOptions = GetOptionList2($cid,$cuserLogin->getUserChannel(),$channelid);,然后在inc_catalog_options.php新定義了兩個(gè)方法,這個(gè)大家可以下載看一下。同理編輯也是這樣。到這里基本就完了,我的是織夢(mèng)5.7的,不知道有沒有版本問(wèn)題,寫來(lái)就是交流一下,其實(shí)寫的真的很一般,大家多多交流。
版權(quán)聲明:
本站資源均來(lái)自互聯(lián)網(wǎng)或會(huì)員發(fā)布,如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!
轉(zhuǎn)載請(qǐng)注明:
dede新增欄目如何無(wú)限分類
標(biāo)簽: