- Når man lager
public
versjon av HUGO vil alle bilder som hentes medresources.Get.Remote
havne på rot ipublic
-mappen. Det synes jeg blir rotete. - Man kan endre dette ved å angi en mappe foran filnavnet på ressursene man laster ned. Så i steden for
bildenavn.jpg
kan man angiimages/bildenavn-jpg
. Se mer her.
-
4. september 2024
-
2. september 2024
- Lærte å angi «site wide»
og:image
slik at jeg slipper å angi «open graph»-bilde manuelt på samtlige sider. HUGO ser etterParams.images
ihead.html
. Finner den ingen, benyttes det globale bildet. - Man kan sjekke om en side er en
term
ved å benyttedata.term
.
- Lærte å angi «site wide»
-
29. august 2024
- Man kan bruke
markdownify
for å konvertere for eksempel «YAML» til «markdown». - Det er viktig å forstå forskjellen på variabler med stor og liten forbokstav i «frontmatter» i HUGO. Stor forbokstav som
.Title
indikerer HUGOs standarder, mens liten forbokstav som.beskrivelse
indikerer egendefinerte.
--- title: Les siste om HUGO beskrivelse: Få med deg det siste nye om HUGO. ---
- I eksempelet over hentes «title» med
.Title
, mens «beskrivelse» hentes med.beskrivelse
.
- Man kan bruke
-
26. august 2024
md5
brukes for å kryptere en streng.
-
20. august 2024
- For å gi HUGO tilgang til eksterne ENV-variabler må det aktiveres i
hugo.toml
.
[security] [security.funcs] getenv = ['^HUGO_', '^CI$', '^USERS$', '^HOME$']
- For å få tilgang i «templates»:
{{ getenv "HUGO_secret}}
hvor «HUGO_secret» er navnet på ENV-variabelen.
- For å gi HUGO tilgang til eksterne ENV-variabler må det aktiveres i
-
15. august 2024
- Lærte å kommentere ut kode, slik at man kan vise kode uten at den kjøres.
</* ref "om" */>
-
7. juni 2024
- For å vise bilder fra HUGOs «assets»-mappe brukes følgende:
{{ (resources.Get "[bane]").RelPermalink }}
. - Man må huske på å angi «assets»-mappe i «config.toml»:
[[module.mounts]] source = "assets" target = "assets"
- Man oppdaterer HUGO ved å blytte ny versjon til
bin
. - For å starte server uten å bygge «public»-versjon:
hugo server --renderToMemory
- For å vise bilder fra HUGOs «assets»-mappe brukes følgende:
-
23. mai 2024
- Jeg kom bort i et problem med at alle lenker viste et ekstra mellomrom. Det har visst noe med oppsettet å gjøre, som sier noe sånt som at «legg til ny linje i enden av alle filer». Jeg fikk det bort ved å legge til
{{- "" -}}
på slutten av «render_link.html hooken» som genererer koden til lenkene.
- Jeg kom bort i et problem med at alle lenker viste et ekstra mellomrom. Det har visst noe med oppsettet å gjøre, som sier noe sånt som at «legg til ny linje i enden av alle filer». Jeg fikk det bort ved å legge til
-
22. mai 2024
- Jeg hadde et ønske om å markere eksterne lenker på nettsiden med et ikon. Det kan man gjøre i HUGO ved hjelp av såkalte «markup hooks».
-
21. mai 2024
- Når man jobber med API-er så holder HUGO tilbake oppdateringer fra kilden, slik at det ikke blir for mange spørringer. For tvinge frem endringer gjort i API-et kan vi slette HUGOs «cache». Finn
TMP
-mappen og se etterhugo_cache
. Sletter man den og aktiverer HUGO server på nytt, vil all data oppdateres.
- Når man jobber med API-er så holder HUGO tilbake oppdateringer fra kilden, slik at det ikke blir for mange spørringer. For tvinge frem endringer gjort i API-et kan vi slette HUGOs «cache». Finn
-
19. mai 2024
- Jeg fant ut at HUGO ikke har støtte for «regular expressions» «look ahead» eller «capture groups». Jeg måtte derfor dele opp prosessen med å hente ut tekst fra en artikkel.
- Måtte først lage en regex-streng med
$regExString := print `(?s)(?i)` $tag `<\/h[0-9]>.*?<h[0-9]|(?s)(?i)` $tag `<\/h[0-9]>.*`
(?s)
betyr «single line mode» og ignorerer «whitespace» inkludert mellomrom, tabulator og ny linje.(?i)
betyr at det ikke tas hensyn til om bokstavene er minuskler eller versaler.|
betyr enten det før eller etter|
(pipe). Får den ikke treff på søket før|
, så søkes etter det på høyre siden.
- Deretter lage en variabel av søket.
{{ $regExMatch := .Content | findRE $regExString }}
- Av punktet over fikk jeg en liste med treff som deretter måtte itereres over
{{ range $regExmatch }}
. - Deretter måtte jeg opprette en ny regex for å luke bort uønsket HTML-kode.
{{ range $regExMatch}} {{ $contentMatch := . | findRE `(?s)<ul>.*?<h|(?s)<ul>.*`}} {{ $content := strings.TrimRight "<h" (index $contentMatch 0)}} {{ $content | safeHTML}} {{ end }}
- En navigasjonsmeny defineres i
config.toml
i HUGO:
[menus] [[menu main]] name = "Hjem" pageref = "/" weight = 10
- Menyen kan vises i maler på følgende vis:
{{ range site.Menus.main }}
. Med{{- if $page.IsMenuCurrent "main" . }}
kan vi gi en menyelement en egen klasse om det er den aktive siden. Og med$page.HasMenuCurrent "main"
kan vi gi sørge for at toppnivået i menyen får en egen klasse, selv om vi er på en underside.
-
8. mai 2024
- I HUGO kan kan slå sammen en variabel og streng på følgende måte:
{{ printf "%s%s" "Hei" $name }}
- I HUGO kan man dele en samling og en streng med henholdsvis
index
ogsplit
. I eksempelet under kommer et fullt navn inn fra en samling i et API, hvor navnet må splittes til for- og etternavn.
{{ with .lastName }} {{$firstName = index (split . " ") 0 }} {{$lastName = index (split . " ") 1 }} {{ end }}
-
7. mai 2024
- Jeg slet lenge med oppsett og alias på emneknagg-sider («taxonomies») i HUGO. Svaret fant jeg i denne tråden.
-
5. mai 2024
- Med «page bundles» i HUGO kan man liste opp alle sider og tilhørende ressurser i en «bundle» eller seksjon. Med følgende oppsett…
├───blogg │ ├───blogg-1 │ │ img-1.jpg │ │ index.md │ │ │ ├───blogg-2 │ │ img-1.jpg │ │ img-2.jpg │ │ index.md │ │ │ └───blogg-3 │ img-1.jpg │ img-2.jpg │ img-3.jpg │ index.md
- … kan vi hente frem alt i «blogg-seksjonen» på følgende måte:
{{range where .Pages "Section" "blogg" }} {{ .Title }} {{ with .Resources.ByType "image" }} {{ range . }} {{ .Title }} {{ end }} {{ end }} {{ end }}
- Det vil gi oss dette resultatet:
Post 3 img-1.jpg img-2.jpg img-3.jpg Post 2 img-1.jpg img-2.jpg Post 1 img-1.jpg
-
3. mai 2024
- I HUGO kan vi gruppere og omrokkere på lister med henholdsvis
range .Pages.GroupByDate
ogrange .Pages.ByDateReverse
.
- I HUGO kan vi gruppere og omrokkere på lister med henholdsvis
-
2. mai 2024
- Jeg lærte at man i HUGO kan ha uttallige «taxonomies». «Tags» og «categories» er standard, men man kan angi så mange man trenger, eller skru av alle.
- En tekst kan også ha så mange «taxonomies» som man behøver.
-
30. april 2024
- Endret oppsett av HUGO til «branch»- og «leaf» bundles» for enklere håndtering av bilder og andre filer tilknyttet den enkelte side. På denne måten ligger alle ressurser samme sted som teksten, i motsetning til å ha alle ressurser i en og samme ressurs-mappe, som fort kan vokse seg stor og uoversiktlig.
- Lærte også om HUGOs bildeprosessor som lar oss manipulere bilder ved skalering, beskjæring, rotering og fargelegging, for å nevne noen. Og med «page bundles» som nevnt over, kan vi hente frem tilhørende ressurser på følgende måte:
{{$image := .Resources.Get "sunset.jpg" }}
- En global ressurs hentes derimot slik:
{{ $image := resources.Get "images/sunset.jpg" }}
len
er HUGOs metode for å hente lengden på en liste.substr
er HUGOs metode for å returnere en del av en streng.
-
29. april 2024
- Om man ønsker å legge til en tittel («title») i en «shortcode»-lenke angir man den i anførselstegn:
[Dette er en lenke]({{< ref "../om">}} "Tittel")
-
28. april 2024
- Vi kan angi ulike parametre for å vise når et dokument sist ble oppdatert. I
config-toml
definerte jeg følgende:
[frontmatter] lastmod = ["lastmod", ":fileModTime", ":default"]
lastmod
betyr at Hugo ser etter variabelen i “frontmatter”. Er den ikke definert, velges heller:fileModTime
som viser filens siste oppdatering, eller:default
.- Jeg fant også ut hvordan man definerer språk i
config.toml
for å vise datoer på norsk:defaultContentLanguage = "nb"
- Vi kan angi ulike parametre for å vise når et dokument sist ble oppdatert. I
-
27. april 2024
- Shortcodes er kommandoer vi kan angi i “markdown”-filer, for å injisere kode i sidene som renderes. De kan kalles på ulike måter:
{{ /* Metode 1 */ }} {{ < myShortcode data="This is data" > }} {{ /* Metode 2 */ }} {{ < myShortcode > }} This is data {{ < /myShortcode >}}
myShortcode
over henviser tilmyShortcode.html
som må plasseres i/layout/shortcodes/myShortcode.html
. Dataene hentes henholdsvis på følgende måte:
{{ /* Metode 1 */}} {{ .Get data}} {{ /* Metode 2 */ }} {{ .Inner }}
-
26. april 2024
- Det finnes ikke noe tilsvarende javascripts
switch
i Hugo. Man må brukeif else
ellerwith
. with
endrer konteksten av “dott” til et uttrykk (“expression”) og utfører kodeblokken dersom uttrykket er sant.- Man kan begrese antall poster i
range
med tall:- Med
where
kan man “pipe” eller hekte på nummeret til slutt:{{ where EXPR | 5 }}
. - Med
range
bruker manfirst
-nøkkelordet:{{ range first 5 . }}
- Med
if and
i hugo defineres på følgende måte:{{ if and (eq EXPR) (eq EXPR) }}
.Kind
i Hugo returnerer typen side, for eksempelhome
page
term
og lignende.
- Det finnes ikke noe tilsvarende javascripts
-
25. april 2024
- I Hugo oppretter man en
dict
på følgende måte:{{ $myDict := dict }}
. dict
kan sammenlignes med Javascripts objekt.- For å slå opp i
dict
med variabel må vi benytteindex
:{{ index $myDict $myVar }}
. - For å legge til i
dict
må vi brukemerge
:{{ $myDict = merge $myDict $newDict }}
. - For addere i Hugo brukes
add
: {{ add 1 1 }}`. - For å kutte strenger brukes
substr
: {{ substr $myString # # }} .Site.GetPage
er en side-metode i Hugo som returnerer side(r) fra gitt bane:{{ with .GetPage }}
. Det kan være både seksjon og vanlig side.- For å ignorere “cache” under bygging kan man legge til
--ignoreCache
:hugo server --ignoreCache
.
- I Hugo oppretter man en
-
23. april 2024
isset
: Sjekker om nøkkel eksisterer. For eksempel{{ if isset .Type }}
if
: Sjekker om uttrykk er sant.if eq
: Sammenligner to argumenter.if not
: Returnererbool
av argument.dict "key" "value"
: Kalles å lage en “map” fra en liste av nøkler og verdier. Er tilsvarende et objekt i JavaScript.- Vi kan sende variabler i “partial templates”:
{{ partial "list.html" (dict "A" 1 "B" 2)}}
.
-
19. april 2024
- Lærte at
url
i frontmatter brukes for å angi manuell adresse til en side. - Lært at
resources.Copy
kan kopiere en ressurs. tags
kan også få eget design ved å legge til `content/tags/[tagnavn]/_index.md
- Lærte at
-
18. april 2024
- Lærte om og benyttet Hugos OS-funksjon
fileExists
for å sjekke om filer eksisterer i en mappe ved nedlasting fra API. - Lærte at JSON tolkes som Frontmatter i Hugo. Man kan dermed importere et JSON-objekt i en fil, uten å tenke på formatering, for deretter å bruke innholdet som Frontmatter.
- Lærte også hvordan man oppretter filer med
resources.FromString
ogRelPermalink
.
- Lærte om og benyttet Hugos OS-funksjon
-
17. april 2024
printf "%#v"
printer ut alle tilgjengelige variabler, verdier og annet i gjeldende kontekst.transform.Unmarshal
endrer data til “map” eller “array” og fungerer med JSON, CSV, XML med mer.resource.GetRemote URL
brukes for å koble til eksterne API-er.- Å lage sider av data fra eksternt API
-
15. april 2024
- Man looper gjennom sider i Hugo med
{{ range .Site.RegularPages }}
. Det er det samme som enfor loop
i javascript..Site
er forøvrig en global funksjon som gir tilgang til gjeldende “site”, som omtales som et objekt i dokumentasjonen.
Man kan bruke bådesite
og.Site
. Hugo anbefaler å benyttesite
i “templates”..RegularPages
er en “site”-metode som returnerer en samling (“collection”) av alle standard-sider.
- Variabler i Hugo angis på følgende måte:
{{ $name := "Mikke" }}
. {{ PAGE.RawContent }}
returnerer innholdet på en side som rå tekst, uten “frontmatter” og kode.- “if-statement” i Hugo:
{{ if STATEMENT }} ... {{ end }}
- Slå sammen variabel og streng:
print "Hello" $name "!"
. in
: Sjekke om en angitt verdi finnes i en samling, som kan være array, slice eller string.{{ if in $l (print "< ref \"" $o "\" >") }}
.
- Man looper gjennom sider i Hugo med