基本上我想让每个子菜单只显示在父菜单ID上。但是到目前为止,我所能得到的只是所有子li
连接到我设置的父菜单。
这里有一个图表来解释菜单现在是如何显示的:
- 回家的
关于>就业&手机(我只想显示就业情况)
服务>就业&移动端(我只希望移动端显示)
接触
因此查询从数据库
输出以下变量- pg_LinkName
- pg_MenuTitle
- pg_ParentMenu(父菜单的名称),
- pg_MenuType(是/否说,如果它是父/子菜单),
- pg_SubMenu(通过yes/no来指定菜单是否为父菜单)
我想知道是否有一种方法可以动态地将子节点连接到父节点。如。如果我选择将一个页面附加到父页面,它只会在下拉菜单中显示在父页面上。
以下是我的查询:
<cfquery name="qry_GetMenu" datasource="#request.dsn#">
SELECT *
FROM tbl_pages
WHERE pg_MenuType = TRUE AND pg_Display = TRUE AND pg_AutoMenu = TRUE AND pg_Horiz_VertMenu = TRUE
ORDER BY pg_sort
</cfquery>
<cfquery name="qry_GetSubMenus" datasource="#request.dsn#">
SELECT *
FROM tbl_pages
WHERE pg_MenuType = FALSE
ORDER BY pg_sort
</cfquery>
<cfquery name="qry_SubMenu" datasource="#request.dsn#">
SELECT *
FROM tbl_pages
WHERE pg_SubMenu = TRUE
ORDER BY pg_sort
</cfquery>
菜单如下:
<ul class="menu">
<cfoutput query="qry_GetMenu">
<li <cfif cgi.path_info contains "#pg_LinkName#"> class="current-menu-parent"</cfif>>
<a href="#systemurl#/index.cfm/#pg_LinkName#/">#pg_MenuTitle#</a>
<cfif pg_SubMenu gt 0>
<ul class="sub-menu">
<cfloop query="qry_GetSubMenus">
<li><a href="#systemurl#/index.cfm/#pg_ParentMenu#/#pg_LinkName#/">#pg_MenuTitle#</a></li>
</cfloop>
</ul>
</cfif>
</li>
</cfoutput>
</ul>
如果我理解正确,您只想在相应的父元素下显示分配的子元素,并且您的代码当前在每个显示的父元素下显示子元素?
对于当前的代码,您需要将其中一个查询移动到
行。<ul class="menu">
<cfoutput query="qry_GetMenu">
<li <cfif cgi.path_info contains "#pg_LinkName#"> class="current-menu-parent"</cfif>>
<a href="#systemurl#/index.cfm/#pg_LinkName#/">#pg_MenuTitle#</a>
<cfif pg_SubMenu gt 0>
<ul class="sub-menu">
<!---moved inline to add additional conditional pg_ParentMenu clause--->
<cfquery name="qry_GetSubMenus" datasource="#request.dsn#">
SELECT * FROM q WHERE pg_MenuType = 0 AND pg_ParentMenu = '#pg_ParentMenu#'
</cfquery>
<cfloop query="qry_GetSubMenus">
<li><a href="#systemurl#/index.cfm/#pg_ParentMenu#/#pg_LinkName#/">#pg_MenuTitle#</a></li>
</cfloop>
</ul>
</cfif>
</li>
</cfoutput>
这将允许将查询专门筛选到当前父菜单,而不是所有父菜单。如果它是一个巨大的数据集,这将变得非常低效。此时有很多选项(执行循环并分配给另一个对象,例如具有父级和子级键的结构数组,其中子级是另一个数组,或者重新处理数据库以使子菜单具有关系,等等)。
希望这是正确的方向。