账号通
    

账号  

密码  

2996

查看

1

回复
主题:强烈建议顶部导航静态页面增加当前频道的current标识 [收藏主题]  
tx2090 当前离线

25

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:503 分
登录次数:27 次
注册时间:2009/6/13
最后登录:2015/4/4
tx2090 发表于:2010/3/24 17:54:00   | 只看该作者 查看该作者主题 楼主 
科汛在线网校系统

  静态生成的频道页,打开源代码如下:

 

  当前频道页面是 【频道2】

 

<div id=menubk>

<div id="menu">
 <ul>

<li><a  href="/tta/"   target="_self">本站首页</a></li> 

 <li><a  href="/tta/html/pd2/"   target="_self">频道2</a></li> 

<li><a  href="/tta/html/pd3/"   target="_self">频道3</a></li> 

</ul>
</div>
</div>

 

一个很明显的问题是:

li并不能标识当前页面,这样造成的问题是:无法在导航栏为当前的页面进行指示,从CSS样式表控制出类似下图的效果


此主题相关图片如下:未命名.jpg
未命名.jpg

 

如果能在静态页面生成的时候,将上面的代码生成如下:

 

 

当前频道页面是 【频道2】

 

<div id=menubk>

<div id="menu">
<ul>

<li><a  href="/tta/"   target="_self">本站首页</a></li> 

<li id='current'><a  href="/tta/html/pd2/"   target="_self">频道2</a></li> 

<li><a  href="/tta/html/pd3/"   target="_self">频道3</a></li> 

</ul>
</div>
</div>

 

 

就可以通过CSS样式表很方便的产生各种漂亮的导航菜单。
例如:

 

#menu #current{background:url(../images/memu_upbg1.jpg) no-repeat center top; text-decoration:none;}

 

通过这样的CSS控制就可以改变当前频道页面的导航文字的背景图片。

 

 

我做过一些修改标签和函数的常识都没有成功。

 

在 :Kesion.Label.FunctionCls.asp 文件内,有如下的函数

 

'取得顶部栏目导航
Function GetNavigation(ChannelID, TypeFlag, NavType, Nav, SplitPic, Col, OpenType, T_Css,P_T,DivID,DivCss,UlID,ULCss,LiID,LICss)

 

其中有段代码:

 

If Not RS.EOF Then
        If Cint(P_T)=2 Then
      GetNavigation = "<div"&KS.GetCssID(DivID)&KS.GetCss(DivCss) &">" & vbCrLf & " <ul"&KS.GetCssID(UlID)&KS.GetCss(ULCss) &">" & vbCrLf
         Do While Not RS.EOF

 

         '自己编写的代码,当前栏目id无法获得,通过 {$GetClassID},提示出错

         if 当前频道的ID=RS("ID") and RS("TJ")=1 then

             my_liid=" id='current' "

         else

              my_liid=""

         end if

       

        if not isnumeric(mid(RS(0),3,3)) then
          GetNavigation = GetNavigation & "  <li"&KS.GetCssID(LIID)&my_liid&KS.GetCss(LICss)&">" & "<a " & KS.GetCss(T_Css) & " href=""" & RS(2) & """  " & KS.G_O_T_S(OpenType) & ">" & Trim(RS(1)) & "</a></li>"
        else
        GetNavigation = GetNavigation & "  <li"&KS.GetCssID(LIID)&my_liid&KS.GetCss(LICss)&">" & "<a " & KS.GetCss(T_Css) & " href=""" & KS.GetFolderPath(RS(0)) & """  " & KS.G_O_T_S(OpenType) & ">" & Trim(RS(1)) & "</a></li>"
        end if
          RS.MoveNext
          If RS.EOF Then Exit do
         Loop
         GetNavigation = GetNavigation & "  </ul>" & vbcrlf & "  </div>" & vbCrLf

end if
  

      最好的方法是在这里加入一个变量,判断是否是顶级菜单,从而增加 id='current', 然而问题是在这个函数内,我无法判断当前页面的频道ID。

 

 

后来又注意到:  KS.GetCssID(LIID) 这个函数

 

这个函数位于:Kesion.CommonCls.asp

 

如果能修改这个函数,自动判断是否是当前页面,从而增加id='current' 当然最好。

然后 这个函数又使用了其它函数。

 

头大了,大家谁能继续接着弄弄。成功了就是个大好的改进。

 

也希望科讯看到该篇能尽快增加这个小功能。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
keyi 当前离线

3123

主题

8

广播

18

粉丝
添加关注
级别:大二

用户积分:11924 分
登录次数:2527 次
注册时间:2008/12/24
最后登录:2023/12/14
keyi 发表于:2010/3/27 11:58:00   | 只看该作者 查看该作者主题 沙发 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.09375秒 powered by KesionCMS 9.0