2012-03-19 12 views
9

Po prostu przyzwyczajam się do Middleman i ogólnie do Rubiego. Jaki jest najlepszy sposób na wygenerowanie nawigacji z aktywnymi stanami?Jak wygenerować nawigację w Middleman?

+0

See Thomasa [magic_link_to] (https://github.com/middleman/ middleman/issues/303 # issuecomment-4362124) helper dla Middleman 3. 'request.path' reprezentuje bieżącą ścieżkę URL. – sam

+0

Przepełnienie stosu stało się tak smutne, że można zadać dowolne pytanie, które zawiera odpowiedź w instrukcji, ale nie można już zadawać przydatnych pytań. To nie jest prawdziwe pytanie? Nie sądzę, że oznacza to, co myślisz, że to znaczy. –

Odpowiedz

9

W bieżącej wersji MM (2.x, chociaż 3.0 jest blisko), możesz to zrobić, dodając następujące dodatki do config.rb i kilka poprawek w pliku nav (s). Oto a working version w razie zostawiam niektóre krytyczne bitów:

najpierw utworzyć funkcję pomocniczą:

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

Następnie w nav bar include file (w tym przypadku jest to plik haml) można użyć nav_active pomocnika jako następująco:

#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') 

wynik netto jest to, aby dodać klasę „aktywny” do łącza w pasku nawigacyjnym, gdy strona jest budynek zbudowany na tej stronie. To znaczy. jeśli strona jest plikiem o nazwie "index", wówczas @page_id będzie "index" i ten link będzie miał aktywny motyw.

Aby dokończyć przykład, oto fragment z scss style partial który definiuje aktywny:

&.Active { 
    font-weight: bold; 
} 

W nowszej wersji pliku nagłówka, faktycznie usunięte odnośnik gdy na aktywnej stronie. Wygląda to mniej więcej tak - które mogłyby wyraźnie uporządkowany, ale FWIW: D:

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

pamiętać, że wszystkie t („rzeczy”) ma do czynienia z funkcjami tłumaczeń i18n. Możesz to zignorować. Nie chcę, aby przykład składniowy był nieprawidłowy, próbując je usunąć.

Mam nadzieję, że to pomoże - zobacz także forum pod adresem http://forum.middlemanapp.com/.

+0

Zrobiłem coś takiego, jeśli wiem, że klasy stron pozostaną takie same : class => (klasy_strony === "indeks")? "aktywny": "" –

Powiązane problemy