【问题标题】:Two separate menus in silverstripesilverstripe 中的两个单独菜单
【发布时间】:2017-09-08 08:32:16
【问题描述】:

我最近开始使用 SilverStripe。现在我为我的页面制作了一个页脚菜单,其中已经有一个左侧菜单。现在我想让我可以在管理面板中为脚和左侧菜单制作页面。所以我的想法是在管理面板中创建一个复选框,如果您创建一个新页面并选中该页面进入脚菜单的复选框,如果留空则在左侧菜单中。

我将此代码添加到我的 page.php sidetree

 static $db = array( 'menuLocationHorizontal' => "Boolean" );

这在 page.php 中的 getCMSFields 中

$fields->addFieldToTab('Root.Behaviour', new 
   CheckboxField('menuLocationHorizontal',"Show up in horizontal 
   menu?"),"ShowInSearch");

这就是我的脚导航模板的样子

<ul>
    <% control Menu(2) %>    
    <% if menuLocationHorizontal == 1 %> 
        <li><a href="$Link" title="Go to the $Title.XML page" class="$LinkingMode"><span>$MenuTitle.XML</span></a></li>
         <% end_if %>
    <% end_control %>
</ul>

完成此操作后,我只需在我的脚菜单中添加一个 if 语句即可。但它使网站崩溃。我使用的版本是 3.1。我猜它的 php 犯规。 对不起,我的英语不是我的母语。

【问题讨论】:

  • 您可以查看github.com/heyday/silverstripe-menumanager/tree/2.0 模块,您可以在其中从 Pages 定义单独的菜单。
  • 谢谢我添加了这个,但它不会工作。我 maka 一​​个新的菜单集,它向我显示内部服务器错误,但它仍然生成 menu_set,之后我无法编辑集

标签: silverstripe


【解决方案1】:

SS 3.1 不支持control 条目,您要查找的是&lt;% loop %&gt;,如下所示:

<ul>
  <% loop Menu(2) %>    
    <% if menuLocationHorizontal == 1 %> 
      <li><a href="$Link" title="Go to the $Title.XML page" class="$LinkingMode"><span>$MenuTitle.XML</span></a></li>
    <% end_if %>
  <% end_loop %>
</ul>

更多信息请访问Silverstripe docs website

【讨论】:

  • 好的,谢谢你我解决了这个问题。但我仍然无法添加这个 'menuLocationHorizo​​ntal' => "Boolean" ,它使网站崩溃了。
  • "Crashed the site"...@Thranduil 你收到了什么错误信息?
  • 当我尝试访问页面并且我的起始页面显示时,我在管理面板中收到内部服务器错误 - 服务器错误 抱歉,处理您的请求时出现问题。
【解决方案2】:

对我来说答案是这样的 -> https://github.com/i-lateral/silverstripe-custommenus 唯一真正起作用的东西。

【讨论】:

  • 很高兴您找到了解决方案 :) 值得注意的是,该模块的自述文件表明不支持 SS 3.1:“SilverStripe 3.3 或更高版本。”
  • 我知道,但我试试你的模型,它不会工作。我只得到错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多