一、根目錄下後臺入口文件admin.phpphp
$_founder = $CFG['founderid'] == $_userid ? $_userid : 0; // $CFG['founderid'] 是config.php裏指定的網站創始人帳戶id配置項,$_founder 存儲了創始人id,若是不是創始人則$_founder爲0;html
(1) inc.php文件裏能夠經過if($_founder) 判斷是不是創始人。api
(2) 後臺模板 tpl.php 裏能夠經過 <?php if($_founder){ ?> ...... <?php }?>緩存
if($module == 'destoon') { //當無mid參數時 module 默認是 destoon 走這個分支函數
(include DT_ROOT.'/admin/'.$file.'.inc.php') or msg();post
} else { //有mid參數時 走這個分支fetch
include DT_ROOT.'/module/'.$module.'/common.inc.php';網站
(include MD_ROOT.'/admin/'.$file.'.inc.php') or msg();this
}url
//當無moduleid參數時 module 默認是 destoon 走這個分支 例如 adminsiyi.php?action=start 其實加載的是 /admin/index.inc.php
// admin.php?mid=5&file=category 加載的是 /admin/category.inc.php
// adminsiyi.php?moduleid=5 加載的是/module/sell/common.inc.php 和 /module/sell/admin/index.inc.php 對應模板也在這個目錄
二、後臺左側菜單加載文件/admin/left.tpl.php
裏邊能夠經過if(!$_founder) 分支加載普通管理員的菜單
三、admin / category.inc.php 隱藏頂部部分菜單 ,更新地址,更新統計的做用
$menus = array (
array('添加分類', '?file='.$file.'&action=add&mid='.$mid.'&parentid='.$parentid),
array('管理分類', '?file='.$file.'&mid='.$mid),
array('分類複製', '?file='.$file.'&action=copy&mid='.$mid),
array('批量索引', '?file='.$file.'&action=letters&mid='.$mid),
array('更新地址', '?file='.$file.'&action=url&mid='.$mid),
array('更新統計', '?file='.$file.'&action=count&mid='.$mid),
array('更新緩存', '?file='.$file.'&action=cache&mid='.$mid),
);
改成
if($_founder){
$menus = array (
array('添加分類', '?file='.$file.'&action=add&mid='.$mid.'&parentid='.$parentid),
array('管理分類', '?file='.$file.'&mid='.$mid),
array('分類複製', '?file='.$file.'&action=copy&mid='.$mid),
array('批量索引', '?file='.$file.'&action=letters&mid='.$mid),
array('更新地址', '?file='.$file.'&action=url&mid='.$mid),
array('更新統計', '?file='.$file.'&action=count&mid='.$mid),
array('更新緩存', '?file='.$file.'&action=cache&mid='.$mid),
);
}
else{
$menus = array (
array('添加分類', '?file='.$file.'&action=add&mid='.$mid.'&parentid='.$parentid),
array('管理分類', '?file='.$file.'&mid='.$mid),
array('更新統計', '?file='.$file.'&action=count&mid='.$mid),
array('更新緩存', '?file='.$file.'&action=cache&mid='.$mid),
);
}
更新地址 category.inc.php 頁面
$CATEGORY = cache_read('category-'.$mid.'.php');
。。。。。。
case 'url':
foreach($CATEGORY as $c) {
update_category($c);
}
$do->cache();
dmsg('更新成功', "?mid=$mid&file=$file");
break;
。。。。。。。
update_category 在 admin/global.func.php 中定義
function update_category($CAT) {
global $db, $DT;
$linkurl = listurl($CAT);
if($DT['index']) $linkurl = str_replace($DT['index'].'.'.$DT['file_ext'], '', $linkurl);
$db->query("UPDATE {$db->pre}category SET linkurl='$linkurl' WHERE catid=".$CAT['catid']);
}
listurl 函數在根目錄下的global.func.php定義
function listurl($CAT, $page = 0) {
global $DT, $MOD, $L;
include DT_ROOT.'/api/url.inc.php';
$catid = $CAT['catid'];
$file_ext = $DT['file_ext'];
$index = $DT['index'];
$catdir = $CAT['catdir'];
$catname = file_vname($CAT['catname']);
$prefix = $MOD['htm_list_prefix'];
$urlid = $MOD['list_html'] ? $MOD['htm_list_urlid'] : $MOD['php_list_urlid'];
$ext = $MOD['list_html'] ? 'htm' : 'php';
isset($urls[$ext]['list'][$urlid]) or $urlid = 0;
$url = $urls[$ext]['list'][$urlid];
$url = $page ? $url['page'] : $url['index'];
eval("\$listurl = \"$url\";");
if(substr($listurl, 0, 1) == '/') $listurl = substr($listurl, 1);
return $listurl;
}
當修改連接模式是 須要生成一下分類連接
四、非創始人後臺界面,左側菜單名稱用模型名稱不合適時
左側菜單 admin/tempalte/left.tpl.php ,找xx管理 改成 xx管理,現貨銅管理 改成 現貨管理。
我去,忽然發現個人面板名稱能夠在權限管理修改 系統設置-》管理員管理-》普通管理員 權限面板
還能夠增長一項
如下方法用不到了
<dl>
<!--<dt onclick="s(this)" onmouseover="this.className='dt_on';" onmouseout="this.className='';">個人面板</dt>-->
<!--<dd onclick="c(this);"><a href="?action=main">系統首頁</a></dd>-->
<!--<dd onclick="c(this);"><a href="?file=mymenu">定義面板</a></dd>-->
<?php
function repalcecaidan($str){
$str=str_replace("找","",$str);//找產品管理 -》 產品管理
$str=str_replace("通","",$str);
return $str;
}
foreach($mymenu as $menu) {
?>
<dd onclick="c(this);"><a href="<?php echo substr($menu['url'], 0, 1) == '?' ? $menu['url'] : DT_PATH.'api/redirect.php?url='.$menu['url'].'" target="_blank';?>"><i class="icon-double-angle-right"></i> <?php echo set_style(repalcecaidan($menu['title']), $menu['style']);?></a></dd>
<?php
}
?>
</dl>
五、後臺左側菜單和頂部標籤訂義位置: 紅色部分左側菜單 ,藍色部分頂部標籤菜單
(1)紅色部分左側菜單 在對應模塊的admin/menu.inc.php文件 (如供應在module/sell/admin/menu.inc.php)
(2)藍色部分頂部標籤菜單 在 對應頁面中定義 例如 供應管理首頁(列表頁面) 在module/sell/admin/index.inc.php 中
如 隱藏 移動分類
if($_founder){
$menus = array (
array('添加'.$MOD['name'], '?moduleid='.$moduleid.'&action=add'),
array($MOD['name'].'列表', '?moduleid='.$moduleid),
array('審覈'.$MOD['name'], '?moduleid='.$moduleid.'&action=check'),
array('過時'.$MOD['name'], '?moduleid='.$moduleid.'&action=expire'),
array('未經過'.$MOD['name'], '?moduleid='.$moduleid.'&action=reject'),
array('回收站', '?moduleid='.$moduleid.'&action=recycle'),
array('移動分類', '?moduleid='.$moduleid.'&action=move'),
);
}else{
$menus = array (
array('添加'.$MOD['name'], '?moduleid='.$moduleid.'&action=add'),
array($MOD['name'].'列表', '?moduleid='.$moduleid),
array('審覈'.$MOD['name'], '?moduleid='.$moduleid.'&action=check'),
array('過時'.$MOD['name'], '?moduleid='.$moduleid.'&action=expire'),
array('未經過'.$MOD['name'], '?moduleid='.$moduleid.'&action=reject'),
array('回收站', '?moduleid='.$moduleid.'&action=recycle'),
);
}
六、修改後臺列表頁面搜索項目和排序項目,精簡關鍵詞選項和排序結果選項
對應目錄下 index.inc.php (如供應在module/sell/admin/index.inc.php)
if($_founder){
$sfields = array('模糊', '標題', '產品品牌', '計量單位', '簡介', '公司名', '聯繫人', '聯繫電話', '聯繫地址', '電子郵件', '聯繫MSN', '聯繫QQ', '會員名', '編輯', 'IP', '參數名1', '參數名2', '參數名3', '參數值1', '參數值2', '參數值3', '文件路徑', '內容模板');
$dfields = array('keyword', 'title', 'brand', 'unit', 'introduce', 'company', 'truename', 'telephone', 'address', 'email', 'msn', 'qq','username', 'editor', 'ip', 'n1', 'n2', 'n3', 'v1', 'v2', 'v3', 'filepath', 'template');
$sorder = array('結果排序方式', '更新時間降序', '更新時間升序', '添加時間降序', '添加時間升序', VIP.'級別降序', VIP.'級別升序', '產品單價降序', '產品單價升序', '供貨總量降序', '供貨總量升序', '最小起訂降序', '最小起訂升序', '瀏覽次數降序', '瀏覽次數升序', '信息ID降序', '信息ID升序');
$dorder = array($MOD['order'], 'edittime DESC', 'edittime ASC', 'addtime DESC', 'addtime ASC', 'vip DESC', 'vip ASC', 'price DESC', 'price ASC', 'amount DESC', 'amount ASC', 'minamount DESC', 'minamount ASC', 'hits DESC', 'hits ASC', 'itemid DESC', 'itemid ASC');
}else{
$sfields = array('模糊', '標題', '公司名');
$dfields = array('keyword', 'title','company');
$sorder = array('結果排序方式', '更新時間降序', '更新時間升序', '添加時間降序', '添加時間升序', VIP.'級別降序', VIP.'級別升序', '產品單價降序', '產品單價升序', '瀏覽次數降序', '瀏覽次數升序', '信息ID降序', '信息ID升序');
$dorder = array($MOD['order'], 'edittime DESC', 'edittime ASC', 'addtime DESC', 'addtime ASC', 'vip DESC', 'vip ASC', 'price DESC', 'price ASC','hits DESC', 'hits ASC', 'itemid DESC', 'itemid ASC');
}
七、非創始人管理員點擊回收站回覆, 這些按鈕時提示無權限的解決方法。
admin入口文件 admin.php
if($file != 'login') { //不是登錄頁面
if($_groupid != 1 || $_admin < 1 || !$_destoon_admin) msg('', '?file=login&forward='.urlencode($DT_URL)); //非後臺管理員, $_admin 管理員類型 1-超級管理員,2-普通管理員。
if(!admin_check()) {
admin_log(1);
$db->query("DELETE FROM {$db->pre}admin WHERE userid=$_userid AND url='?".$DT_QST."'");
msg('警告!您無權進行此操做 Error(00)');
}
}
admin_check()函數 admin/global.func.php 文件
function admin_check() {
global $CFG, $db, $_admin, $_userid, $moduleid, $file, $action, $catid, $_catids, $_childs;
if(in_array($file, array('logout', 'cloud', 'mymenu', 'search', 'ip', 'mobile'))) return true;//All user
if($moduleid == 1 && $file == 'index') return true; // 在根目錄common.inc.php $moduleid = isset($moduleid) ? intval($moduleid) : 1; 沒有$moduleid參數時 $moduleid=1
if($CFG['founderid'] && $CFG['founderid'] == $_userid) return true;//Founder 創始人有所有權限
if($_admin == 2) { // $_admin 管理員類型 1-超級管理員,2-普通管理員。
$R = cache_read('right-'.$_userid.'.php');
if(!$R) return false;
if(!isset($R[$moduleid])) return false;
if(!$R[$moduleid]) return true;//Module admin
if(!isset($R[$moduleid][$file])) return false;
if(!$R[$moduleid][$file]) return true;
if($action && $R[$moduleid][$file]['action'] && !in_array($action, $R[$moduleid][$file]['action'])) return false;
if(!$R[$moduleid][$file]['catid']) return true;
$_catids = implode(',', $R[$moduleid][$file]['catid']);
if($catid) {
if(in_array($catid, $R[$moduleid][$file]['catid'])) return true;
//Childs
$result = $db->query("SELECT catid,child,arrchildid FROM {$db->pre}category WHERE moduleid=$moduleid AND catid IN ($_catids)");
while($r = $db->fetch_array($result)) {
$_childs .= ','.($r['child'] ? $r['arrchildid'] : $r['catid']);
}
if(strpos($_childs.',', ','.$catid.',') !== false) return true;
return false;
}
} else if($_admin == 1) {
if(in_array($file, array('admin', 'setting', 'module', 'area', 'database', 'template', 'skin', 'log', 'update', 'group', 'fields', 'loginlog'))) return false;//Founder || Common Admin Only
}
return true;
}
普通管理員 action 權限 add|edit|delete|check|expire|reject|recycle|move|level 沒有 refresh
加入 refresh便可有刷新權限 add|edit|delete|check|expire|reject|recycle|move|level|refresh|update
系統設置-》管理員管理-》普通管理員 權限面板
其中 action 就是相關操做,例如 下圖所示action參數
八、圖庫管理隱藏級別和標題顏色之後 標題圖片沒法上傳的解決方法,點上傳按鈕無反應
不能直接隱藏,在外層包含div 而後style=dispaly:none
<div <?php if(!$_founder){ ?>style="display:none"<?php } ?>> <?php echo level_select('post[level]', '級別', $level, 'id="level"');?>
<?php echo dstyle('post[style]', $style);?> </div>
九、
destoon如何隱藏後臺菜單 如 隱藏行情裏的 行情審覈 和 內容更新菜單
在 $menu 在對應模型/admin/menu.inc.php 如module/quote/admin/menu.inc.php 註釋相應項目便可。
$menu = array(
array("添加".$name, "?moduleid=$moduleid&action=add"),
array($name."列表", "?moduleid=$moduleid"),
//array("審覈".$name, "?moduleid=$moduleid&action=check"),
array("分類管理", "?file=category&mid=$moduleid"),
array("產品報價", "?moduleid=$moduleid&file=product"),
//array("更新數據", "?moduleid=$moduleid&file=html"),
array("模塊設置", "?moduleid=$moduleid&file=setting"),
);
實現超級管理員與普通管理員左側菜單不同
if($_username=="超級管理員用戶名"){ $menu = array( array("添加".$name, "?moduleid=$moduleid&action=add"), array($name."列表", "?moduleid=$moduleid"), array("審覈".$name, "?moduleid=$moduleid&action=check"), array("分類管理", "?file=category&mid=$moduleid"), array("產品報價", "?moduleid=$moduleid&file=product"), array("更新數據", "?moduleid=$moduleid&file=html"), array("模塊設置", "?moduleid=$moduleid&file=setting"), );}else{ $menu = array( array("添加".$name, "?moduleid=$moduleid&action=add"), array($name."列表", "?moduleid=$moduleid"), array("分類管理", "?file=category&mid=$moduleid"), array("線材行情", "?moduleid=$moduleid&file=product"), ); }