Middleman에서 link_to_if 같은 일을하십시오.
<!-- こういうナビゲーションを作りたい時 -->
<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
에 추가하는 방법도 있는 것 같지만, 이번에는 그다지 느낌도 아니고. 또 이것이라고 하면, 페이지가 계층 구조가 되면 어떻게 하는 것일까-. 아직 생각하지 않았다. 더 범용적인 좋은 방법이 있을 것 같다
Reference
이 문제에 관하여(Middleman에서 link_to_if 같은 일을하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ken_c_lo/items/cb44354687f83c29722f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)