Middleman에서 link_to_if 같은 일을하십시오.

5053 단어 middlemanhaml루비
블로그에도 썼는데, qiita 데뷔하고 싶었기 때문에 이쪽으로 써 보자.
<!-- こういうナビゲーションを作りたい時 --> 
<nav class="nav">
  <ul>
    <li class="current">ホーム</li>
    <li><a href="concept.html">コンセプト</a></li>
    <li><a href="products.html">製品情報</a></li>
    <li><a href="contact.html">お問い合わせ</a></li>
  </ul>
</nav>

내비게이션으로, 현재 위치를 나타내는 내비게이션만 링크를 붙이지 않는 것 같은 것을 할 때, Rails라고, link_to_if라든지 link_to_unless라든지를 사용하면 편리하지만, Middleman의 헬퍼에는 그러한 것은 특히 없는 것 같았다 그래서 어떻게든 비슷한 것을 하려고 하면 이런 느낌이 들었다.

source/partials/_nav.html.haml
-# source/partials/_nav.html.haml
%nav.nav
  %ul
    - data.nav.pages.each do |page|
      %li{ class: "#{'current' if page_classes == page.name}" }
        = page_classes == page.name ? page.label : (link_to page.label, "#{page.name}.html")
# data/nav.yml
pages:
  - name: 'index'
    label: 'ホーム'
  - name: 'concept'
    label: 'コンセプト'
  - name: 'products'
    label: '製品情報'
  - name: 'contact'
    label: 'お問い合わせ'

index, concept, product, contact 같은 네 개의 페이지가 임시로 있었다고 해서 각각 같은 네비게이션용의 부분source/partials/_nav.html.haml을 호출한다고 한다.

Middleman의 기본 레이아웃은 페이지별로 파일 이름과 같은 이름 (index.html이면 "index"이라는 이름)의 클래스가 바깥 쪽 body에 붙어 있고, 이것이 "#{page_classes}"라는 변수로 호출됩니다. 이렇게 되어 있기 때문에, 이것을 이용해, 이 page_classes 가, 데이터로 지정한 page.name 와 함께라면, current 페이지를 나타내는 네비게이션으로서 처리한다고 하는 느낌으로 했다. 삼항 연산자의 곳은, 좀 더 간단하게 쓸 수 있는 것은? 라는 생각도 들지만, 이것 이외에 생각하지 않았다.

네비게이션의 내용은, 마크 업과는 다른 YAML 파일에 data/nav.yml 같게 해 두어 둔다. Frontmatter라도 좋지만, 복수 페이지에서 공통의 요소이므로, 외부에 두는 것이 깨끗하게 공통화할 수 있다. 콘텐츠를 외출하면 마크 업이 이것만으로 끝나는 것이 멋진군요. Middleman 멋지다.

Rails와 만마 함께 헬퍼를 사용하고 싶다면, 스스로 config.rb에 추가하는 방법도 있는 것 같지만, 이번에는 그다지 느낌도 아니고. 또 이것이라고 하면, 페이지가 계층 구조가 되면 어떻게 하는 것일까-. 아직 생각하지 않았다. 더 범용적인 좋은 방법이 있을 것 같다

좋은 웹페이지 즐겨찾기