好友团

24小时服务电话

134-2860-6060

查看: 565|回复: 0

[图文教程] DiscuzX3门户添加四级频道栏目

[复制链接]
发表于 2017-6-7 20:54:00 | 显示全部楼层 |阅读模式
填写您的邮件地址,订阅我们的精彩内容:
[受理编号:SL-2566]
填写您的邮件地址,订阅我们的精彩内容:
默认discuzX门户支持三级栏目的,但是如果添加四级需要修改程序。

操作方法:
找source/admincp/admincp_portalcategory.php文件
打开找到751行-813行

  1. if($level == 2) {
  2.                 $class = $last ? 'lastchildboard' : 'childboard';
  3.                 $return = '<tr class="hover" id="cat'.$value['catid'].'"><td> </td><td class="td25"><input type="text" class="txt" name="neworder['.$value['catid'].']" value="'.$value['displayorder'].'" /></td><td><div class="'.$class.'">'.
  4.                 '<input type="text" class="txt" name="name['.$value['catid'].']" value="'.$value['catname'].'" />'.
  5.                 '</div>'.
  6.                 '</td><td>'.$value['articles'].'</td>'.
  7.                 '<td>'.(empty($value['disallowpublish']) ? cplang('yes') : cplang('no')).'</td>'.
  8.                 '<td>'.(!empty($value['allowcomment']) ? cplang('yes') : cplang('no')).'</td>'.
  9.                 '<td>'.(empty($value['closed']) ? cplang('yes') : cplang('no')).'</td>'.
  10.                 '<td><input class="radio" type="radio" name="newsetindex" value="'.$value['catid'].'" '.($value['caturl'] == $_G['setting']['defaultindex'] ? 'checked="checked"':'').' /></td>'.
  11.                 '<td><a href="'.$value['caturl'].'" target="_blank">'.cplang('view').'</a>
  12.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=edit&catid='.$value['catid'].'">'.cplang('edit').'</a>
  13.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=move&catid='.$value['catid'].'">'.cplang('portalcategory_move').'</a>
  14.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=delete&catid='.$value['catid'].'">'.cplang('delete').'</a>
  15.                 <a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname=portal/list_'.$value['catid'].'&tpldirectory='.getdiydirectory($value['primaltplname']).'">'.cplang('portalcategory_blockperm').'</a></td>
  16.                 <td><a href="'.ADMINSCRIPT.'?action=article&operation=list&&catid='.$value['catid'].'">'.cplang('portalcategory_articlemanagement').'</a>
  17.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=perm&catid='.$value['catid'].'">'.cplang('portalcategory_articleperm').'</a>'.$publish.'</td></tr>';
  18.         } elseif($level == 1) {
  19.                 $return = '<tr class="hover" id="cat'.$value['catid'].'"><td> </td><td class="td25"><input type="text" class="txt" name="neworder['.$value['catid'].']" value="'.$value['displayorder'].'" /></td><td><div class="board">'.
  20.                 '<input type="text" class="txt" name="name['.$value['catid'].']" value="'.$value['catname'].'" />'.
  21.                 '<a class="addchildboard" href="'.ADMINSCRIPT.'?action=portalcategory&operation=add&upid='.$value['catid'].'">'.cplang('portalcategory_addthirdcategory').'</a></div>'.
  22.                 '</td><td>'.$value['articles'].'</td>'.
  23.                 '<td>'.(empty($value['disallowpublish']) ? cplang('yes') : cplang('no')).'</td>'.
  24.                 '<td>'.(!empty($value['allowcomment']) ? cplang('yes') : cplang('no')).'</td>'.
  25.                 '<td>'.(empty($value['closed']) ? cplang('yes') : cplang('no')).'</td>'.
  26.                 '<td><input class="radio" type="radio" name="newsetindex" value="'.$value['catid'].'" '.($value['caturl'] == $_G['setting']['defaultindex'] ? 'checked="checked"':'').' /></td>'.
  27.                 '<td><a href="'.$value['caturl'].'" target="_blank">'.cplang('view').'</a>
  28.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=edit&catid='.$value['catid'].'">'.cplang('edit').'</a>
  29.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=move&catid='.$value['catid'].'">'.cplang('portalcategory_move').'</a>
  30.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=delete&catid='.$value['catid'].'">'.cplang('delete').'</a>
  31.                 <a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname=portal/list_'.$value['catid'].'&tpldirectory='.getdiydirectory($value['primaltplname']).'">'.cplang('portalcategory_blockperm').'</a></td>
  32.                 <td><a href="'.ADMINSCRIPT.'?action=article&operation=list&&catid='.$value['catid'].'">'.cplang('portalcategory_articlemanagement').'</a>
  33.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=perm&catid='.$value['catid'].'">'.cplang('portalcategory_articleperm').'</a>'.$publish.'</td></tr>';
  34.                 for($i=0,$L=count($value['children']); $i<$L; $i ) {
  35.                         $return .= showcategoryrow($value['children'][$i], 2, $i==$L-1);
  36.                 }
  37.         } else {
  38.                 $childrennum = count($_G['cache']['portalcategory'][$key]['children']);
  39.                 $toggle = $childrennum > 25 ? ' style="display:none"' : '';
  40.                 $return = '<tbody><tr class="hover" id="cat'.$value['catid'].'"><td onclick="toggle_group(\'group_'.$value['catid'].'\')"><a id="a_group_'.$value['catid'].'" href="javascript:;">'.($toggle ? '[ ]' : '[-]').'</a></td>'
  41.                 .'<td class="td25"><input type="text" class="txt" name="neworder['.$value['catid'].']" value="'.$value['displayorder'].'" /></td><td><div class="parentboard">'.
  42.                 '<input type="text" class="txt" name="name['.$value['catid'].']" value="'.$value['catname'].'" />'.
  43.                 '</div>'.
  44.                 '</td><td>'.$value['articles'].'</td>'.
  45.                 '<td>'.(empty($value['disallowpublish']) ? cplang('yes') : cplang('no')).'</td>'.
  46.                 '<td>'.(!empty($value['allowcomment']) ? cplang('yes') : cplang('no')).'</td>'.
  47.                 '<td>'.(empty($value['closed']) ? cplang('yes') : cplang('no')).'</td>'.
  48.                 '<td><input class="radio" type="radio" name="newsetindex" value="'.$value['catid'].'" '.($value['caturl'] == $_G['setting']['defaultindex'] ? 'checked="checked"':'').' /></td>'.
  49.                 '<td><a href="'.$value['caturl'].'" target="_blank">'.cplang('view').'</a>
  50.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=edit&catid='.$value['catid'].'">'.cplang('edit').'</a>
  51.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=move&catid='.$value['catid'].'">'.cplang('portalcategory_move').'</a>
  52.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=delete&catid='.$value['catid'].'">'.cplang('delete').'</a>
  53.                 <a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname=portal/list_'.$value['catid'].'&tpldirectory='.getdiydirectory($value['primaltplname']).'">'.cplang('portalcategory_blockperm').'</a></td>
  54.                 <td><a href="'.ADMINSCRIPT.'?action=article&operation=list&&catid='.$value['catid'].'">'.cplang('portalcategory_articlemanagement').'</a>
  55.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=perm&catid='.$value['catid'].'">'.cplang('portalcategory_articleperm').'</a>'.$publish.'</td></tr></tbody>
  56.                 <tbody id="group_'.$value['catid'].'"'.$toggle.'>';
  57.                 for($i=0,$L=count($value['children']); $i<$L; $i ) {
  58.                         $return .= showcategoryrow($value['children'][$i], 1, '');
  59.                 }
  60.                 $return .= '</tdoby><tr><td> </td><td colspan="9"><div class="lastboard"><a class="addtr" href="'.ADMINSCRIPT.'?action=portalcategory&operation=add&upid='.$value['catid'].'">'.cplang('portalcategory_addsubcategory').'</a></td></div>';
  61.         }
  62.         return $return;
  63. }
复制代码
替换为
  1. if($level == 3) {
  2.                  $class = $last ? 'lastthirdboard' : 'thirdboard';
  3.                 $return = '<tr class="hover" id="cat'.$value['catid'].'"><td> </td><td class="td25"><input type="text" class="txt" name="neworder['.$value['catid'].']" value="'.$value['displayorder'].'" /></td><td><div class="'.$class.'">'.
  4.                 '<input type="text" class="txt" name="name['.$value['catid'].']" value="'.$value['catname'].'" />'.
  5.                 '</div>'.
  6.                 '</td><td>'.$value['articles'].'</td>'.
  7.                 '<td>'.(empty($value['disallowpublish']) ? cplang('yes') : cplang('no')).'</td>'.
  8.                 '<td>'.(!empty($value['allowcomment']) ? cplang('yes') : cplang('no')).'</td>'.
  9.                 '<td>'.(empty($value['closed']) ? cplang('yes') : cplang('no')).'</td>'.
  10.                 '<td><input class="radio" type="radio" name="newsetindex" value="'.$value['catid'].'" '.($value['caturl'] == $_G['setting']['defaultindex'] ? 'checked="checked"':'').' /></td>'.
  11.                 '<td><a href="'.$value['caturl'].'" target="_blank">'.cplang('view').'</a>
  12.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=edit&catid='.$value['catid'].'">'.cplang('edit').'</a>
  13.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=move&catid='.$value['catid'].'">'.cplang('portalcategory_move').'</a>
  14.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=delete&catid='.$value['catid'].'">'.cplang('delete').'</a>
  15.                 <a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname=portal/list_'.$value['catid'].'&tpldirectory='.getdiydirectory($value['primaltplname']).'">'.cplang('portalcategory_blockperm').'</a></td>
  16.                 <td><a href="'.ADMINSCRIPT.'?action=article&operation=list&&catid='.$value['catid'].'">'.cplang('portalcategory_articlemanagement').'</a>
  17.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=perm&catid='.$value['catid'].'">'.cplang('portalcategory_articleperm').'</a>'.$publish.'</td></tr>';

  18. } elseif($level == 2) {   
  19.                 $class = $last ? 'lastchildboard' : 'childboard';
  20.                 $return = '<tr class="hover" id="cat'.$value['catid'].'"><td> </td><td class="td25"><input type="text" class="txt" name="neworder['.$value['catid'].']" value="'.$value['displayorder'].'" /></td><td><div class="'.$class.'">'.
  21.                 '<input type="text" class="txt" name="name['.$value['catid'].']" value="'.$value['catname'].'" />'.
  22.                  '<a class="addchildboard" href="'.ADMINSCRIPT.'?action=portalcategory&operation=add&upid='.$value['catid'].'">'.cplang('portalcategory_addfourthcategory').'</a></div>'.
  23.                 '</td><td>'.$value['articles'].'</td>'.
  24.                 '<td>'.(empty($value['disallowpublish']) ? cplang('yes') : cplang('no')).'</td>'.
  25.                 '<td>'.(!empty($value['allowcomment']) ? cplang('yes') : cplang('no')).'</td>'.
  26.                 '<td>'.(empty($value['closed']) ? cplang('yes') : cplang('no')).'</td>'.
  27.                 '<td><input class="radio" type="radio" name="newsetindex" value="'.$value['catid'].'" '.($value['caturl'] == $_G['setting']['defaultindex'] ? 'checked="checked"':'').' /></td>'.
  28.                 '<td><a href="'.$value['caturl'].'" target="_blank">'.cplang('view').'</a>
  29.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=edit&catid='.$value['catid'].'">'.cplang('edit').'</a>
  30.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=move&catid='.$value['catid'].'">'.cplang('portalcategory_move').'</a>
  31.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=delete&catid='.$value['catid'].'">'.cplang('delete').'</a>
  32.                 <a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname=portal/list_'.$value['catid'].'&tpldirectory='.getdiydirectory($value['primaltplname']).'">'.cplang('portalcategory_blockperm').'</a></td>
  33.                 <td><a href="'.ADMINSCRIPT.'?action=article&operation=list&&catid='.$value['catid'].'">'.cplang('portalcategory_articlemanagement').'</a>
  34.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=perm&catid='.$value['catid'].'">'.cplang('portalcategory_articleperm').'</a>'.$publish.'</td></tr>';
  35.                 for($i=0,$L=count($value['children']); $i<$L; $i ) {
  36.                         $return .= showcategoryrow($value['children'][$i], 3, $i==$L-1);
  37.                 }
  38.         } elseif($level == 1) {   //--栏目管理/编辑/转移/删除/权限...//
  39.                 $return = '<tr class="hover" id="cat'.$value['catid'].'"><td> </td><td class="td25"><input type="text" class="txt" name="neworder['.$value['catid'].']" value="'.$value['displayorder'].'" /></td><td><div class="board">'.
  40.                 '<input type="text" class="txt" name="name['.$value['catid'].']" value="'.$value['catname'].'" />'.
  41.                 '<a class="addchildboard" href="'.ADMINSCRIPT.'?action=portalcategory&operation=add&upid='.$value['catid'].'">'.cplang('portalcategory_addthirdcategory').'</a></div>'.
  42.                 '</td><td>'.$value['articles'].'</td>'.
  43.                 '<td>'.(empty($value['disallowpublish']) ? cplang('yes') : cplang('no')).'</td>'.
  44.                 '<td>'.(!empty($value['allowcomment']) ? cplang('yes') : cplang('no')).'</td>'.
  45.                 '<td>'.(empty($value['closed']) ? cplang('yes') : cplang('no')).'</td>'.
  46.                 '<td><input class="radio" type="radio" name="newsetindex" value="'.$value['catid'].'" '.($value['caturl'] == $_G['setting']['defaultindex'] ? 'checked="checked"':'').' /></td>'.
  47.                 '<td><a href="'.$value['caturl'].'" target="_blank">'.cplang('view').'</a>
  48.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=edit&catid='.$value['catid'].'">'.cplang('edit').'</a>
  49.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=move&catid='.$value['catid'].'">'.cplang('portalcategory_move').'</a>
  50.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=delete&catid='.$value['catid'].'">'.cplang('delete').'</a>
  51.                 <a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname=portal/list_'.$value['catid'].'&tpldirectory='.getdiydirectory($value['primaltplname']).'">'.cplang('portalcategory_blockperm').'</a></td>
  52.                 <td><a href="'.ADMINSCRIPT.'?action=article&operation=list&&catid='.$value['catid'].'">'.cplang('portalcategory_articlemanagement').'</a>
  53.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=perm&catid='.$value['catid'].'">'.cplang('portalcategory_articleperm').'</a>'.$publish.'</td></tr>';
  54.                 for($i=0,$L=count($value['children']); $i<$L; $i ) {
  55.                         $return .= showcategoryrow($value['children'][$i], 2, $i==$L-1);
  56.                 }
  57.         } else {   
  58.                 $childrennum = count($_G['cache']['portalcategory'][$key]['children']);
  59.                 $toggle = $childrennum > 25 ? ' style="display:none"' : '';
  60.                 $return = '<tbody><tr class="hover" id="cat'.$value['catid'].'"><td onclick="toggle_group(\'group_'.$value['catid'].'\')"><a id="a_group_'.$value['catid'].'" href="javascript:;">'.($toggle ? '[ ]' : '[-]').'</a></td>'
  61.                 .'<td class="td25"><input type="text" class="txt" name="neworder['.$value['catid'].']" value="'.$value['displayorder'].'" /></td><td><div class="parentboard">'.
  62.                 '<input type="text" class="txt" name="name['.$value['catid'].']" value="'.$value['catname'].'" />'.
  63.                 '</div>'.
  64.                 '</td><td>'.$value['articles'].'</td>'.
  65.                 '<td>'.(empty($value['disallowpublish']) ? cplang('yes') : cplang('no')).'</td>'.
  66.                 '<td>'.(!empty($value['allowcomment']) ? cplang('yes') : cplang('no')).'</td>'.
  67.                 '<td>'.(empty($value['closed']) ? cplang('yes') : cplang('no')).'</td>'.
  68.                 '<td><input class="radio" type="radio" name="newsetindex" value="'.$value['catid'].'" '.($value['caturl'] == $_G['setting']['defaultindex'] ? 'checked="checked"':'').' /></td>'.
  69.                 '<td><a href="'.$value['caturl'].'" target="_blank">'.cplang('view').'</a>
  70.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=edit&catid='.$value['catid'].'">'.cplang('edit').'</a>
  71.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=move&catid='.$value['catid'].'">'.cplang('portalcategory_move').'</a>
  72.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=delete&catid='.$value['catid'].'">'.cplang('delete').'</a>
  73.                 <a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname=portal/list_'.$value['catid'].'&tpldirectory='.getdiydirectory($value['primaltplname']).'">'.cplang('portalcategory_blockperm').'</a></td>
  74.                 <td><a href="'.ADMINSCRIPT.'?action=article&operation=list&&catid='.$value['catid'].'">'.cplang('portalcategory_articlemanagement').'</a>
  75.                 <a href="'.ADMINSCRIPT.'?action=portalcategory&operation=perm&catid='.$value['catid'].'">'.cplang('portalcategory_articleperm').'</a>'.$publish.'</td></tr></tbody>
  76.                 <tbody id="group_'.$value['catid'].'"'.$toggle.'>';
  77.                 for($i=0,$L=count($value['children']); $i<$L; $i ) {
  78.                         $return .= showcategoryrow($value['children'][$i], 1, '');
  79.                 }
  80.                 $return .= '</tdoby><tr><td> </td><td colspan="9"><div class="lastboard"><a class="addtr" href="'.ADMINSCRIPT.'?action=portalcategory&operation=add&upid='.$value['catid'].'">'.cplang('portalcategory_addsubcategory').'</a></td></div>';
  81.         }
  82.         return $return;
  83. }
复制代码
替换好保存后
找到\source\language\lang_admincp.php 文件在6590行下面添加模板语言
  1. 'portalcategory_addfourthcategory' => '添加四级频道栏目',
复制代码
然后再找到\static\image\admincp\admincp.css文件,打开找到317行后添加下面CSS样式

  1. .thirdboard{ padding-left:165px; background:url(bg_repno.gif) no-repeat -130px -550px; } .lastthirdboard{ padding-left:165px; background:url(bg_repno.gif) no-repeat -130px -600px; }
复制代码
到此栏目添加更改完成,但是在发布栏目里我们看不到4级分类,为此我们还要作一点修改。
找到source\function\function_portalcp.php文件打开,查找 function category_get_childids 代码
把这段

  1. function category2_showselect($type, $name='catid', $shownull=true, $current='') {/从定义栏目输出
  2.         global $_G;
  3.         if(! in_array($type, array('portal', 'blog', 'album'))) {
  4.                 return '';
  5.         }
  6.         loadcache($type.'category');
  7.         $category = $_G['cache'][$type.'category'];

  8.         $select = "<select id="$name" name="$name" class="ps vm">";
  9.         if($shownull) {
  10.                 $select .= '<option value="">'.lang('portalcp', 'select_category').'</option>';
  11.         }
  12.         foreach ($category as $value) {
  13.                 if($value['level'] == 1) {//把从一级显示改为2级
  14.                         $selected = ($current && $current==$value['catid']) ? 'selected="selected"' : '';
  15.                         $select .= "<option value="$value[catid]"$selected>$value[catname]</option>";
  16.                         if(!$value['children']) {
  17.                                 continue;
  18.                         }
  19.                         foreach ($value['children'] as $catid) {
  20.                                 $selected = ($current && $current==$catid) ? 'selected="selected"' : '';
  21.                                 $select .= "<option value="{$category[$catid][catid]}"$selected>-- {$category[$catid][catname]}</option>";
  22.                                 if($category[$catid]['children']) {
  23.                                         foreach ($category[$catid]['children'] as $catid2) {
  24.                                                 $selected = ($current && $current==$catid2) ? 'selected="selected"' : '';
  25.                                                 $select .= "<option value="{$category[$catid2][catid]}"$selected>---- {$category[$catid2][catname]}</option>";
  26.                                         }
  27.                                 }
  28.                         }
  29.                 }
  30.         }
  31.         $select .= "</select>";
  32.         return $select;
  33. }
复制代码
以上方法是从二级栏目显示,一级不显示。
改好的代码贴在

function category_get_childids代码
上面
保存好后再找到source\include\portalcp\portalcp_article.php文件
打开查找

  1. category_showselect
复制代码
文件把它改成

  1. category2_showselect
复制代码
然后保存,到此全部更改完成。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复
〖销售站〗一站式品质服务平台. 一体化商城系统.【www.xiaoshouzhan.com】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

销售站-一体化商城系统!
 
 
Q Q|技术部
销售|销售部
客服|销售站实体店
分流|销售站实体店
视频解析群:
好记吧
产品售后群:
站长源码(交易平台)
域名拍卖群:
域名拍卖群
产品维权群:
藤县站
微信客服中心:
/images/niwota00000000300.jpg
工作时间:
8:00-18:00
 
版权所有:好友团

QQ|关于我们|手机版|( 桂ICP备19008987号|网站地图  | Sponsor: Friends group