如何在Middleman中生成导航?

问题描述:

我刚刚习惯了Middleman和Ruby。用活动状态生成导航的最佳方式是什么?如何在Middleman中生成导航?

+0

见托马斯[magic_link_to](https://github.com/middleman/ middleman/issues/303#issuecomment-4362124)Middleman 3的助手。request.path表示当前的URL路径。 – sam 2012-11-30 07:21:47

+0

堆栈溢出已变得如此悲伤,以至于您可以询问任何在手册中有答案的问题,但您无法再提出有用的问题。不是一个真正的问题?我不认为这意味着你的想法。 – 2014-04-21 15:15:36

在当前版本的MM(2.x,尽管3.0已关闭)中,您可以在config.rb中添加以下内容并在您的导航文件中进行一些调整。这里是a working version的情况下,我忽略了一些关键位:

首先创建一个辅助函数:

helpers do 
    def nav_active(page) 
    @page_id == page ? {:class => "Active"} : {} 
    end 
end 

然后,在nav bar include file(在这种情况下,它是一个HAML文件),您可以使用nav_active助手为如下:

#HeaderNavigationBar 
    %ul 
    %li{nav_active("index")}= link_to t('top_navigation.home'), t('paths.index') 
    %li{nav_active("pricing")}= link_to t('top_navigation.pricing'), t('paths.pricing') 
    %li{nav_active("faq")}= link_to t('top_navigation.faq'), t('paths.faq') 

这样做的最终结果是对类“活动”添加到链接的导航栏时页面大楼建成了这个网页。即如果页面是一个名为“index”的文件,那么@page_id将是“索引”,并且该链接将具有活动主题。

为了完成这个例子,这里是从定义活跃的scss style partial摘录:

&.Active { 
    font-weight: bold; 
} 

在头文件的后续版本,我们实际上在活动页面上删除时的链接。它看起来是这样 - 这可以清楚地收拾,但FWIW:d:

%li{nav_active("index")} 
    -if "index" == @page_id 
    = t('top_navigation.home') 
    -else 
    = link_to t('top_navigation.home'), root() 
    ... (etc) 

注意,所有的T(“东西”),具有与国际化翻译功能做。你可以忽略它。我不想通过尝试删除它们来使该示例语法错误。

希望这有助于 - 也可以在http://forum.middlemanapp.com/看到论坛。

+0

我这样做,如果我知道页面类将保持不变 :class =>(page_classes ===“index”)? “主动”:“” – 2013-04-21 14:33:24

下面是用于标记在中间人与aria-current当前链路(然后你就可以用它来关闭的风格)的一个新的宝石:https://github.com/thoughtbot/middleman-aria_current