Linkkien tekeminen ei markdown merkinnän takia, ja koska kyseessä ei ole dynaaminen järjestelmä, onnistu ihan yhtä helposti kuin WordPressissä. Jos sinulla on historiaa entisestä foorumimaailmasta, niin olet hajulla miten linkit tehdään. Jos olet nuorempaa sukupolvea, niin joudut opettelemaan manuaalisemman tavan. Linkitys vaatii myös, että url-rakenne on jotenkin betonoitu ja se tapahtuu sisällön luontivaiheessa, joko per dokumentti head matter
osassa tai käyttämällä globaaleja permalink
asetuksia.
Linkityksen perusteet
Linkit voidaan periaatteessa tehdä kolmella tavalla:
- juurihakemiston suhteen suhteellisen linkin, joka alkaa aina kauttaviivalla ja kertoo missä jokin asia on webhakemiston juuresta lähtien, kuten
/media/kuva.jpg
jolloin tiedetään koko ajan, ettäkuva.jpg
sijaitsee juurihakemistosta löytyvästämedia
-hakemistosta. Muotoilu tekstissä on silloin mallia[linkin teksti](/jutut/[jutun-nimi)
- sen hetkisen sijainnin mukaan suhteellisen linkin, jossa polun puuttuminen tarkoittaa, että ollaan samassa hakemistossa, ja polun käyttö johtaa siitä hakemistosta eteenpäin. Muotoilu tekstissä olisi kuin
[linkin teksti](jutun-nimi)
– jolloin oltaisiin samassa hakemistossa linkkaavan jutun kanssa - absoluuttisella linkillä, jossa kerrotaan koko url. Se merkittäisiin
[linkin teksti]([https://joku.example.tld/jutut/jutun-nimi)
Suhteellisia linkkejä voidaan käyttää vain sivuston sisäisessä linkityksessä ja absoluuttista käytetään ulkoisiin paikkoihin linkitettäessä.
Linkkien tekemisen käytännön ongelma on kahdessa. On koko ajan tiedettävä missä on ja mihin on menossa, ja se voi olla aika työlästä laajemmilla sivustoilla. Toinen on samaa pohjaa – jos muutat sivuston rakennetta, niin linkit menevät rikki, ja on sitten muutettava käsin (kyllä, linuxeissa on moisia etsi&korvaa komentorivijuttuja, joita en osaa käyttää ja jotka toimivat vain, jos useampi linkki muuttuu tismalleen samalla tavalla).
Jotta ymmärtäisi paremmin miten Jekyll ylipäätään rakentaa sisältöä, puhumattakaa, että löytäisi oikean linkitettävän, niin kannattaa ehkä käyttää komentoa tree. Se ei kuulu ainakaan Ubuntussa perusasennukseen, mutta asentuu nopeasti komennolla sudo apt install tree -y
Linkit muuttujaksi
Jekyll antaa mahdollisuuden käsitellä linkkejä hieman joustavammin. Käytössä on sellainen vipstaaki kuin Liquid ja sen avulla linkit saadaan muuttujan post_url
taakse. Jos ennen joutui linkittämään näin:
[linkin teksti](/jekyll/perusteet/2020/08/13/jekyll-ja-markdown.html)
Nyt voidaankin sama ilmaista tällä tavalla:
[linkin teksti]({% post_url 2020-08-13-jekyll-ja-markdown %})
Kun Jekyll generoi sivut, niin se rakentaa muuttujan mukaan juurihakemistoon nähden suhteelliset linkit. Ja jos käy niin, että linkkiä ei löydy – yleensä kirjoitusvirheen takia – niin Liquid antaa siitä virheilmoituksen. Mutta post_url
sallii permalink
asetuksen muuttamisen ilman, että sinällään täytyisi mennä käsin kaikkia sisäisiä linkkejä läpi.
Tuossa on pari pientä koukkua takana, Silloin _config.yml
tiedostossa täytyy olla asetettuna permalink
, eikä post_url
muuttuja toimi sivujen kanssa. Ainakaan vielä.
Globaalit post-asetukset
Tiedoston _config.yml
sisältämä globaali permalink
voidaan asettaa useilla eri tavoilla. Mutta ne pätevät vain post
muodoille (ja myös muodolle draft
). Sen sijaan page
käyttäytyy hieman eri tavalla. Dokumenttien mukaan, kun kyseessä on page
, niin :title
on sama kuin :basename
. Siitä seuraa, että jos permalink
on:
/:categories/:year/:month/:day/:title:output_ext
niin se supistuu muotoon:
/:title.html
Mallit
Jekyll tarjoaa linkkien tekemiseen määrättyjä malleja:
- :
year
– vuosiluku neljällä numerolla, 2020 (voidaan ohittaafront matter
osassa per postausdate
kohdassa) - :
short_year
– vuosiluku kahdella numerolla, 20 (voidaan ohittaafront matter
osassa per postausdate
kohdassa) :month
– kuukausi kahdella numerolla, joka otetaan tiedostonimestä, 01 (voidaan ohittaafront matter
osassa per postausdate
kohdassa):i_month
– kuukausi numeroina ilman etunollaa, 1 .. 12(voidaan ohittaafront matter
osassa per postausdate
kohdassa):short_month
– kuukauden englanninkielinen kolmikirjaiminen lyhennys, Jan:long_month
– kuukauden kokonimi englanniksi, January:day
– päivä kahdella numerolla, joka otetaan tiedostonimestä, 01 .. 31 (voidaan ohittaafront matter
osassa per postausdate
kohdassa):i_day
– päivä ilman etunollaa, 1 .. 31(voidaan ohittaafront matter
osassa per postausdate
kohdassa):y_day
– päivän järjestysnumero vuodessa etunollilla, 001 .. 366:w_year
–:week
– viikon numero, 01 .. 53:w_day
– päivän numero viikossa yhdellä numerolla, 1 .. 7:short_day
– päivän kolmikirjaiminen lyhennys englanniksi, Mon:long_day
– päivän nimi englanniksi, Monday:hour
– 24h kellonajan tunti kahdella numerolla otettunafront matter
osasta, 01 .. 24:minute
– kellonajan minuutit kahdella numerolla otettunafront matter
osasta, 00 .. 59:second
– kellonajan sekunnit kahdella numerolla otettunafront matter
osasta, 00 .. 59:title
– otettuna tiedostonimestä (voidaan ohittaafront matter
osassa per postausslug
kohdassa):slug
– slugtyyppinentitle
tiedostonimestä, jossa kaikki muut merkit paitsi kirjaimet ja numerot on korvattu yhdysviivalla:categories
– osassahead matter
annetut kategoriat; jos niitä on enemmän, niistä tehdään hierarkinen luetellussa järjestyksessä:slugified_categories
– osassahead matter
annetut kategoriat slug-muodossa, jolloin muut kuin numerot ja kirjaimet korvataan väliviivalla. Välilyöntejä tai erikoismerkkejä sisältävät kategorianimet voidaan antaa tällä ja nimi laitetaan lainausmerkkeihin, kuten ”Jekyllin tärkeimmät asiat”
Oikopolut
Oikopolut yhdistävät valmiiksi erilaisia linkkimalleja. Näitä ei voi käyttää head matter
osassa.
:date
=/:categories/:year/:month/:day/:title:output_ext
:pretty
=/:categories/:year/:month/:day/:title/
:ordinal
=/:categories/:year/:y_day/:title:output_ext
:weekdate
=/:categories/:year/W:week/:short_day/:title:output_ext
:none
=/:categories/:title:output_ext
Page ja permalink
Jekyllin ideologiassa, joka on siis puhtaasti blogipohjainen, vaikka sitä voidaankin käyttää myös CMS-tyyppisesti (periaatteessa eroa WordPressiin ei ole, mutta on kuitenkin), sivut, page, ovat nimenomaan niitä mitä aikoinaan – ja osaksi nykyäänkin – sivuiksi mielletään. Ne ovat yhteystietoja varten, käyttöehtoja jne.
Kun mietitään permalink
asetuksia, niin ero artikkeleihin, post, on selvä. Sivut eivät yleensä noudata _config.yml
sääntöjä ja silloinkin kun ne noudattaisivat, niin siellä ei voida asettaa pelkästään sivuja koskevia globaaleja sääntöjä. Sivujen kohdalla permalink
laitetaan aina head matter
osaan.
Muutama malli on käytössä:
:path
– suhteellinen polku lähdehakemistoon, ja tiedostonimi jätetään pois:basename
– sama kuin tiedoston nimi:output_ext
– sivun tiedostopääte, joka on muutenkin oletuksena.html;
käytännössä tarpeeton
Sivujen kohdalla aidosti valinta tapahtuu sen mukaan haluaako linkin olevan muotoa /nimi.html
vai /nimi/index.html
Arkistot
Jekyll kutsuu arkistoja nimellä kokoelmat, collections. Se on silti sama kuin arkisto, archive, jota suunnilleen kaikki muut käyttävät. Oli termi mikä tahansa, niin sillekin on olemassa omat permalink
vaihtoehdot asetettavissa globaalisti tiedostoon _config.yml
.
Formaatti olisi jottain tämänkaltaista:
collections: arkistoni: output: true permalink: /:collection/:name
Malleja on muutama:
:collection
– arkiston otsikko, label:path
– arkiston hakemiston suhteellinen polku dokumenttiin nähden sisältäen dokumentin oman perusnimen:name
– dokumentin oma perusnimi, kaikki muut merkit kuin numerot ja kirjaimet korvataan yhdysviivalla:title
– jos osassa front matter on määritelty slug, niin käytetään sitä; jos ei ole, niin se on sama kuin :name:output_ext
– arkiston esittävän dokumentin tiedostopääte,.html
; se on muutenkin oletuksena ja tämä on yleensä tarpeeton asettaa
Teen B2B-markkinoille sisällöntuottoa sekä UX-testauksia. Samaan liittyy myös koulutukset yrityksille ja webmaailman kanssa muutoin painiville. Serverien sielunelämää on joutunut ohessa opettelmaan. Toinen puoli toiminnasta on koirien ravitsemuksen ja ruokinnan suunnittelua sekä varsinkin omistajien kouluttamista hoitamaan koiriaan oikein ja vielä paremmin.
Profiili: Jakke Lehtonen
Keskustele foorumilla Meta/KATISKA