2012-03-19 30 views
9

Tôi chỉ quen với Middleman và Ruby nói chung. Cách tốt nhất để tạo điều hướng với trạng thái hoạt động là gì?Làm cách nào để tạo điều hướng trong Middleman?

+0

Xem Thomas của [magic_link_to] (https://github.com/middleman/ middleman/issues/303 # issuecomment-4362124) helper cho Middleman 3. 'request.path' đại diện cho đường dẫn URL hiện tại. – sam

+0

Tràn tràn đã trở nên buồn đến nỗi bạn có thể hỏi bất kỳ câu hỏi nào có câu trả lời trong sách hướng dẫn, nhưng bạn không thể hỏi thêm bất kỳ câu hỏi nào khác. Không phải là một câu hỏi thực sự? Tôi không nghĩ rằng đó có nghĩa là những gì bạn nghĩ rằng nó có nghĩa là. –

Trả lời

9

Trong phiên bản MM hiện tại (2.x, mặc dù 3.0 đang đóng), bạn có thể thực hiện với các bổ sung sau đây config.rb và một số chỉnh sửa trong (các) tệp điều hướng của bạn. Dưới đây là a working version trong trường hợp tôi bỏ qua một số bit quan trọng:

Đầu tiên tạo một hàm helper:

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

Sau đó, trong nav bar include file (trong trường hợp này là một tập tin Haml của nó), bạn có thể sử dụng nav_active helper như sau:

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

kết quả thực của việc này là thêm lớp "Active" để liên kết trong thanh nav khi trang đang xây dựng xây dựng cho trang này. I E. nếu trang là một tệp được gọi là "chỉ mục" thì @page_id sẽ là "chỉ mục" và liên kết đó sẽ có chủ đề Hoạt động.

Để hoàn thành ví dụ, đây là đoạn trích từ scss style partial định nghĩa tích cực:

&.Active { 
    font-weight: bold; 
} 

Trong một phiên bản sau này của tập tin header, chúng tôi thực sự loại bỏ các liên kết khi trên trang hoạt động. Nó trông giống như sau - mà rõ ràng có thể được sắp xếp gọn gàng lên, nhưng FWIW: D:

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

Lưu ý rằng tất cả các t ('thứ') đã làm với chức năng dịch cho i18n. Bạn có thể bỏ qua điều đó. Tôi không muốn làm cho ví dụ về cú pháp sai bằng cách cố gắng loại bỏ chúng.

Hy vọng điều này sẽ giúp - cũng xem diễn đàn tại http://forum.middlemanapp.com/.

+0

Tôi làm điều gì đó như thế này nếu tôi biết các lớp trang sẽ giữ nguyên : class => (page_classes === "index")? "đang hoạt động": "" –

Các vấn đề liên quan