【问题标题】:MODx Revo Wayfinder 3rd level <ul> different to 2nd level <ul>?MODx Revo Wayfinder 3 级 <ul> 与 2 级 <ul> 不同?
【发布时间】:2013-09-02 20:42:41
【问题描述】:

我已经在 MODx Evo 中使用了 Wayfinder 菜单,现在我正在尝试将它与 MODx Revo 一起用于新站点。除了我还看不到使 3rd level 与 2nd level 不同的方法之外,它运行良好。查看 Wayfinder 当前输出菜单的方式(为清楚起见,此处进行了简化):

<ul class="nav nav-pills nav-main" id="mainMenu">
<li class="dropdown"> 
     <a class="dropdown-toggle notransition" href="index.php?id=200">
        Help
        <i class="icon-angle-down"></i>
     </a>
     <ul class="dropdown-menu pull-right " style="display: none;">
        <li>
            <a href="index.php?id=31">
                FAQs
            </a>
        </li>
        <li class="dropdown-submenu pull-left">
            <a href="index.php?id=54">
                Policies
            </a>
            <ul class="dropdown-menu pull-right" style="display: none;">
                <li>
                    <a href="index.php?id=490">
                        Privacy Policy
                    </a>
                </li>
                <li>
                    <a href="index.php?id=489">
                        Terms and Conditions
                    </a>
                </li>
            </ul>
        </li>
    </ul>
</li>
</ul>

我需要带有“隐私政策”等的“政策”子菜单向左拉,而不是向右拉 - 在 Wayfinder InnerTpl 中定义:

<ul class="dropdown-menu pull-right" style="display: none;">[[+wf.wrapper]]</ul>

那么,Wayfinder 是否有可能拥有不同于 2 级的 3 级???

我已经浏览了几天的文档和论坛,但无济于事,希望令人惊叹的 SO 社区有一些见解。提前致谢!

【问题讨论】:

    标签: menu modx templating


    【解决方案1】:

    我认为您将不得不使用 CSS 执行此操作,您可以将 &levelClass 添加到您的寻路器调用 [文档说“ CSS 类表示每个输出行级别。级别编号将添加到指定的类(级别 1, level2, level3 等,如果你指定了 'level')。]

    这样,当您看到类似以下内容时,您可以为您的第三级项目编写一些 css:

    <li class="dropdown-submenu pull-left level2">
    

    你的 CSS 可以是这样的:

    li.dropdown-submenu.pull-left.level2 > ul {
    
    /* css for pulling it right */
    
    }
    

    不幸的是,如果您将 [[+wf.classnames]] 添加到外部包装器中的 UL 标记,则 &levelClass 不会执行任何操作,因此您必须从侧面处理它。

    您的内部包装器可以编写为使用 sn-p 来决定要添加哪些类:

    <ul class="dropdown-menu [[!pullLeftOrRight? &id=`[[+wf.docid]]`]]">
        [[+wf.wrapper]]
    </ul>
    

    然后在您的 sn-p 中使用 docid 来确定 subnav 在菜单树中的位置。 [希望 docid 在 outerTpl 中可用 - 我不确定]

    更新

    再次阅读您的 cmets 和文档后,我想我有一个可能可行的想法 - 检查 &categoryFoldersTpl 属性,使用您的 pull right 类设置您的 tpl 并为您的第 3 级下拉菜单设置 rel=文档中建议的仅在第三级资源上的“类别”。 [这对任何想要不同级别的不同子菜单的人没有帮助,但可能会让你摆脱束缚]

    【讨论】:

    • 感谢您的回复肖恩。我在通话中添加了 &levelClass:[[Wayfinder? &amp;startId=0` &outerTpl=main_outerTpl &rowTpl=main_rowTpl &innerTpl=main_innerTpl &innerRowTpl=main_innerRowTpl &levelClass=level &level=@9876548754@ &excludeDocs=]@`933Docs=
    • 继续...但 Wayfinder 不会添加 level1、level2、level3 等,即使 [[+wf.classnames]] 不存在于任何模板中。有任何想法吗?我要试试你的 [[!pullLeftOrRight? &id=[[+wf.docid]]]] 建议现在...
    • 嗯...看起来 docid 在 innerTpl 中不可用。只有字符串 [[+wf.docid]] 被传递给 pullLeftOrRight sn-p。
    • 发现 Mark Hamstra 的 comment 关于使用 [[+tvname]] 因此将 innerTpl 更改为:&lt;ul class="dropdown-menu pull-right [[+tvSubMenuClass]]" style="display: none;"&gt;[[+wf.wrapper]]&lt;/ul&gt; 并将 tvSubMenuClass 设置为在“策略”容器上向左拉。 [[+tvSubMenuClass]] Wayfinder 未输出。非常感谢任何帮助!
    • 在文档底部附近添加了对我的答案检查的更新以获取详细信息:rtfm.modx.com/extras/evo/wayfinder 还有 - 级别类应该显示在您的 innertpl 项目上?您已清除缓存并调用未缓存的寻路器?
    猜你喜欢
    • 2017-02-13
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2011-04-12
    相关资源
    最近更新 更多