2012-03-19 5 views
9

Я просто привык к Middleman и Ruby в целом. Каков наилучший способ создания навигации с активными состояниями?Как я могу создать навигацию в Middleman?

+0

См Томаса [magic_link_to] (https://github.com/middleman/ middleman/issues/303 # issuecomment-4362124) помощник для Middleman 3. 'request.path' представляет текущий URL-адрес. – sam

+0

Переполнение стека стало настолько печальным, что вы можете задать любой вопрос, который имеет ответ в руководстве, но вы больше не можете задавать полезные вопросы. Не настоящий вопрос? Я не думаю, что это означает, что вы думаете, что это значит. –

ответ

9

В текущей версии 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') 

Конечным результатом этого является то, чтобы добавить класс «Активный» по ссылке в навигационной панели, когда страница здание построено на этой странице. То есть если страница представляет собой файл с названием «индекс», то @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) 

Обратите внимание, что все т («материал») имеет дело с функциями перевода для i18n. Вы можете игнорировать это. Я не хотел приводить пример синтаксически неправильно, пытаясь удалить их.

Надеюсь, что это поможет - также посетите форум на http://forum.middlemanapp.com/.

+0

Я делаю что-то вроде этого, если знаю, что классы страниц останутся неизменными : class => (page_classes === "index")? "active": "" –

 Смежные вопросы

  • Нет связанных вопросов^_^