ŹRÓDŁO Obecna architektura kodu źródłowego mojej witryny internetowej sprawia problemy podczas łączenia stron internetowych. W przeciwieństwe do pozostałych subdomen adresy schronu zawierają podkatalogi docelowe. Przez to niemożliwe jest użycie jednolitego sposobu łączenia stron z obecną konfiguracją.

ŹRÓDŁO KOPIA Jekyll zawiera mechanizm pozwalający na zmianę domyślnej struktury adresów stron internetowych. Tym mechanizmem są trwałe łącza. Trwałe łącza są ścieżkami wyjściowymi dla stron witryny internetowej. Dzięki nim możliwa jest architektura adresów stron internetowych inna od architektury kodu źródłowego.

ŹRÓDŁO Jekyll rozróżnia trzy abstrakcyjne typy stron internetowych. Strony specjalne wymagają ustawienia trwałego łącza w nagłówku danego pliku wejściowego, i nie sprawiają problemów w mojej architekturze. Nie muszę więc niczego zmieniać w tym typie. Symbol zastępczy wpisów dziennika również daje zadowalający efekt. Zmiany są konieczne w symbolu zastępczym kolekcji stron. Przeszkodą jest obecność ścieżki pliku wejściowego, gdzie wystarczy tytuł.


Aby potwierdzić działanie mechanizmu trwałych łączy po raz pierwszy od dawna serwuję testowy schron i otwieram publiczną listę zadań. Jak dotychczas, adres strony zawiera podkatalog docelowy: http://localhost:4000/pracownia/ww/publiczna-lista-zadań.html.

collections:
  biblioteka:
    output: true
  laboratorium:
    output: true
  pracownia:
    output: true

Konfiguracja witryny internetowej w pliku _config.yml potwierdza domyślne ustawienie mechanizmu trwałych łączy. Nie chcąc się powtarzać próbuję ustawić wspólne trwałe łącze dla wszystkich kolekcji.

collections:
  permalink: /:collection/:title
  biblioteka:
    output: true
  laboratorium:
    output: true
  pracownia:
    output: true

Takie umiejscowienie symbolu zastępczego nie przynosi żadnego skutku po ponownym uruchomieniu serwera. Przenoszę ten symbol zastępczy do kolekcji pracowni.

collections:
  biblioteka:
    output: true
  laboratorium:
    output: true
  pracownia:
    output: true
    permalink: /:collection/:title

Po raz kolejny uruchamiam serwer i tym razem widzę pożądany efekt: http://localhost:4000/pracownia/publiczna-lista-zadań. Cieszy mnie fakt, że Jekyll pozostawia znaki diakrytyczne w tytule. Natomiast w przeciwieństwie do wszystkich pozostałych stron mojej witryny internetowej brakuje rozszerzenia pliku w adresie. Ten brak jest trywialny do uzupełnienia.

collections:
  biblioteka:
    output: true
  laboratorium:
    output: true
  pracownia:
    output: true
    permalink: /:collection/:title:output_ext

Znowu uruchamiam serwer i potwierdzam skuteczność tej zmiany: http://localhost:4000/pracownia/publiczna-lista-zadań.html. Następnie, z nadzieją że moja intuicja jest słuszna, tworzę „zmienną” zawierającą wartość nowego ustawienia trwałego łącza.

collection-permalink: /:collection/:title:output_ext

collections:
  biblioteka:
    output: true
  laboratorium:
    output: true
  pracownia:
    output: true
    permalink: collection-permalink

Niestety tym razem moja intuicja zawiodła mnie. Po przejrzeniu kilku zewnętrznych stron internetowych dochodzę do wniosku, że YAML nie posiada zmiennych w oczekiwanym przeze mnie sensie. Poddaję się i powielam ustawienie trwałych łączy dla wszystkich kolekcji.

collections:
  biblioteka:
    output: true
    permalink: /:collection/:title:output_ext
  laboratorium:
    output: true
    permalink: /:collection/:title:output_ext
  pracownia:
    output: true
    permalink: /:collection/:title:output_ext

Ostatni raz uruchamiam serwer i tym razem przeglądam strony każdej kolekcji. Problem rozwiązany!


DO ZROBIENIA Manipulując już jakiś czas łączami do stron internetowych zacząłem się zastanawiać nad usprawnieniem tego procesu. Warto byłoby spróbować zbudować system odnoszenia się do stron internetowych po nazwie pliku wejściowego. używam już schematu nazywania gwarantującego unikalne nazwy, co ułatwia projekt.

DO ZROBIENIA Wpisy dziennika mają właściwość kategorii. Mój schemat nazywania wpisów przydziela kategorie. Powinienem to wykorzystać do dynamicznego przydzielania kategorii zrozumiałych dla Jekyll.

DO ZROBIENIA Uważam również, że powinienem nauczyć się YAML na tyle, aby móc definitywnie stwierdzić, czy nie da się uniknąć zbędnego powielania danych.