phpcms网站建设中,联动菜单怎样读取?联动菜单菜单调用方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpcms网站建设中,联动菜单怎样读取?联动菜单菜单调用方法相关的知识,希望对你有一定的参考价值。

  在phpcms中,联动菜单的管理位置位于“后台-扩展-联动菜单”,支持自定义添加。因为问题中没有具体说明在哪里调用,那我就从使用于开发的几个角度来讲联动菜单的调用:

  一、我们常用的是在自定义数据模型字段中:

  创建的联动菜单项将应用于后台内容(文章)添加界面。在“后台-内容-数据模型-字段管理-添加字段”中,字段类型设置为“联动菜单”,然后在“菜单id”选项处通过联动菜单列表选择你要使用的菜单,例如地区联动菜单,并可设定联动菜单的返回值的方式。然后在内容添加编辑界面可出现此联动菜单项了。

  主要设置颜色如下:

  编辑界面显示效果如下:

  当然,菜单显示样式(下拉式、弹窗式)可在“后台-扩展-联动菜单-修改”中配置。


  二、在phpcms模板中直接调用联动菜单:

  此方法不常用。具体方法是来到“后台-扩展-联动菜单列表”,你会看到每一个联动菜单都有一个调用代码,将此代码复制粘贴到你想放的模板位置即可。

  但根据经验,这还不够,因为虽然通过此代码把联动菜单掉出来了,但是因为缺乏此菜单显示时的css、js文件导致缺乏样式与效果从而显示不正常,所以需要保证你的模板里同时引入了一下几个文件:

    statics/js/dialog.js

    statics/js/linkage/js/pop.js

    statics/css/dialog.css


  三、在php文件中或者在模板中使用万能标签直接读取联动菜单数据表中的数据:

  此方法往往在我们进行二次开发中使用。联动菜单数据存放在v9_linkage数据表中,可根据字段parentid等字段指定获取不同层级数据。

  因为开发相关会涉及到phpcms的相关类方法或函数相对来说比较复杂,这里就不详细讲解了,具体可参考官方开发手册以及iphpcms的视频教程,这里给出演示代码以作了解:

  php程序中调用代码演示:

$linkage_db = pc_base::load_model("linkage_model"); //引入模型
$data = $linkage_db->select(array('parentid'=>0)); //读取指定条件的数据

  模板中万能标签写法演示:

pc:get sql="select * from phpcms_linkage where parentid=0 and keyid=1" num="99"
loop $data $v
<li>省份:$v[name]</li>
/loop
/pc

  本方法中获取的是原始的数据表数据,没有签名方法中的相关html代码css样式等修饰,自己根据需求进行相应处理渲染即可。


  PS:  1. 以上方法前两个偏向于系统应用,后者偏向于开发,希望对你有所帮助吧。如果仍有疑惑可以追问。2.考虑的你说的“联动菜单”有指“导航条联动下拉效果”的嫌疑,这里附注一段调用演示代码:

pc:content action="category" catid="0" num="25" siteid="$siteid" order="listorder ASC"
<li><div><a href="siteurl($siteid)/"><span>网站首页</span></a></div></li>
loop $data $k $v
 <li><div>
   <a href="$v[url]"><span>$v[catname]</span></a>
   <ul class="sub_mune_ul" style="display: none; ">
   pc:content action="category" catid="$k" num="10" siteid="$siteid" order="listorder ASC"
   loop $data $r <li><a href="$r[url]">$r[catname]</a></li> /loop
   /pc
   </ul></div></li>
/loop
/pc

参考技术A phpcms v9联动菜单的调用方法[注意此为内容页调用方法]:
get_linkage($areaid,1,' >> ',1)
复制代码

显示效果: 北京市 >> 朝阳区 >> 永定路 [注意字段名字为 areaid]
参考技术B PHPCMS是不是解散了,都不更新了,谁还敢用,现在一般用wp或帝国,Pageadmin这些,一直保持更新框架和技术也新

二级联动asp下拉式列表菜单

big表结构
ID(自动) bigclassName
内容,如:
1 北京
2 上海

small表结构
ID(自动) bigclassname smallclassname
1 北京 中关村地区
2 北京 国贸商圈
3 上海 黄埔
意思是big表为大类,small表为小类,big表的bigclassName与small表的smallclassname表是一对多的关系。
问题:我想做二级联动的下拉式列表菜单,选大类后,另一菜单为该大类下所有子类,得到二级联动列表菜单的值,采用调用数据库的形式,该怎么写呀??

总体要求是这样的吧:选择big的下拉菜单后,从数据库获得所选择大项内的二级选项,更新到二级下拉菜单中
一级菜单没得说,直接数据库读取
二级菜单就可以用两种方法实现,
1、先预读出所有二级选项及对应一级选项的classname,待选择一级菜单后利用js更换二级菜单的选项
2、选择一级菜单后,再从数据库读取二级菜单选项,更新到二级菜单,可以隐含一个页面作为刷新,这种办法比较繁琐些
<script language=javascript>
//最先从数据库读取所有选项值
//allSel数组形如:((北京,中关村,国贸,天安门,....),(上海,黄埔,....).....)
//(北京,中关村,国贸,天安门,....)---->第一个为一级选项,后面为二级选项
var allSel=new Array();//储存所有一级、二级选项,定义成全局变量
var tmpSel=new Array();//临时选项 allSel.add(tmpSel) allSel 是数组的数组,即二维数组
<%
dim bNew
rs.open "select * from big,small where big.bigclassName=small.bigclassname order by big.bigclassname",1,3,conn
bNew=rs("big.bigclassname")
response.write "tmpSel=new Array();"
response.write "tmpSel.add('" & rs("big.bigclassname") & "');"
do while not rs.eof
if bNew<>rs("big.bigclassname") then '新城市
response.write "allSel.add(tmpSel);"
response.write "tmpSel=new Array();"
response.write "tmpSel.add(" & rs("big.bigclassname") & ")"
end if
rsponse.write "tmpSel.add('" & rs("small.smallclassname") & "');" ‘加入二级菜单
rs.movenext
loop
rs.close
%>
</script>
一级菜单:<select id=bigsel onchange=sel_chg(this)>
<%
rs.open "select * from big",conn,1,3
do while not rs.eof
response.write "<option value=" & rs("id") & ">" & rs("bigclassname") & "</option>"
rs.movenext
loop
rs.close
%>
</select>
二级菜单<select id=ssel><option value=-1>请选择...</option></select>
js实现更新二级菜单
<script language=javascript>
function chgOption(op_arr) //根据参数修改下拉菜单选项
var vOptions,iii;
var obj=document.all.ssel; //二级菜单obj
for(iii=0;iii<obj.length-1;iii++)obj.options.remove(0);//移除原二级菜单选项
for(iii=1;iii<op_arr.length;i++) //iii=1
vOptions=document.createElement("option");
vOptions.value=iii;
vOptions.text=op_arr[iii];
obj.options.add(vOptions);


function sel_chg(obj) //一级菜单选择后发起替换二级菜单
//获知是哪个选项被选中
var selIdx=obj.selectedIndex;
//根据之前的allSel替换二级菜单
chgOption(allSel[selIdx]);//注意这里调用allSel[selIdx]

</script>
参考技术A 这里有一个多级联动select菜单
你直接套进去就行了
里面有源码

参考资料:http://www.blueidea.com/common/shoutbox/redir.asp?2=j&id=11685

以上是关于phpcms网站建设中,联动菜单怎样读取?联动菜单菜单调用方法的主要内容,如果未能解决你的问题,请参考以下文章

phpcms联动菜单有啥用

phpcms模型管理如何支持联动菜单多选?

如何让phpcms v9联动菜单显示值

PHPCMS的联动菜单有没有那位成功使用的教程及案例呢

phpcms可以用联动菜单筛选信息吗? 类似房产搜索那种的!很重要啊!·

PHPCMS V9联动菜单下拉显示不全