diff --git a/content/brosjyrer/fagpersoner/article.md b/content/brosjyrer/fagpersoner/article.md new file mode 100644 index 0000000..b3ced06 --- /dev/null +++ b/content/brosjyrer/fagpersoner/article.md @@ -0,0 +1,3 @@ +# Informasjon til fagpersoner + +Brosjyren henvender seg til akademikere og utdannet helsepersonel og forklarer medisinsk cannabis som medikamentgruppe basert på forskning og etablert praksis i resten av verden. diff --git a/content/brosjyrer/fagpersoner/metadata.ini b/content/brosjyrer/fagpersoner/metadata.ini new file mode 100644 index 0000000..a51a57b --- /dev/null +++ b/content/brosjyrer/fagpersoner/metadata.ini @@ -0,0 +1,2 @@ +title = "Fagpersoner" +summary = "Brosjyren henvender seg til akademikere og utdannet helsepersonel og forklarer medisinsk cannabis som medikamentgruppe basert på forskning og etablert praksis i resten av verden." diff --git a/custom/docs/brukerveiledning/formatering/metadata.ini b/custom/docs/brukerveiledning/formatering/metadata.ini new file mode 100644 index 0000000..198f3ab --- /dev/null +++ b/custom/docs/brukerveiledning/formatering/metadata.ini @@ -0,0 +1,2 @@ +title = "Formatering med Markdown" +summary = "Lær hvordan du formaterer tekst, bilder og lenker" diff --git a/custom/docs/brukerveiledning/formatering/page.md b/custom/docs/brukerveiledning/formatering/page.md new file mode 100644 index 0000000..c02912e --- /dev/null +++ b/custom/docs/brukerveiledning/formatering/page.md @@ -0,0 +1,243 @@ +# Formatering med Markdown + +Markdown er et enkelt format for å skrive tekst med formatering. Du skriver ren tekst med noen enkle symboler for å markere overskrifter, lenker, bilder osv. + +## Overskrifter + +Bruk `#` for overskrifter. Flere `#` gir mindre overskrifter: + +```markdown +# Hovedoverskrift (H1) +## Underoverskrift (H2) +### Mindre overskrift (H3) +``` + +**Viktig**: Den første `# Overskrift` i dokumentet blir sidens tittel (hvis du ikke setter tittel i metadata.ini). + +## Avsnitt + +Skriv vanlig tekst for avsnitt. Separer avsnitt med en tom linje: + +```markdown +Dette er et avsnitt. + +Dette er et nytt avsnitt. +``` + +## Uthevet tekst + +```markdown +**Fet tekst** eller __fet tekst__ +*Kursiv tekst* eller _kursiv tekst_ +***Fet og kursiv*** +``` + +Resultat: +- **Fet tekst** +- *Kursiv tekst* +- ***Fet og kursiv*** + +## Lister + +### Punktliste + +```markdown +- Punkt 1 +- Punkt 2 +- Punkt 3 +``` + +Eller bruk `*`: + +```markdown +* Punkt 1 +* Punkt 2 +``` + +### Nummerert liste + +```markdown +1. Første punkt +2. Andre punkt +3. Tredje punkt +``` + +### Nestet liste + +```markdown +- Hovedpunkt + - Underpunkt + - Enda et underpunkt +- Nytt hovedpunkt +``` + +## Lenker + +```markdown +[Lenketekst](https://eksempel.no) +``` + +Resultat: [Lenketekst](https://eksempel.no) + +### Lenke til annen side på samme nettsted + +```markdown +[Les mer](../annen-side/) +``` + +## Bilder + +```markdown +![Bildetekst](bilde.jpg) +``` + +### Bildefil i samme mappe + +```markdown +![Mitt foto](foto.jpg) +``` + +### Bildefil i undermappe + +```markdown +![Mitt foto](bilder/foto.jpg) +``` + +### Forsidebilde + +Gi bildet navnet `cover.jpg`, `cover.webp` eller `cover.png`. Det vises automatisk i listevisninger (f.eks. på bloggsiden). + +## Sitater + +Bruk `>` for sitater: + +```markdown +> Dette er et sitat. +> Det kan gå over flere linjer. +``` + +Resultat: +> Dette er et sitat. +> Det kan gå over flere linjer. + +## Kode + +### Kode i teksten (inline) + +```markdown +Bruk `kode` i teksten slik. +``` + +Resultat: Bruk `kode` i teksten slik. + +### Kodeblokk + +Bruk tre backticks (`` ` ``) før og etter: + +````markdown +``` +Dette er en kodeblokk +med flere linjer +``` +```` + +Med syntaksutheving: + +````markdown +```php + +``` +```` + +## Horisontale linjer + +```markdown +--- +``` + +Eller: + +```markdown +*** +``` + +Resultat: + +--- + +## Tabeller + +```markdown +| Kolonne 1 | Kolonne 2 | Kolonne 3 | +|-----------|-----------|-----------| +| Rad 1, celle 1 | Rad 1, celle 2 | Rad 1, celle 3 | +| Rad 2, celle 1 | Rad 2, celle 2 | Rad 2, celle 3 | +``` + +Resultat: + +| Kolonne 1 | Kolonne 2 | Kolonne 3 | +|-----------|-----------|-----------| +| Rad 1, celle 1 | Rad 1, celle 2 | Rad 1, celle 3 | +| Rad 2, celle 1 | Rad 2, celle 2 | Rad 2, celle 3 | + +## HTML i Markdown + +Du kan også bruke HTML direkte hvis du trenger mer kontroll: + +```markdown +Dette er Markdown-tekst. + +
+Dette er HTML. +
+ +Tilbake til Markdown. +``` + +## Beste praksis + +### Bruk beskrivende bildetekster +```markdown + +![Solnedgang over fjellene](solnedgang.jpg) + + +![Bilde](img001.jpg) +``` + +### Bruk relative lenker +```markdown + +[Om oss](../om-oss/) + + +[Om oss](https://dinside.no/om-oss/) +``` + +### Hold det enkelt +Bruk Markdown-syntaks framfor HTML når det er mulig. HTML skal bare brukes når Markdown ikke strekker til. + +## Eksempel på komplett side + +```markdown +# Min fantastiske artikkel + +Dette er en introduksjon til artikkelen min. + +## Hovedinnhold + +Her er **hovedinnholdet**. Det kan inneholde: + +- Punktlister +- Lenker til [andre sider](../annen-side/) +- Bilder + +![Eksempelbilde](bilde.jpg) + +## Konklusjon + +Dette var det! Enkelt og greit. +``` diff --git a/custom/docs/brukerveiledning/kom-i-gang/metadata.ini b/custom/docs/brukerveiledning/kom-i-gang/metadata.ini new file mode 100644 index 0000000..1c4909a --- /dev/null +++ b/custom/docs/brukerveiledning/kom-i-gang/metadata.ini @@ -0,0 +1,2 @@ +title = "Kom i gang" +summary = "Publiser din første side på få minutter" diff --git a/custom/docs/brukerveiledning/kom-i-gang/page.md b/custom/docs/brukerveiledning/kom-i-gang/page.md new file mode 100644 index 0000000..b827791 --- /dev/null +++ b/custom/docs/brukerveiledning/kom-i-gang/page.md @@ -0,0 +1,104 @@ +# Kom i gang med å publisere + +Lær det grunnleggende om å publisere innhold på din PnP-side. + +## Grunnkonseptet + +**Mapper blir til nettsideadresser** + +Når du oppretter en mappe i `/content/`, blir den automatisk til en nettadresse: + +``` +/content/om-oss/ → dinside.no/om-oss +/content/blogg/ → dinside.no/blogg +``` + +## Din første side + +### 1. Opprett en mappe + +Opprett en mappe i `/content/` med et beskrivende navn: + +``` +/content/om-oss/ +``` + +### 2. Lag en innholdsfil + +Opprett en fil i mappen. Bruk ett av disse navnene: + +- `page.md` - For vanlige sider +- `article.md` - For artikler og blogginnlegg +- `post.md` - Alternativt navn for artikler + +**Eksempel** - Opprett `/content/om-oss/page.md`: + +```markdown +# Om oss + +Velkommen til vår side. Vi er et team som brenner for å lage +gode nettsider med enkel teknologi. + +## Vår filosofi + +Enkelhet er styrke. Vi bruker bare det som er nødvendig. +``` + +### 3. Åpne i nettleseren + +Gå til `dinside.no/om-oss` - siden din er nå publisert! + +## Legg til et blogginnlegg + +### 1. Opprett en mappe med dato + +For blogginnlegg, bruk datoformat i mappenavnet: + +``` +/content/blogg/2025-01-15-mitt-forste-innlegg/ +``` + +Datoen (2025-01-15) trekkes automatisk ut og vises i norsk format: "15. januar 2025" + +### 2. Lag innholdsfilen + +Opprett `/content/blogg/2025-01-15-mitt-forste-innlegg/article.md`: + +```markdown +# Mitt første innlegg + +Dette er mitt første blogginnlegg. Så enkelt er det! + +## Legg til bilder + +Du kan legge til bilder ved å bare dra dem inn i mappen. + +![Beskrivelse av bildet](bilde.jpg) +``` + +### 3. Legg til et bilde + +Dra `bilde.jpg` inn i samme mappe. Bildet er nå tilgjengelig i innlegget. + +### 4. Åpne i nettleseren + +Gå til `dinside.no/blogg/2025-01-15-mitt-forste-innlegg/` + +## Automatiske lister + +Når en mappe inneholder andre mapper (ikke bare filer), lages det automatisk en liste: + +``` +/content/blogg/ + ├── 2025-01-15-mitt-forste-innlegg/ + ├── 2025-01-20-andre-innlegg/ + └── 2025-01-25-tredje-innlegg/ +``` + +Når du besøker `/blogg`, får du en liste over alle innleggene. + +## Neste steg + +- Lær hvordan du [formaterer tekst med Markdown](../formatering/) +- Legg til [metadata](../metadata/) for å kontrollere titler og menyer +- Forstå [forskjellen mellom sidetyper](../sidetyper/) diff --git a/custom/docs/brukerveiledning/metadata.ini b/custom/docs/brukerveiledning/metadata.ini new file mode 100644 index 0000000..be48ce2 --- /dev/null +++ b/custom/docs/brukerveiledning/metadata.ini @@ -0,0 +1,3 @@ +title = "Brukerveiledning" +summary = "Lær hvordan du publiserer innhold uten programmeringskunnskaper" +show_date = false diff --git a/custom/docs/brukerveiledning/metadata/metadata.ini b/custom/docs/brukerveiledning/metadata/metadata.ini new file mode 100644 index 0000000..30c63bf --- /dev/null +++ b/custom/docs/brukerveiledning/metadata/metadata.ini @@ -0,0 +1,2 @@ +title = "Metadata" +summary = "Kontroller titler, datoer og menyvisning med metadata.ini" diff --git a/custom/docs/brukerveiledning/metadata/page.md b/custom/docs/brukerveiledning/metadata/page.md new file mode 100644 index 0000000..f07d2b5 --- /dev/null +++ b/custom/docs/brukerveiledning/metadata/page.md @@ -0,0 +1,169 @@ +# Metadata + +Metadata lar deg kontrollere hvordan innholdet ditt vises. Du legger metadata i en fil som heter `metadata.ini`. + +## Hva er metadata? + +Metadata er informasjon *om* innholdet ditt, for eksempel: +- Tittel +- Publiseringsdato +- Kort beskrivelse +- Om siden skal vises i menyen + +## Opprett metadata.ini + +Lag en fil som heter `metadata.ini` i samme mappe som innholdsfilen: + +``` +/content/om-oss/ + ├── page.md + └── metadata.ini +``` + +## Grunnleggende felt + +### Tittel + +Overstyr tittelen som vises: + +```ini +title = "Om oss - Hvem vi er" +``` + +Hvis du ikke setter tittel, brukes første `# Overskrift` fra innholdsfilen. + +### Dato + +Sett publiseringsdatoen: + +```ini +date = "2025-01-15" +``` + +Datoen formateres automatisk til norsk: "15. januar 2025" + +For blogginnlegg trekkes datoen automatisk fra mappenavnet (`2025-01-15-innlegg`), men du kan overstyre med metadata. + +### Sammendrag + +Legg til et kort sammendrag som vises i listevisninger: + +```ini +summary = "Lær mer om hvem vi er og hva vi driver med." +``` + +## Menyinnstillinger + +### Vis i meny + +For å vise siden i navigasjonsmenyen: + +```ini +menu = true +``` + +### Menyen rekkefølge + +Kontroller rekkefølgen i menyen (lavere tall vises først): + +```ini +menu = true +menu_order = 1 +``` + +Eksempel: +- `menu_order = 1` → Vises først +- `menu_order = 2` → Vises som nummer to +- `menu_order = 10` → Vises senere + +## Komplett eksempel + +**`/content/om-oss/metadata.ini`:** + +```ini +title = "Om oss" +summary = "Lær mer om vårt team og vår filosofi" +menu = true +menu_order = 1 +``` + +## Blogginnlegg med metadata + +**`/content/blogg/2025-01-15-mitt-innlegg/metadata.ini`:** + +```ini +title = "Mitt fantastiske blogginnlegg" +date = "2025-01-15" +summary = "I dette innlegget deler jeg mine tanker om enkel webpublisering." +``` + +**Merk**: Du trenger ikke `menu = true` for blogginnlegg - de vises automatisk i blogglisten. + +## Metadata for mapper + +Du kan også legge metadata.ini i mapper som inneholder andre mapper: + +**`/content/blogg/metadata.ini`:** + +```ini +title = "Blogg" +summary = "Les våre siste artikler og nyheter" +menu = true +menu_order = 2 +``` + +Dette påvirker hvordan bloggen vises i menyen og i listevisninger. + +## Hva skjer uten metadata.ini? + +Hvis du ikke har metadata.ini, bruker systemet: +- **Tittel**: Første `# Overskrift` i innholdsfilen, eller mappenavnet +- **Dato**: Dato fra mappenavn (`YYYY-MM-DD-navn`), eller filens endringsdato +- **Meny**: Vises ikke i menyen +- **Sammendrag**: Vises ikke + +## Flerspråklige sider + +Hvis nettsiden har flere språk, kan du legge til oversettelser i metadata.ini: + +```ini +title = "Om oss" +summary = "Lær mer om oss" +menu = true + +[en] +title = "About us" +summary = "Learn more about us" +``` + +Den norske tittelen brukes som standard, og den engelske tittelen brukes når siden vises på engelsk. + +## Tips + +### Bruk beskrivende titler +```ini +# Bra +title = "Om oss - Vår historie og verdier" + +# Mindre bra +title = "Om oss" +``` + +### Skriv gode sammendrag +Sammendrag skal være 1-2 setninger som oppsummerer innholdet: + +```ini +summary = "Lær hvordan du publiserer innhold enkelt og raskt med vårt system." +``` + +### Hold datoformatet korrekt +Bruk alltid formatet `YYYY-MM-DD`: + +```ini +# Riktig +date = "2025-01-15" + +# Feil +date = "15.01.2025" +date = "15/01/2025" +``` diff --git a/custom/docs/brukerveiledning/page.md b/custom/docs/brukerveiledning/page.md new file mode 100644 index 0000000..27a0f31 --- /dev/null +++ b/custom/docs/brukerveiledning/page.md @@ -0,0 +1,35 @@ +# Brukerveiledning + +Denne dokumentasjonen er for deg som skal publisere innhold. Du trenger ingen programmeringskunnskaper - bare evnen til å opprette mapper og redigere tekstfiler. + +## Slik fungerer det + +Du jobber direkte med mapper og filer i `/content/`-mappen. Når du lagrer en fil, publiseres innholdet umiddelbart på nettsiden. + +### Sett opp tilgang via WebDAV + +1. Koble til `/content/`-mappen som en nettverksdisk via WebDAV +2. Mappen vises som en vanlig mappe på datamaskinen din +3. Alle endringer du gjør publiseres automatisk + +## Kom i gang + +### [Kom i gang](kom-i-gang/) +Lær det grunnleggende om å publisere innhold. + +### [Formatering med Markdown](formatering/) +Slik formaterer du tekst, bilder og lenker. + +### [Metadata](metadata/) +Legg til titler, datoer og annen informasjon til sidene dine. + +### [Sidetyper](sidetyper/) +Forstå forskjellen mellom sider, artikler og lister. + +## Rask sjekkliste + +✓ Opprett en mappe med et beskrivende navn +✓ Legg til en fil: `page.md`, `article.md` eller `post.md` +✓ Skriv innholdet i Markdown +✓ Legg til `metadata.ini` for å kontrollere tittel, dato og meny +✓ Lagre - innholdet er nå publisert! diff --git a/custom/docs/brukerveiledning/sidetyper/metadata.ini b/custom/docs/brukerveiledning/sidetyper/metadata.ini new file mode 100644 index 0000000..f1d0f01 --- /dev/null +++ b/custom/docs/brukerveiledning/sidetyper/metadata.ini @@ -0,0 +1,2 @@ +title = "Sidetyper" +summary = "Forstå forskjellen mellom sider, artikler og lister" diff --git a/custom/docs/brukerveiledning/sidetyper/page.md b/custom/docs/brukerveiledning/sidetyper/page.md new file mode 100644 index 0000000..daca57b --- /dev/null +++ b/custom/docs/brukerveiledning/sidetyper/page.md @@ -0,0 +1,207 @@ +# Sidetyper + +PnP har tre hovedtyper av innhold: sider, artikler og lister. Forstå forskjellene for å velge riktig type. + +## Sider (page.md) + +**Bruk for**: Statiske sider som "Om oss", "Kontakt", "Tjenester" + +En side er en frittstående side som ikke nødvendigvis er del av en samling. + +### Når bruke page.md + +- Informasjonssider +- Landingssider +- Om-sider +- Kontaktsider + +### Eksempel + +``` +/content/om-oss/ + ├── page.md + └── metadata.ini +``` + +**page.md:** +```markdown +# Om oss + +Vi er et team som... +``` + +**metadata.ini:** +```ini +title = "Om oss" +menu = true +menu_order = 1 +``` + +## Artikler og innlegg (article.md / post.md) + +**Bruk for**: Blogginnlegg, nyheter, artikler, meldinger + +Artikler er innhold som er del av en samling, ofte med dato. + +### Når bruke article.md eller post.md + +- Blogginnlegg +- Nyhetsartikler +- Tidsstemplede innlegg +- Innhold som skal vises i en liste + +### Eksempel + +``` +/content/blogg/2025-01-15-mitt-innlegg/ + ├── article.md + ├── metadata.ini + └── cover.jpg +``` + +**article.md:** +```markdown +# Mitt blogginnlegg + +Dette er innholdet i blogginnlegget... +``` + +**metadata.ini:** +```ini +title = "Mitt fantastiske blogginnlegg" +date = "2025-01-15" +summary = "En kort beskrivelse av innlegget." +``` + +**cover.jpg**: Forsidebilde som vises i blogglisten + +### Forskjell på article.md og post.md + +Ingen praktisk forskjell - bruk det du foretrekker: +- `article.md` - For artikler +- `post.md` - For blogginnlegg + +Begge behandles likt av systemet. + +## Lister (automatiske) + +**Bruk for**: Oversiktssider over artikler, produkter, prosjekter + +Lister genereres automatisk når en mappe inneholder andre mapper. + +### Når lages det automatisk lister + +``` +/content/blogg/ + ├── 2025-01-15-innlegg-1/ + ├── 2025-01-20-innlegg-2/ + └── 2025-01-25-innlegg-3/ +``` + +Når du besøker `/blogg`, vises en automatisk liste over alle innleggene. + +### Legg til beskrivelse til listen + +Lag en `page.md` i samme mappe som undermappene: + +``` +/content/blogg/ + ├── page.md ← Beskrivelse av bloggen + ├── metadata.ini ← Metadata for bloggen + ├── 2025-01-15-innlegg-1/ + ├── 2025-01-20-innlegg-2/ + └── 2025-01-25-innlegg-3/ +``` + +**page.md:** +```markdown +# Vår blogg + +Her finner du våre siste artikler og nyheter. +``` + +**metadata.ini:** +```ini +title = "Blogg" +menu = true +menu_order = 2 +``` + +Beskrivelsen vises øverst på bloggsiden, før listen av innlegg. + +## Sammendrag + +| Type | Filnavn | Bruk for | Dato | Vises i liste | +|------|---------|----------|------|---------------| +| **Side** | `page.md` | Statiske sider | Valgfri | Hvis del av samling | +| **Artikkel** | `article.md` | Blogginnlegg, artikler | Anbefalt | Ja | +| **Innlegg** | `post.md` | Blogginnlegg | Anbefalt | Ja | +| **Liste** | (automatisk) | Oversikt | - | - | + +## Mappestrukturer + +### Enkel side + +``` +/content/kontakt/ + ├── page.md + └── metadata.ini +``` + +### Blogg med innlegg + +``` +/content/blogg/ + ├── page.md (valgfri beskrivelse) + ├── metadata.ini + ├── 2025-01-15-forste-innlegg/ + │ ├── article.md + │ ├── metadata.ini + │ └── cover.jpg + └── 2025-01-20-andre-innlegg/ + ├── article.md + ├── metadata.ini + └── cover.jpg +``` + +### Produktkatalog + +``` +/content/produkter/ + ├── page.md (beskrivelse av produktene) + ├── metadata.ini + ├── produkt-1/ + │ ├── page.md + │ ├── metadata.ini + │ └── bilde.jpg + └── produkt-2/ + ├── page.md + ├── metadata.ini + └── bilde.jpg +``` + +## Tips + +### Bruk datoer for tidsstempler +``` +# Bra for blogginnlegg +/content/blogg/2025-01-15-mitt-innlegg/ + +# Mindre bra +/content/blogg/mitt-innlegg/ +``` + +### Bruk beskrivende mappenavn +``` +# Bra +/content/tjenester/webdesign/ + +# Mindre bra +/content/tjenester/tjeneste1/ +``` + +### Legg til forsidebilder +For artikler og innlegg, legg til `cover.jpg` for visuell appell i lister. + +### Bruk page.md for å beskrive lister +Når du har en mappe med undermapper, legg til `page.md` for å gi kontekst til listen. diff --git a/custom/docs/metadata.ini b/custom/docs/metadata.ini new file mode 100644 index 0000000..a7623c4 --- /dev/null +++ b/custom/docs/metadata.ini @@ -0,0 +1,3 @@ +title = "Dokumentasjon" +show_date = false +menu = false diff --git a/custom/docs/page.md b/custom/docs/page.md new file mode 100644 index 0000000..b2d006a --- /dev/null +++ b/custom/docs/page.md @@ -0,0 +1,31 @@ +# Bruksanvisning + +## Hvordan publisere og redigere innhold + +Skal du publisere og redigere innhold på nettsiden? Start her: + +### [Brukerveiledning](/docs/brukerveiledning/) + +Lær hvordan du publiserer sider, artikler og innlegg ved å jobbe direkte med mapper og filer. Ingen programmeringskunnskaper kreves. + +**Hurtigstart:** +1. Koble til `/content/`-mappen via WebDAV (få hjelp av en nerd!) +2. Opprett en mappe med et beskrivende navn +3. Legg til en `.md`-fil med innholdet +4. Lagre - innholdet er publisert! + +--- + +## For utviklere + +Skal du tilpasse eller utvide rammeverket? Start her: + +### [Utviklerdokumentasjon](/docs/utviklerdokumentasjon/) + +Teknisk dokumentasjon for utviklere som skal jobbe med maler, ruting, flerspråklighet og systemarkitektur. + +**Innhold:** +- Veiledninger for å komme i gang med utvikling +- Hvordan-guider for spesifikke utvikleroppgaver +- Forklaring av konsepter og designvalg +- Teknisk referanse diff --git a/custom/docs/utviklerdokumentasjon/forklaring/metadata.ini b/custom/docs/utviklerdokumentasjon/forklaring/metadata.ini new file mode 100644 index 0000000..21a029d --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/forklaring/metadata.ini @@ -0,0 +1,2 @@ +title = "Forklaring" +summary = "Forstå konseptene og designvalgene bak PnP" diff --git a/custom/docs/utviklerdokumentasjon/forklaring/routing/metadata.ini b/custom/docs/utviklerdokumentasjon/forklaring/routing/metadata.ini new file mode 100644 index 0000000..4c298b0 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/forklaring/routing/metadata.ini @@ -0,0 +1,2 @@ +title = "Rutingssystemet" +summary = "Forstå hvordan PnPs mappebaserte ruting fungerer" diff --git a/custom/docs/utviklerdokumentasjon/forklaring/routing/page.md b/custom/docs/utviklerdokumentasjon/forklaring/routing/page.md new file mode 100644 index 0000000..cf902e3 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/forklaring/routing/page.md @@ -0,0 +1,98 @@ +# Forstå ruting i PnP + +PnP bruker et enkelt, intuitivt mappebasert rutingssystem som kobler mapper direkte til URL-er. + +## Filosofien + +Tradisjonelle webrammeverk krever at du definerer ruter i konfigurasjonsfiler. PnP tar en annen tilnærming: **mappestrukturen ER rutekonfigurasjonen din**. + +Dette designvalget prioriterer: +- **Enkelhet**: Ingen rutdefinisjoner å vedlikeholde +- **Forutsigbarhet**: URL-er matcher mappestrukturen nøyaktig +- **Vedlikeholdbarhet**: Lett å forstå selv år senere + +## Hvordan det fungerer + +### URL til fil-mapping + +Når en forespørsel kommer inn, følger ruteren denne logikken: + +1. **Nøyaktig filmatch**: Hvis `/content/om.html` eksisterer, server den +2. **Mappe med sidefil**: Hvis `/content/om/` inneholder `page.md`, server den +3. **Mappe med enkeltfil**: Hvis `/content/blogg/innlegg/` inneholder `article.md`, server den +4. **Mappelisting**: Hvis `/content/blogg/` inneholder undermapper, list dem + +### Skråstrek-atferd + +PnP omdirigerer automatisk mappebaserte sider til å inkludere skråstrek på slutten: + +- `/blogg/mitt-innlegg` → `/blogg/mitt-innlegg/` (301 redirect) + +Dette sikrer at relative stier i markdown fungerer korrekt (bilder, lenker, etc). + +## Filprioritet + +Når PnP ser etter innhold i en mappe, søker den etter filer i denne rekkefølgen: + +### For enkle sider (artikler, innlegg): +1. `single.php` +2. `single.html` +3. `single.md` +4. `post.php` +5. `post.html` +6. `post.md` +7. `article.php` +8. `article.html` +9. `article.md` + +### For overordnede sider: +1. `page.php` +2. `page.html` +3. `page.md` + +## Språkvariasjoner + +PnP støtter flerspråklige sider. For språk som ikke er standardspråket, søker ruteren etter språkspesifikke filer først: + +``` +page.en.md → Engelsk versjon +page.md → Norsk versjon (standard) +``` + +URL-strukturen blir: + +``` +/om/ → Norsk (standard) +/en/about/ → Engelsk +``` + +## Egendefinerte indekssider + +Du kan overstyre standard mappelisting ved å lage en `index.php`-fil i en hvilken som helst mappe. + +## Mappenavn med datoer + +PnP trekker automatisk ut datoer fra mappenavn: + +``` +/content/blogg/2025-01-15-mitt-innlegg/ +``` + +Datoen formateres automatisk til norsk format: "15. januar 2025" + +## Hvorfor denne tilnærmingen? + +Dette rutingssystemet vil fungere i flere tiår fordi: +- Ingen komplekse avhengigheter +- Ingen rutdefinisjoner som blir utdaterte +- Filsystemoperasjoner er standardiserte og stabile +- Enkelt å migrere eller ta backup (bare kopier mapper) +- Ingen abstraksjoner som skjuler underliggende struktur +- Ingen kompilering eller cache-generering nødvendig + +## Sikkerhet + +Ruteren validerer alle stier for å forhindre directory traversal-angrep: +- Filer må være innenfor document root +- Realpaths sjekkes mot contentDir +- Kun godkjente filtyper serveres diff --git a/custom/docs/utviklerdokumentasjon/forklaring/template-system/metadata.ini b/custom/docs/utviklerdokumentasjon/forklaring/template-system/metadata.ini new file mode 100644 index 0000000..21e2659 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/forklaring/template-system/metadata.ini @@ -0,0 +1,2 @@ +title = "Malsystemet" +summary = "Forstå hvordan PnPs malsystem fungerer" diff --git a/custom/docs/utviklerdokumentasjon/forklaring/template-system/page.md b/custom/docs/utviklerdokumentasjon/forklaring/template-system/page.md new file mode 100644 index 0000000..80e6e15 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/forklaring/template-system/page.md @@ -0,0 +1,225 @@ +# Forstå malsystemet + +PnP bruker et enkelt, men kraftig malsystem basert på PHP-inkluderinger. + +## Filosofien + +Tradisjonelle templating-systemer introduserer nye språk og syntaks som må læres. PnP tar en annen tilnærming: **bruk PHP som det er**. + +Dette designvalget gir: +- **Ingen læringskurve**: Hvis du kan PHP, kan du lage maler +- **Full kraft**: Tilgang til alle PHP-funksjoner +- **Null overhead**: Ingen kompilering eller parsing +- **Lett feilsøking**: Standard PHP-feilmeldinger + +## Malhierarki + +PnP har tre hovednivåer av maler: + +### 1. Basismal (base.php) +Inneholder den overordnede HTML-strukturen: + +```php + + + + + <?= $pageTitle ?? 'Min side' ?> + + + + + + + +``` + +### 2. Sidemal (page.php) +Pakker inn enkeltinnhold: + +```php +
+ +
+``` + +### 3. Listemal (list.php) +Viser samlinger av innhold: + +```php +
+ +
+

+
+ +
+``` + +## Dataflyt + +Når en forespørsel kommer inn, flyter data gjennom systemet slik: + +``` +Request → Router → Content → Page Template → Base Template → Response +``` + +1. **Router**: Finner riktig innhold +2. **Content**: Konverterer markdown/HTML til HTML +3. **Page Template**: Pakker innholdet i `$content` +4. **Base Template**: Pakker alt i full HTML-struktur + +## Fallback-kjede + +PnP følger en fallback-kjede for maler: + +``` +custom/templates/base.php + ↓ (hvis ikke funnet) +default/templates/base.php +``` + +Dette betyr: +- Egendefinerte maler overstyrer standardmaler +- Du trenger bare å lage egendefinerte maler for det du vil endre +- Standardmaler fungerer som fallback + +## Tilgjengelige variabler + +### I base.php + +| Variabel | Type | Beskrivelse | +|----------|------|-------------| +| `$content` | string | Det rendrede innholdet | +| `$navigation` | array | Navigasjonselementer | +| `$currentLang` | string | Nåværende språk | +| `$defaultLang` | string | Standardspråk | +| `$homeLabel` | string | Label for hjem-lenken | +| `$translations` | array | Oversettelser fra språkfiler | +| `$pageTitle` | string | Sidens tittel | + +### I page.php + +| Variabel | Type | Beskrivelse | +|----------|------|-------------| +| `$content` | string | Innholdet som skal vises | +| `$pageMetadata` | array | Metadata for siden | +| `$pageTitle` | string | Sidens tittel | + +### I list.php + +| Variabel | Type | Beskrivelse | +|----------|------|-------------| +| `$items` | array | Listeelementer | +| `$metadata` | array | Metadata for mappen | +| `$pageContent` | string | Valgfritt innhold fra page.md | + +## Items-struktur + +I list.php er hvert element i `$items` et array med: + +```php +[ + 'title' => 'Innleggstittel', + 'date' => '15. januar 2025', + 'url' => '/blogg/2025-01-15-innlegg', + 'cover' => '/blogg/2025-01-15-innlegg/cover.jpg', // eller null + 'summary' => 'Kort beskrivelse' // eller null +] +``` + +## Sikkerhet i maler + +### Escape output +Bruk alltid `htmlspecialchars()` for brukerdata: + +```php +

+``` + +### Ikke escape HTML-innhold +`$content` inneholder allerede HTML og skal ikke escapes: + +```php + + +``` + +## Beste praksis + +### Bruk korte echo-tags +```php + + +``` + +### Sjekk for eksistens +```php + +

+ +``` + +### Bruk ternary for fallbacks +```php +<?= $pageTitle ?? 'Standard tittel' ?> +``` + +### Hold logikk utenfor maler +Forbered data i ruteren eller i egne funksjoner, ikke i malene: + +```php + + 10; + }); +?> + + + +``` + +## Egendefinerte maler + +For å lage egendefinerte maler: + +1. Kopier standardmalen fra `/app/default/templates/` +2. Lim den inn i `/app/custom/templates/` +3. Endre etter behov + +Eksempel: + +```bash +cp app/default/templates/base.php app/custom/templates/base.php +# Rediger app/custom/templates/base.php +``` + +## Spesialiserte maler + +Du kan lage spesialiserte maler for spesifikke formål: + +### list-grid.php +En alternativ listevisning med grid-layout: + +```php +
+ +
+ +
+ +
+``` + +PnP vil automatisk foretrekke `list-grid.php` over `list.php` hvis den eksisterer. + +## Hvorfor dette systemet? + +Dette malsystemet vil fungere i flere tiår fordi: +- Ingen proprietære templating-språk som kan bli utdaterte +- Basert på standard PHP-funksjoner +- Ingen kompilering eller cache-generering +- Lett å debugge med standard PHP-verktøy +- Ingen dependencies som kan bryte +- Fullt SEO-vennlig (server-side rendering) diff --git a/custom/docs/utviklerdokumentasjon/hvordan/add-images/metadata.ini b/custom/docs/utviklerdokumentasjon/hvordan/add-images/metadata.ini new file mode 100644 index 0000000..f671fdf --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/hvordan/add-images/metadata.ini @@ -0,0 +1,2 @@ +title = "Legge til bilder" +summary = "Lær hvordan du legger til og optimaliserer bilder" diff --git a/custom/docs/utviklerdokumentasjon/hvordan/add-images/page.md b/custom/docs/utviklerdokumentasjon/hvordan/add-images/page.md new file mode 100644 index 0000000..f74fda2 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/hvordan/add-images/page.md @@ -0,0 +1,140 @@ +# Hvordan legge til bilder + +Lær hvordan du legger til og administrerer bilder i PnP. + +## Grunnleggende bildebruk + +### Legg til bilder i samme mappe som innholdet + +Den enkleste måten å legge til bilder på er å plassere dem i samme mappe som innholdsfilen: + +``` +/content/blogg/mitt-innlegg/ + ├── article.md + ├── bilde1.jpg + └── bilde2.webp +``` + +Deretter refererer du til dem i markdown: + +```markdown +![Beskrivelse av bildet](bilde1.jpg) +``` + +### Relative stier + +PnP sikrer at relative stier fungerer korrekt ved å automatisk legge til skråstrek på slutten av URL-er. Dette betyr at bilder i samme mappe alltid fungerer. + +## Forsidebilder (Cover images) + +For blogginnlegg og artikler kan du legge til et forsidebilde som vises i listevisninger: + +1. Navngi bildet `cover.jpg`, `cover.webp`, `cover.png`, eller `cover.gif` +2. Plasser det i samme mappe som innholdet +3. PnP viser det automatisk i listevisninger + +``` +/content/blogg/mitt-innlegg/ + ├── article.md + ├── cover.webp + └── andre-bilder.jpg +``` + +## Anbefalte bildeformater + +### WebP +Bruk WebP for beste kompresjon og kvalitet: + +```markdown +![Beskrivelse](bilde.webp) +``` + +### JPEG +Bruk JPEG for fotografier: + +```markdown +![Foto](foto.jpg) +``` + +### PNG +Bruk PNG for grafikk med gjennomsiktighet: + +```markdown +![Logo](logo.png) +``` + +### SVG +Bruk SVG for vektorgr grafikk (logoer, ikoner): + +```markdown +![Ikon](ikon.svg) +``` + +## Optimalisere bilder + +### Komprimering +Komprimer bilder før du laster dem opp: + +- JPEG: Bruk 80-85% kvalitet +- WebP: Bruk 80-85% kvalitet +- PNG: Bruk verktøy som `pngcrush` eller `optipng` + +### Responsiv størrelse +Skalér bilder til passende størrelse: + +- Full bredde: Maks 1920px bredde +- Forsidebilder: 800-1200px bredde +- Ikoner: 200-400px bredde + +## Bruke bilder i egendefinerte maler + +I listemaler er forsidebilder tilgjengelige via `$item['cover']`: + +```php + +
+ + <?= htmlspecialchars($item['title']) ?> + +

+
+ +``` + +## Lazy loading + +Bruk `loading="lazy"` for bilder som ikke er synlige umiddelbart: + +```markdown +Beskrivelse +``` + +Dette forbedrer sidelastingstiden betydelig. + +## Tilgjengelige bildestier + +Bilder plassert i innholdsmapper er automatisk tilgjengelige via URL-en: + +``` +/content/blogg/mitt-innlegg/bilde.jpg +→ dinside.no/blogg/mitt-innlegg/bilde.jpg +``` + +## Delte bilder + +For bilder som brukes på flere sider, plasser dem i `/app/custom/assets/images/`: + +``` +/app/custom/assets/images/logo.svg +→ dinside.no/images/logo.svg +``` + +Deretter refererer du til dem med absolutte stier: + +```markdown +![Logo](/images/logo.svg) +``` diff --git a/custom/docs/utviklerdokumentasjon/hvordan/customize-templates/metadata.ini b/custom/docs/utviklerdokumentasjon/hvordan/customize-templates/metadata.ini new file mode 100644 index 0000000..06ebe07 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/hvordan/customize-templates/metadata.ini @@ -0,0 +1,2 @@ +title = "Tilpasse maler" +summary = "Lær hvordan du tilpasser utseendet til PnP-siden din" diff --git a/custom/docs/utviklerdokumentasjon/hvordan/customize-templates/page.md b/custom/docs/utviklerdokumentasjon/hvordan/customize-templates/page.md new file mode 100644 index 0000000..3facd6f --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/hvordan/customize-templates/page.md @@ -0,0 +1,126 @@ +# Hvordan tilpasse maler + +Lær hvordan du tilpasser utseendet og følelsen av PnP-siden din. + +## Tilpasse basismalen + +Basismalen kontrollerer det overordnede oppsettet for siden din. + +1. Naviger til `/app/custom/templates/` +2. Rediger `base.php` +3. Endre HTML-strukturen etter behov + +Eksempel: Legg til en egendefinert header: + +```php +
+ + +
+``` + +## Tilpasse listemalen + +Listemalen kontrollerer hvordan mapper med innhold vises. + +1. Rediger `/app/custom/templates/list.php` +2. Endre HTML-strukturen for listeelementer + +Eksempel: Legg til en egendefinert wrapper: + +```php +
+ +
+ + <?= htmlspecialchars($item['title']) ?> + +

+ + +

+ +
+ +
+``` + +## Tilpasse sidemalen + +Sidemalen brukes for å pakke inn enkeltinnhold. + +1. Rediger `/app/custom/templates/page.php` +2. Legg til egendefinerte elementer rundt innholdet + +Eksempel: + +```php +
+ +
+

+
+ + + + + +
+``` + +## Tilpasse stiler + +1. Rediger `/app/custom/styles/base.css` +2. Endre CSS-variabler for farger, fonter, etc. + +Eksempel: + +```css +:root { + --color-primary: oklch(0.65 0.25 30); + --color-background: oklch(0.98 0 0); + --font-body: 'Georgia', serif; + --font-heading: 'Helvetica Neue', sans-serif; + --spacing-base: 1rem; +} + +body { + font-family: var(--font-body); + background: var(--color-background); + line-height: 1.6; +} + +h1, h2, h3 { + font-family: var(--font-heading); +} +``` + +## Bruke standardmaler + +Hvis `/app/custom/` ikke eksisterer, bruker PnP standardmaler fra `/app/default/`. Dette er nyttig for raske oppsett. + +## Tilgjengelige variabler i maler + +### I `base.php`: +- `$content` - Det rendrede innholdet +- `$navigation` - Array med navigasjonselementer +- `$currentLang` - Nåværende språk +- `$homeLabel` - Label for hjem-knappen + +### I `page.php`: +- `$content` - Sideinnholdet +- `$pageMetadata` - Metadata for siden +- `$pageTitle` - Sidens tittel + +### I `list.php`: +- `$items` - Array med listeelementer +- `$metadata` - Metadata for mappen +- `$pageContent` - Valgfritt innhold fra page.md i mappen diff --git a/custom/docs/utviklerdokumentasjon/hvordan/metadata.ini b/custom/docs/utviklerdokumentasjon/hvordan/metadata.ini new file mode 100644 index 0000000..d0a2be9 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/hvordan/metadata.ini @@ -0,0 +1,2 @@ +title = "Hvordan-guider" +summary = "Praktiske guider for utvikleroppgaver" diff --git a/custom/docs/utviklerdokumentasjon/hvordan/multilingual-sites/metadata.ini b/custom/docs/utviklerdokumentasjon/hvordan/multilingual-sites/metadata.ini new file mode 100644 index 0000000..03c550d --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/hvordan/multilingual-sites/metadata.ini @@ -0,0 +1,2 @@ +title = "Flerspråklige sider" +summary = "Lær hvordan du lager nettsider med støtte for flere språk" diff --git a/custom/docs/utviklerdokumentasjon/hvordan/multilingual-sites/page.md b/custom/docs/utviklerdokumentasjon/hvordan/multilingual-sites/page.md new file mode 100644 index 0000000..5e9c1d3 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/hvordan/multilingual-sites/page.md @@ -0,0 +1,216 @@ +# Hvordan lage flerspråklige sider + +Lær hvordan du lager nettsider med støtte for flere språk i PnP. + +## Konfigurere språk + +### Steg 1: Rediger config.ini + +Åpne `/app/custom/config.ini` (eller lag den hvis den ikke eksisterer): + +```ini +[languages] +default = "no" +available = "no,en" +``` + +- `default`: Standardspråket (vises uten språkprefiks i URL) +- `available`: Kommaseparert liste over tilgjengelige språk + +### Steg 2: Lag språkfiler + +Opprett oversettelser i `/app/custom/languages/`: + +**no.ini:** +```ini +home = "Hjem" +read_more = "Les mer" +``` + +**en.ini:** +```ini +home = "Home" +read_more = "Read more" +``` + +Disse er tilgjengelige i maler via `$translations`-variabelen. + +## Lage flerspråklig innhold + +### Metode 1: Språkspesifikke filer + +Lag separate filer for hvert språk: + +``` +/content/om/ + ├── page.md (Norsk) + ├── page.en.md (Engelsk) + └── metadata.ini +``` + +**page.md:** +```markdown +# Om oss + +Vi er et selskap som... +``` + +**page.en.md:** +```markdown +# About us + +We are a company that... +``` + +### Metode 2: Metadata-seksjoner + +Bruk metadata.ini for å oversette titler og sammendrag: + +```ini +title = "Om oss" +summary = "Lær mer om oss" +menu = true +menu_order = 1 + +[en] +title = "About us" +summary = "Learn more about us" +slug = "about" +``` + +## URL-struktur + +Standardspråket bruker ingen språkprefiks: + +``` +/om/ → Norsk (standard) +/en/about/ → Engelsk +``` + +Merk at den engelske versjonen bruker `slug = "about"` fra metadata. + +## Navigasjon + +PnP bygger automatisk navigasjon basert på `menu = true` i metadata.ini: + +```php + + +``` + +## Språkvelger + +Lag en språkvelger i basismalen: + +```php +
+ >NO + >EN +
+``` + +## Bruke oversettelser i maler + +Oversettelser fra språkfilene er tilgjengelige i `$translations`: + +```php + +``` + +Bruk alltid en fallback-verdi for tilfeller der oversettelsen mangler. + +## Beste praksis + +### Konsistent mappestruktur +Bruk samme mappestruktur for alle språk: + +``` +/content/ + ├── om/ + │ ├── page.md + │ └── page.en.md + └── kontakt/ + ├── page.md + └── page.en.md +``` + +### Bruk slugs for oversatte URL-er +For rene URL-er, bruk `slug` i metadata: + +```ini +[en] +slug = "about" # /en/about/ i stedet for /en/om/ +``` + +### Hold metadata samlet +Bruk én metadata.ini per mappe med seksjoner for hvert språk: + +```ini +title = "Tittel" + +[en] +title = "Title" + +[de] +title = "Titel" +``` + +### Synkroniser innhold +Sørg for at alle språkversjoner har samme struktur og at alle sider er oversatt. + +## Eksempel: Fullstendig flerspråklig side + +``` +/content/blogg/ + ├── metadata.ini + ├── page.md + ├── page.en.md + └── 2025-01-15-mitt-innlegg/ + ├── metadata.ini + ├── article.md + ├── article.en.md + └── cover.jpg +``` + +**blogg/metadata.ini:** +```ini +title = "Blogg" +menu = true +menu_order = 2 + +[en] +title = "Blog" +slug = "blog" +``` + +**blogg/2025-01-15-mitt-innlegg/metadata.ini:** +```ini +title = "Mitt første innlegg" +date = "2025-01-15" +summary = "Dette er mitt første innlegg" + +[en] +title = "My first post" +summary = "This is my first post" +``` + +## Feilsøking + +### Innhold vises ikke for ikke-standardspråk +Kontroller at du har enten: +- En språkspesifikk fil (f.eks. `page.en.md`) +- ELLER metadata med språkseksjon som inneholder `title` + +### Navigasjon viser feil språk +Sørg for at `menu = true` er satt i base-seksjonen av metadata.ini, ikke i språkseksjonen. + +### URL-er fungerer ikke +Sjekk at `slug` matcher URL-segmentet du prøver å nå. diff --git a/custom/docs/utviklerdokumentasjon/metadata.ini b/custom/docs/utviklerdokumentasjon/metadata.ini new file mode 100644 index 0000000..c95459e --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/metadata.ini @@ -0,0 +1,2 @@ +title = "Utviklerdokumentasjon" +summary = "Teknisk dokumentasjon for utviklere" diff --git a/custom/docs/utviklerdokumentasjon/page.md b/custom/docs/utviklerdokumentasjon/page.md new file mode 100644 index 0000000..d5978d2 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/page.md @@ -0,0 +1,39 @@ +# Utviklerdokumentasjon + +Teknisk dokumentasjon for utviklere som skal tilpasse, utvide eller vedlikeholde PnP-rammeverket. + +## Dokumentasjonsseksjoner + +### [Veiledninger](veiledninger/) +Trinn-for-trinn guider for å lære rammeverket ved å bygge noe. + +### [Hvordan-guider](hvordan/) +Praktiske guider for å utføre spesifikke utvikleroppgaver. + +### [Forklaring](forklaring/) +Forstå konseptene og designvalgene bak PnP. + +### [Referanse](referanse/) +Teknisk referanse for alle funksjoner og komponenter. + +## Hurtigstart for utviklere + +1. Forstå [rutingssystemet](forklaring/routing/) +2. Lær hvordan [malsystemet](forklaring/template-system/) fungerer +3. Tilpass [maler og stiler](hvordan/customize-templates/) +4. Les [metadata-referansen](referanse/metadata/) for alle tilgjengelige felt + +## Arkitektur + +PnP er bygget på disse prinsippene: +- **Mappebasert ruting**: Mappestrukturen er rutekonfigurasjonen +- **PHP-inkludering**: Maler er rene PHP-filer +- **Ingen dependencies**: Kun standard PHP og Parsedown for Markdown +- **Fallback-kjeder**: Egendefinerte maler overstyrer standardmaler + +## Teknisk stack + +- PHP 8.3+ +- Parsedown (for Markdown) +- INI-filer (for metadata) +- Standard filsystemoperasjoner diff --git a/custom/docs/utviklerdokumentasjon/referanse/metadata.ini b/custom/docs/utviklerdokumentasjon/referanse/metadata.ini new file mode 100644 index 0000000..98cf674 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/referanse/metadata.ini @@ -0,0 +1,2 @@ +title = "Referanse" +summary = "Teknisk referanse for alle funksjoner og komponenter" diff --git a/custom/docs/utviklerdokumentasjon/referanse/metadata/metadata.ini b/custom/docs/utviklerdokumentasjon/referanse/metadata/metadata.ini new file mode 100644 index 0000000..025581f --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/referanse/metadata/metadata.ini @@ -0,0 +1,2 @@ +title = "Metadata-referanse" +summary = "Fullstendig referanse for alle metadata-felt" diff --git a/custom/docs/utviklerdokumentasjon/referanse/metadata/page.md b/custom/docs/utviklerdokumentasjon/referanse/metadata/page.md new file mode 100644 index 0000000..ade5d41 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/referanse/metadata/page.md @@ -0,0 +1,152 @@ +# Metadata-referanse + +PnP støtter valgfrie metadatafiler for forbedret innholdskontroll. + +## Filformat + +Metadatafiler bruker INI-formatet og må hete `metadata.ini`. + +## Plassering + +Plasser `metadata.ini` i samme mappe som innholdsfilen din: + +``` +/content/blogg/2025-01-15-innlegg/ + ├── article.md + ├── metadata.ini + └── cover.jpg +``` + +## Støttede felt + +### `title` +**Type**: String +**Påkrevd**: Nei +**Standard**: Hentet fra første H1 i innholdet eller mappenavn + +Overstyr sidetittelen. + +```ini +title = "Min egendefinerte tittel" +``` + +### `date` +**Type**: Dato (YYYY-MM-DD) +**Påkrevd**: Nei +**Standard**: Hentet fra mappenavn eller filmodifiseringstidspunkt + +Sett publiseringsdatoen. + +```ini +date = "2025-01-15" +``` + +### `lastModified` +**Type**: Dato (YYYY-MM-DD) +**Påkrevd**: Nei +**Standard**: Ingen + +Spor når innholdet sist ble oppdatert. + +```ini +lastModified = "2025-02-10" +``` + +### `summary` +**Type**: String +**Påkrevd**: Nei +**Standard**: Ingen + +Gi et sammendrag for listevisninger. + +```ini +summary = "En kort beskrivelse av dette innholdet." +``` + +### `menu` +**Type**: Boolean +**Påkrevd**: Nei +**Standard**: false + +Vis denne siden i navigasjonsmenyen. + +```ini +menu = true +``` + +### `menu_order` +**Type**: Integer +**Påkrevd**: Nei +**Standard**: 999 + +Rekkefølgen for menyvisning (lavere tall vises først). + +```ini +menu_order = 1 +``` + +### `slug` +**Type**: String +**Påkrevd**: Nei +**Standard**: Mappenavn + +Egendefinert URL-slug for oversatte versjoner. + +```ini +slug = "about" +``` + +## Flerspråklig metadata + +For flerspråklige sider kan du legge til språkspesifikke seksjoner: + +```ini +title = "Om oss" +summary = "Lær mer om oss" +menu = true + +[en] +title = "About us" +summary = "Learn more about us" +slug = "about" +``` + +PnP vil automatisk bruke riktig seksjon basert på nåværende språk. + +## Fullstendig eksempel + +Fullstendig metadata.ini-eksempel: + +```ini +title = "Forstå PnP-ruting" +date = "2025-01-15" +lastModified = "2025-01-20" +summary = "Lær hvordan PnPs mappebaserte rutingssystem fungerer og hvorfor det er designet for lang levetid." +menu = true +menu_order = 3 + +[en] +title = "Understanding PnP Routing" +summary = "Learn how PnP's folder-based routing system works and why it's designed for longevity." +slug = "routing" +``` + +## Fallback-atferd + +Hvis metadata.ini ikke er til stede: +- Tittel: Hentet fra første H1 i markdown/HTML, eller mappenavn +- Dato: Hentet fra mappenavn (YYYY-MM-DD-*) eller filmodifiseringstidspunkt +- Sammendrag: Vises ikke +- Meny: Vises ikke i navigasjon + +## Bruke metadata i egendefinerte maler + +Metadata er tilgjengelig i maler via `$metadata`-variabelen: + +```php + +

+ +``` + +Du kan legge til egendefinerte felt i metadata.ini og bruke dem i malene dine. diff --git a/custom/docs/utviklerdokumentasjon/veiledninger/getting-started/metadata.ini b/custom/docs/utviklerdokumentasjon/veiledninger/getting-started/metadata.ini new file mode 100644 index 0000000..6ffab35 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/veiledninger/getting-started/metadata.ini @@ -0,0 +1,3 @@ +title = "Kom i gang" +summary = "Lær grunnleggende i PnP ved å bygge din første side" +date = "2025-01-15" diff --git a/custom/docs/utviklerdokumentasjon/veiledninger/getting-started/page.md b/custom/docs/utviklerdokumentasjon/veiledninger/getting-started/page.md new file mode 100644 index 0000000..89a85a3 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/veiledninger/getting-started/page.md @@ -0,0 +1,92 @@ +# Kom i gang med PnP + +I denne veiledningen lærer du det grunnleggende i PnP ved å lage dine første sider. + +## Hva du skal bygge + +Ved slutten av denne veiledningen har du: +- En forside +- En om-side +- En enkel blogg med flere artikler + +## Forutsetninger + +- PHP 8.3 eller høyere +- En webserver (innebygd PHP-server fungerer fint) +- Grunnleggende kjennskap til HTML/Markdown + +## Steg 1: Forstå strukturen + +PnP bruker et mappebasert rutingssystem. Mappestrukturen i `/content/` blir direkte til URL-er: + +``` +/content/om/page.md → dinside.no/om +/content/blogg/2025-01-15-hei/article.md → dinside.no/blogg/2025-01-15-hei +``` + +## Steg 2: Lag din første side + +1. Opprett en mappe: `/content/om/` +2. Lag en fil: `/content/om/page.md` +3. Legg til innhold: + +```markdown +# Om oss + +Velkommen til vår side. Vi bygger enkle, vedlikeholdbare nettsider. +``` + +4. Besøk `dinside.no/om` - siden din er live! + +## Steg 3: Legg til et blogginnlegg + +1. Opprett en mappe: `/content/blogg/2025-01-15-mitt-forste-innlegg/` +2. Lag en fil: `/content/blogg/2025-01-15-mitt-forste-innlegg/article.md` +3. Legg til innhold: + +```markdown +# Mitt første innlegg + +Dette er mitt første blogginnlegg med PnP! + +![Eksempelbilde](bilde.jpg) +``` + +4. Legg til et bilde: Dra `bilde.jpg` inn i samme mappe +5. Besøk `dinside.no/blogg/2025-01-15-mitt-forste-innlegg/` + +## Steg 4: Tilpass med metadata + +Legg til en `metadata.ini`-fil i blogginnleggsmappen: + +```ini +title = "Mitt fantastiske første innlegg" +date = "2025-01-15" +summary = "Oppdag hvor enkelt det er å publisere med PnP." +``` + +## Steg 5: Lag en bloggindeks + +Når du har flere blogginnlegg i `/content/blogg/`, vil PnP automatisk lage en liste når du besøker `/blogg`. + +Legg til `metadata.ini` i `/content/blogg/`: + +```ini +title = "Blogg" +menu = true +menu_order = 2 +``` + +Dette legger til "Blogg" i navigasjonsmenyen. + +## Steg 6: Legg til et forsidebilde (cover image) + +For hvert blogginnlegg kan du legge til et forsidebilde som vises i listen: + +1. Legg til `cover.jpg`, `cover.webp` eller `cover.png` i innleggsmappen +2. Bildet vises automatisk i bloggindeksen + +## Neste steg + +- Lær om [tilpasning av maler](../../how-to/customize-templates/) +- Forstå [mappebasert ruting](../../explanation/routing/) diff --git a/custom/docs/utviklerdokumentasjon/veiledninger/metadata.ini b/custom/docs/utviklerdokumentasjon/veiledninger/metadata.ini new file mode 100644 index 0000000..588cfc4 --- /dev/null +++ b/custom/docs/utviklerdokumentasjon/veiledninger/metadata.ini @@ -0,0 +1,2 @@ +title = "Veiledninger" +summary = "Trinn-for-trinn guider for utviklere"