|
- 帖子
- 4
- 注册时间
- 2007-11-9
|
1#
大 中
小 发表于 2008-7-28 03:18 只看该作者
Sablog-X Ver 1.6 增加二级分类
首先用phpmyadmin工具
在 sablog_categories增加字段:cid_2 smallint(6) 否 0
文件1:category.php
1.查找:
PHP代码
- //分类操作
- if (in_array($action, array('addcate', 'modcate', 'delcate'))) {
- if ($action == 'addcate') {
- $subnav = '添加分类';
- } else {
- $cate = $DB->fetch_one_array("SELECT * FROM {$db_prefix}categories WHERE cid='".intval($_GET['cid'])."'");
- if($action == 'modcate') {
- $subnav = '修改分类';
- } else {
- $subnav = '删除分类';
- }
- }
- }
用下列代码替换:
PHP代码
- //分类操作
- if (in_array($action, array('addcate', 'modcate', 'delcate'))) {
- if ($action == 'addcate') {
- $subnav = '添加分类';
- $query = $DB->query("SELECT cid,name FROM {$db_prefix}categories ORDER BY displayorder");
- $catedb_list = array();
- while ($cate_list=$DB->fetch_array($query)) {
- $catedb_list[] = $cate_list;
- }
- unset($cate_list);
- $DB->free_result($query);
- } else {
- $cate = $DB->fetch_one_array("SELECT * FROM {$db_prefix}categories WHERE cid='".intval($_GET['cid'])."'");
- if($action == 'modcate') {
- $query = $DB->query("SELECT cid,name FROM {$db_prefix}categories ORDER BY displayorder");
- $catedb_list = array();
- while ($cate_list=$DB->fetch_array($query)) {
- $catedb_list[] = $cate_list;
- }
- unset($cate_list);
- $DB->free_result($query);
- $subnav = '修改分类';
- } else {
- $subnav = '删除分类';
- }
- }
- }
2.查找:
PHP代码
- //添加分类
- if($action == 'doaddcate') {
- $name = trim($_POST['name']);
- $displayorder = intval($_POST['displayorder']);
- $result = checkname($name);
- if($result) {
- redirect($result);
- }
- $name = char_cv($name);
- $rs = $DB->fetch_one_array("SELECT count(*) AS categories FROM {$db_prefix}categories WHERE name='$name'");
- if($rs['categories']) {
- redirect('该分类名在数据库中已存在');
- }
- $DB->query("INSERT INTO {$db_prefix}categories (name,displayorder) VALUES ('$name','$displayorder')");
- $DB->unbuffered_query("UPDATE {$db_prefix}statistics SET cate_count=cate_count+1");
- categories_recache();
- statistics_recache();
- redirect('添加新分类成功', 'admincp.php?job=category');
- }
- //修改分类
- if($action == 'domodcate') {
- $name = trim($_POST['name']);
- $cid = intval($_POST['cid']);
- $result = checkname($name);
- if($result) {
- redirect($result);
- }
- $name = char_cv($name);
- $rs = $DB->fetch_one_array("SELECT count(*) AS categories FROM {$db_prefix}categories WHERE cid!='$cid' AND name='$name'");
- if($rs['categories']) {
- redirect('已经有其他分类使用【'.$name.'】这个名称');
- }
- // 更新分类
- $DB->unbuffered_query("UPDATE {$db_prefix}categories SET name='$name' WHERE cid='$cid'");
- categories_recache();
- redirect('修改分类成功', 'admincp.php?job=category');
- }
用下列代码替换:
PHP代码
- //添加分类
- if($action == 'doaddcate') {
- $name = trim($_POST['name']);
- $displayorder = intval($_POST['displayorder']);
- $result = checkname($name);
- if($result) {
- redirect($result);
- }
- $name = char_cv($name);
- $rs = $DB->fetch_one_array("SELECT count(*) AS categories FROM {$db_prefix}categories WHERE name='$name'");
- if($rs['categories']) {
- redirect('该分类名在数据库中已存在');
- }
- $cid_2 = $_POST['cid_2'];
- if($cid_2 == '== 选择分类 =='){
- $DB->query("INSERT INTO {$db_prefix}categories (name,displayorder) VALUES ('$name','$displayorder')");
- }else{
- $DB->query("INSERT INTO {$db_prefix}categories (name,displayorder,cid_2) VALUES ('$name','$displayorder','$cid_2')");
- }
- $DB->unbuffered_query("UPDATE {$db_prefix}statistics SET cate_count=cate_count+1");
- categories_recache();
- statistics_recache();
- redirect('添加新分类成功', 'admincp.php?job=category');
- }
- //修改分类
- if($action == 'domodcate') {
- $name = trim($_POST['name']);
- $cid = intval($_POST['cid']);
- $cid_2 = intval($_POST['cid_2']);
- $result = checkname($name);
- if($result) {
- redirect($result);
- }
- $name = char_cv($name);
- $rs = $DB->fetch_one_array("SELECT count(*) AS categories FROM {$db_prefix}categories WHERE cid!='$cid' AND name='$name'");
- if($rs['categories']) {
- redirect('已经有其他分类使用【'.$name.'】这个名称');
- }
- // 更新分类
- $DB->unbuffered_query("UPDATE {$db_prefix}categories SET name='$name',cid_2='$cid_2' WHERE cid='$cid'");
- categories_recache();
- redirect('修改分类成功', 'admincp.php?job=category');
- }
文件2:include\cache.php
查找:
PHP代码
- // 更新分类
- function categories_recache() {
- global
$DB, $db_prefix; - $categories = $DB->query("SELECT * FROM {$db_prefix}categories ORDER BY displayorder");
- $contents = "\$catecache = array(";
- while ($cate = $DB->fetch_array($categories)) {
- $contents.="\t'".$cate['cid']."' => array(\t\t'cid' => '".$cate['cid']."',\t\t'name' => '".addslashes($cate['name'])."',\t\t'articles' => '".$cate['articles']."',\t),";
- }
- $contents .= ');';
- writetocache('categories',$contents);
- }
用以下代码替换:
PHP代码
- // 更新分类
- function categories_recache() {
- global
$DB, $db_prefix; - $categories = $DB->query("SELECT * FROM {$db_prefix}categories ORDER BY displayorder");
- $contents = "\$catecache = array(";
- while ($cate = $DB->fetch_array($categories)) {
- if($cate['cid_2']>0)$cate['name']='┗'.$cate['name'];
- $contents.="\t'".$cate['cid']."' => array(\t\t'cid' => '".$cate['cid']."',\t\t'name' => '".addslashes($cate['name'])."',\t\t'articles' => '".$cate['articles']."',\t),";
- }
- $contents .= ');';
- writetocache('categories',$contents);
- }
文件3:\templates\admina\category.php
查找:
XML/HTML代码
- <tr
class="tablecell">
- <td>名称:</td>
- <td><input
class="formfield"
type="text"
name="name"
size="35"
maxlength="50"
value="$cate[name]"></td>
- </tr>
在后面增加:
XML/HTML代码
<tr
class="tablecell">
- <td>二级分类:</td>
- <td><select
name="cid_2"
id="cid_2">
- <option
value="0"
selected="selected">== 顶级分类 ==</option>
- <!--
- EOT;
- $i=0;
- foreach($catedb_list as $key => $cate_list){
- $i++;
- $selected = ($cate_list['cid'] == $article['cid']) ? "selected" : "";
- print <<<EOT
- -->
- <option
value="$cate_list[cid]" $selected>$i. $cate_list[name]</option>
- <!--
- EOT;
- }print <<<EOT
- -->
- </select></td>
- </tr>
注意:
1、要在后台:【分类管理】中将二级分类与一级分类制定排序。比如【PHP】属于顶级分类则排序1,【函数】属于【PHP】的二级分类,则【函数】的排序为2。依次类推。
|