【问题标题】:Coldfusion Need Help Parent / Child Dynamic MenuColdfusion需要帮助父/子动态菜单
【发布时间】:2013-05-06 23:02:19
【问题描述】:

基本上我想让每个子菜单只显示在父菜单 ID 上。但到目前为止,我所能得到的只是所有子 li 连接到我设置的任何父菜单。

这是一个解释菜单现在如何显示的图表:

  • 首页

    关于 > 就业和移动(我只想显示就业)

    服务 > 就业和移动(我只希望移动显示)

  • 联系方式

所以查询从数据库中输出以下变量

  • pg_LinkName
  • pg_MenuTitle
  • pg_ParentMenu(父菜单的名称),
  • pg_MenuType(是/否表示它是否是父/子菜单),
  • pg_SubMenu(是/否指定菜单是否为父菜单)

我想知道是否有办法将孩子动态连接到父母。例如。如果我选择将页面附加到父级,它只会在下拉列表中显示在该父级上。

这是我的疑问:

<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>

【问题讨论】:

  • 你的查询能说清楚一点吗..
  • 刚刚更新了一些信息,希望它更清楚一点!
  • 你在哪里结束你的循环并更新代码..正确
  • 为每个菜单动态添加..一个类,并使用jquery显示每个链接的菜单相关数据
  • 你能确定你的输出范围吗?如果没有适当的范围界定,几乎不可能阅读。

标签: coldfusion navigation


【解决方案1】:

如果我理解正确,您只想在相应的父级下显示分配的子元素,而您的代码当前正在显示每个父级下的子元素?

使用您当前的代码,您需要将其中一个查询移动到行中

<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>

这将允许将查询专门过滤到当前父菜单,而不是所有父菜单。如果它是一个巨大的数据集,这将变得非常低效。 那时有很多选择(执行循环并分配给另一个对象,例如具有父子键的结构数组,子元素是另一个数组,或者重新处理数据库以制作子菜单关系等)。

希望这是朝着正确的方向发展。

【讨论】:

  • 感谢工作!我不得不改变一些变量,但我明白了!
猜你喜欢
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
相关资源
最近更新 更多