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.jpgjolloin tiedetään koko ajan, ettäkuva.jpgsijaitsee 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 matterosassa per postausdatekohdassa) - :
short_year– vuosiluku kahdella numerolla, 20 (voidaan ohittaafront matterosassa per postausdatekohdassa) :month– kuukausi kahdella numerolla, joka otetaan tiedostonimestä, 01 (voidaan ohittaafront matterosassa per postausdatekohdassa):i_month– kuukausi numeroina ilman etunollaa, 1 .. 12(voidaan ohittaafront matterosassa per postausdatekohdassa):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 matterosassa per postausdatekohdassa):i_day– päivä ilman etunollaa, 1 .. 31(voidaan ohittaafront matterosassa per postausdatekohdassa):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 matterosasta, 01 .. 24:minute– kellonajan minuutit kahdella numerolla otettunafront matterosasta, 00 .. 59:second– kellonajan sekunnit kahdella numerolla otettunafront matterosasta, 00 .. 59:title– otettuna tiedostonimestä (voidaan ohittaafront matterosassa per postausslugkohdassa):slug– slugtyyppinentitletiedostonimestä, jossa kaikki muut merkit paitsi kirjaimet ja numerot on korvattu yhdysviivalla:categories– osassahead matterannetut kategoriat; jos niitä on enemmän, niistä tehdään hierarkinen luetellussa järjestyksessä:slugified_categories– osassahead matterannetut 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


Keskustele foorumilla Katiskan foorumi