ZKRINET Docs
Byggblock

CMS — sidor och inlägg

På Zkrinet: lägg till blocket under Byggblock i panelen — ett klick, din egen kod rörs inte och en ögonblicksbild tas först. Installationsstegen nedan gäller om du kör PocketBase själv, till exempel efter en export.

Sidor och blogginlägg som du skriver i PocketBases adminpanel (med textredigerare) och visar i din app. Publicering med datum, automatiska webbadresser, versionshistorik, RSS-flöde och sitemap.

Testat mot PocketBase 0.40.4.

Installation

Kopiera pb_hooks/ och pb_migrations/ till din PocketBase och starta om. Samlingarna zk_cms_sidor och zk_cms_inlagg dyker upp i adminpanelen.

Skriva

Fält
titel, innehall (redigerare), utdragTexten
slugWebbadressen. Lämna tom så skapas den av titeln: "Våra tjänster & priser!" → vara-tjanster-priser (finns den redan blir det -2).
bildOmslagsbild (jpg/png/webp/gif/avif, max 10 MB)
sok_titel, sok_beskrivningValfria texter för Google (annars titel/utdrag)
publicerad, publicerasSyns bara när publicerad är på och datumet passerats. Datum i framtiden = schemalagd. Bocka i utan datum = publiceras nu.
lastid_minRäknas ut automatiskt (200 ord/minut)
Sidor: ordning · Inlägg: taggar (lista), forfattare

Bara superusers kan skriva. Besökare läser publicerat innehåll utan inloggning.

Visa i din app

// En sida via adressen
const sida = await pb.collection("zk_cms_sidor").getFirstListItem(`slug = "${slug}"`)

// Senaste inläggen
const inlagg = await pb.collection("zk_cms_inlagg").getList(1, 10, { sort: "-publiceras" })

// Inlägg med en tagg
await pb.collection("zk_cms_inlagg").getList(1, 10, { filter: 'taggar ~ "nyhet"' })

Rendera innehållet tvättat. innehall är HTML. Pluginet tar bort skript, händelseattribut, javascript:-länkar, inbäddningar och liknande när det sparas (testat mot ett trettiotal kända knep) — men det är ett extra skyddslager. Rendera alltid med en riktig tvätt i appen, t.ex. DOMPurify.sanitize(sida.innehall).

RSS och sitemap

Ligger din sajt på en annan adress än PocketBase, skapa en rad i zk_cms_installningar:

FältExempelStandard
webbadresshttps://min-sajt.seappens adress
sida_mall/{slug}/{slug}
inlagg_mall/nyheter/{slug}/blogg/{slug}
rss_titel, rss_beskrivningappens namn

Tips: peka /rss.xml och /sitemap.xml på din sajt hit (proxy/rewrite), och lägg sitemappen i Google Search Console.

Versioner

Varje gång titel, innehåll eller utdrag ändras sparas den tidigare versionen i zk_cms_versioner (de 20 senaste per sida). Återställ med:

POST /api/zk/cms/aterstall/{versionens id}     (superuser)

Den nuvarande versionen sparas först, så en återställning går också att ångra.

Begränsningar

Testa

./bank.py cms

11 tester: slug (svenska tecken, dubbletter), publicering och schemaläggning, behörighet, tvätt av farlig HTML (inkl. kodade och sammansatta knep) utan att vanlig HTML rörs, lästid, versioner och återställning, versionstaket, RSS och sitemap (giltig XML, rätt adresser, inga utkast). Tvätten är mutantverifierad: varje skydd har brutits med flit och fångats.