查看 2348
回复 0
Discuz 主导航菜单重写
逆风天

16

主题

0

回帖

105

积分
发表于 2022-4-26 13:29:13
显示全部楼层 阅读模式
Discuz 主导航菜单重写

注意:当前重写效果,只支持 bootstrap 3,如要使用其他框架结构,需要你自己修改代码。

正题:模板目录新建 navbar.php,内部内容为
  1. <?php
  2. if ( !defined( 'IN_DISCUZ' ) ) {
  3.   exit( 'Access Denied' );
  4. }

  5. function SetHighLight( $HighLight ) {
  6.   if ( $HighLight ) {
  7.     $ColorArray = array( '', 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'gray' );
  8.     $String = sprintf( '%02d', $HighLight );
  9.     $StyleStr = sprintf( '%03b', $String[ 0 ] );

  10.     $Style = ' style="';
  11.     $Style .= $StyleStr[ 0 ] ? 'font-weight: bold;' : '';
  12.     $Style .= $StyleStr[ 1 ] ? 'font-style: italic;' : '';
  13.     $Style .= $StyleStr[ 2 ] ? 'text-decoration: underline;' : '';
  14.     $Style .= $String[ 1 ] ? 'color: ' . $ColorArray[ $String[ 1 ] ] : '';
  15.     $Style .= '"';
  16.   } else {
  17.     $Style = '';
  18.   }
  19.   return $Style;
  20. }

  21. foreach ( C::t('common_nav')->fetch_all_mainnav() as $GetNav ) {
  22.   if ( $GetNav[ 'title' ] ) {
  23.     $NavSpan = '<span>' . $GetNav[ 'title' ] . '</span>';
  24.   }
  25.   $GetNav[ 'style' ] = SetHighLight( $GetNav[ 'highlight' ] );

  26.   if ( $GetNav[ 'logo' ] ) {
  27.     $GetNavLogo = str_replace( '{STATICURL}', STATICURL, $GetNav[ 'logo' ] );
  28.     if ( !preg_match( "/^" . preg_quote( STATICURL, '/' ) . "/i", $GetNavLogo ) && !( ( $valueparse = parse_url( $GetNavLogo ) ) && isset( $valueparse[ 'host' ] ) ) ) {
  29.       $NavLogo = $_G[ 'setting' ][ 'attachurl' ] . 'common/' . $GetNav[ 'logo' ];
  30.     }
  31.     $Logo = "<img src="$NavLogo">";
  32.   } else {
  33.     $Logo = '';
  34.   }

  35.   $NavItemBase = "<a href="$GetNav[url]" hidefocus="true" " . ( $GetNav[ 'title' ] ? "title="$GetNav[title]" " : '' ) . ( $GetNav[ 'target' ] == 1 ? "target="_blank" " : '' ) . " $GetNav[style]>$Logo$GetNav[name]</a>";
  36.   $NavItemExtend = "<a href="$GetNav[url]" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" onclick="location=href" hidefocus="true" " . ( $GetNav[ 'title' ] ? "title="$GetNav[title]" " : '' ) . ( $GetNav[ 'target' ] == 1 ? "target="_blank" " : '' ) . " $GetNav[style]>$Logo$GetNav[name]</a>";

  37.   $SubNavItem = '';
  38.   foreach ( C::t('common_nav')->fetch_all_subnav( $GetNav[ 'id' ] ) as $GetSubNav ) {
  39.     $SubItem = "<li><a href="$GetSubNav[url]" hidefocus="true" " . ( $GetSubNav[ 'title' ] ? "title="$GetSubNav[title]" " : '' ) . ( $GetSubNav[ 'target' ] == 1 ? "target="_blank" " : '' ) . SetHighLight( $GetSubNav[ 'highlight' ] ) . ">$GetSubNav[name]</a></li>";
  40.     $SubNavItem .= $SubItem;
  41.   }

  42.   list( $NavID ) = explode( '.', basename( $GetNav[ 'url' ] ) );
  43.   if ( $GetNav[ 'type' ] || $NavID == 'misc' || $GetNav[ 'identifier' ] == 6 ) {
  44.     if ( $GetNav[ 'type' ] == 4 ) {
  45.       $NavID = 'P' . $GetNav[ 'identifier' ];
  46.     } elseif ( $GetNav[ 'type' ] == 5 ) {
  47.       $NavID = 'F' . $GetNav[ 'identifier' ];
  48.     } else {
  49.       $NavID = 'N' . substr( md5( ( $GetNav[ 'url' ] != '#' ? $GetNav[ 'url' ] : $GetNav[ 'name' ] ) ), 0, 4 );
  50.     }
  51.   }
  52.   $NavID = 'mn_' . $NavID;
  53.   if ( in_array( $NavID, $NavIDs ) ) {
  54.     $NavID .= '_' . $GetNav[ 'identifier' ];
  55.   }
  56.   $NavIDs[] = $NavID;

  57.   if ( $mnid == $NavID ) {
  58.     $LiTagBase = '<li id="' . $NavID . '" class="active">';
  59.     $LiTagExtend = '<li id="' . $NavID . '" class="dropdown active">';
  60.   } else {
  61.     $LiTagBase = '<li id="' . $NavID . '">';
  62.     $LiTagExtend = '<li id="' . $NavID . '" class="dropdown">';
  63.   }

  64.   if ( $SubNavItem ) {
  65.     if ( $GetNav[ 'subtype' ] ) {
  66.       echo $LiTagBase;
  67.       echo $NavItemBase;
  68.     } else {
  69.       echo $LiTagExtend;
  70.       echo $NavItemExtend;

  71.       echo '<ul class="dropdown-menu">';
  72.       echo $SubNavItem;
  73.       echo '</ul>';
  74.     }
  75.   } else {
  76.     echo $LiTagBase;
  77.     echo $NavItemBase;
  78.   }
  79.   echo '</li>';
  80. }
复制代码



然后在 你想要显示菜单的地方 调用 <!--{eval include TPLDIR.'/source/include/NavBar.php';}-->
TPLDIR为模板目录 以此类推。


您需要登录后才可以回帖 登录 立即注册
QQ 快速回复 返回列表