Dynamiczne menu dla Jekyll'a

Jozdowska Edyta · 11 Listopad 2019

Stawiając tego bloga, spotkałam się z Jekyll’em po raz pierwszy. Jednak nie byłabym sobą, gdybym nie rozszerzyła templeta jakiego zainstalowałam o własne funkcjonalności. Są to między innymi:

Do dzieła zatem.

1.Prosty przepis na dynamiczne menu w Jekyll’u

Tutaj śpieszę z wyjaśnieniami, dynamiczne, ponieważ generowane z kodu. Można je zrobić w dwojaki sposób. Możemy ustawić menu w pliku konfiguracyjnym, wiele templetów właśnie tak skonstruowanych widziałam. Wolę jednak sposób z wykorzystaniem katalogu _data i ten też opiszę. Wydaj mi się on bardziej modułowy.

  1. Jeśli nie mamy w swojej instalacji, tworzymy katalog _data
  2. W katalogu _data tworzymy plik o nazwie np. navigation.yml
  3. W navigation.yml wpisujemy nasze linki. Poniżej przykład:
    1
    2
    3
    4
    5
    6
    
    - name: Strona główna
      link:
    - name: O mnie
      link: o-mnie
    - name: Szukaj
      link: search
    
  4. Wiecie, że to jest już wszystko ;). Teraz możemy nasze menu wykorzystać w instalacji.
    Poniżej podaję przykład generowania menu w templecie. W poniższym przykładzie brane jest pod uwagę czy link menu jest zewnętrzny, czy wewnętrzny oraz zaznaczenie obecnej strony.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<nav>
  {% for item in site.data.navigation %}
    <a {% if item.link contains '://' %}
          href="{{item.link}}" 
       {% else %}
         href="{{ site.baseurl }}/{{ item.link  }}" 
      {% endif %} 
      
      {% if item.target%} 
        target="{{item.target}}"
      {%endif %} 

      {% assign url = item.link  | append:"/" | prepend:"/" %}      
      
      {% if page.url == url %} 
        style="color: #c5c5c5;" 
      {% endif %}>
      
      {{ item.name }}
    </a>
  {% endfor %}
</nav>

Jozdowska Edyta * FullStack Developer

Pisanie kodu jest moją pasją. Zajmuję się tym od przeszło 10 lat, z większą lub mniejszą intensywnością.
Piszę kod w PHP, JS, SCSS i Python. Nie stronię też od poznawania nowych, lub jak kto woli starych rozwiązań jak Jekyll oraz innych języków np. Java.

więcej o mnie