ProcessWire er systemet jeg i stor grad benytter når jeg lager nettsider. Her skal jeg kort gå gjennom hva som kjennetegner dette systemet og hvorfor jeg har valgt å bruke det.
Introduksjon til ProcessWire
ProcessWire kalles både et CMS (content management system) og et CMF (content management framework). Det er gratis, har en dedikert følgerskare og et godt forum, og er åpen kildekode.
Grunnen til at CMF-begrepet brukes, er at du til en viss grad selv må sette opp hvordan innholdet skal styres, som gjør det til et rammeverk å bygge din egen vri av et CMS innenfor. Likevel har du en grunnflate å starte ut fra: Et installasjonsskript og et kontrollpanel du logger inn på. Ikke ulikt WordPress, for å introdusere CMS-et jeg kommer til å sammenligne mest med i teksten.
Felter og maler
ProcessWire er bygd opp på et prinsipp om at du sjøl setter opp funksjonaliteten du ønsker. Du kan laste ned moduler som tilfører en del funksjonalitet, men kun på innsiden av systemet. Hvordan modulenes funksjoner vises i bruk på selve websiden må du sette opp sjøl.
Det meste av websidens behandling av innhold setter du opp med felter og maler. En typisk mal kan være et blogginnlegg, som består av felter som tittel, ingress, tekst, merkelapper, publiseringsdato, forfatter, kategorier, med mer. Det finnes ulike typer felter, som rene tekstfelter til datofelter, med mer.
Du vil gjerne ha en unik forside som lister opp blogginnleggene, dette blir ofte da en egen mal hvor du ikke nødvendigvis bruker så mange felter, men koder inn i malens tilhørende PHP-fil at den skal liste opp blogginnleggene. Hvordan du gjør dette beskrives i ProcessWires API-dokumentasjon (processwire.com).
Hva om du ønsker å kunne trykke på et kategorinavn i blogginnlegget, og komme til en side som viser innlegg knyttet til den kategorien. Lag en egen mal og skriv inn litt kode i malens PHP-fil.
Hvorfor ikke WordPress?
Det kan høres ut som dette er ekstra arbeid, sammenlignet med å sette opp et ferdig system som WordPress. Men kontrollen du får over eget nettsted er verdt tiden. Dersom du har et behov eller en sammensetning av flere behov, som WordPress ikke kan tilby på en tilstrekkelig måte uten tredjeparts innstikk du har enda mindre kontroll over, så er valget lett.
Et eksempel kan være om du har en webside hvor du vil sette opp en kombinasjon av blogg, arrangementer, produktsider, ansattliste, nyheter, kontaktside, med mer.
Igjen så er det sånn at WordPress kan tilby det meste av dette i form av innstikk. Som tar meg over på det som er min egen begrunnelse til hvorfor jeg likevel har valgt ProcessWire.
Kontroll
Det handler om kontroll, og til dels om sikkerhet. Hvor jeg med WordPress alltid måtte forholde meg til systemets rammer, og funksjonaliteten ferdige innstikk kunne tilby, velger jeg med ProcessWire å bygge akkurat det jeg vil ha. Verken mer eller mindre.
ProcessWire har en systemkjerne som tilbyr denne muligheten til å bygge det du vil. Og så lenge sikkerheten til dens kjerne er god, vil det du bygger være like sikkert. Dette kan ikke alltid WordPress innstikk skilte med. Hva så med ProcessWires moduler? De er en utvidelse av kjernen, på kjernens premisser, og har dermed den samme sikkerheten som kjernen.
Kontroll over hvordan noe ser ut har også vært med i vurderingen min. Med innstikk i WordPress kom det gjerne innhold ut på siden som hadde sine egne JavaScript og CSS-kode. Og for å få kontroll over disse måtte jeg gjerne inn og blokkere disse ressurserene, for så å tilføye igjen det jeg hadde bruk for. Da velger jeg heller å ha full kontroll fra grunnen av og opp.
Det blir ryddigere å kun legge til, enn først å fjerne og så legge til.
Andre webløsninger
Det finnes selvsagt andre løsninger å velge i tillegg til ProcessWire og WordPress. Valget mitt falt på dette systemet fordi det i tillegg til å ha store muligheter for egen tilpasning, bygde på det enkele konseptet med maler og felter. Og selv om det har skjedd mye, spesielt innen headless CMS og JavaScript-løsninger, så holder jeg en knapp på
API-et er ikke spesielt komplisert, heller ikke for meg som anser meg selv som markup-koder først og fremst (HTML og CSS), og kun som nybegynner på områder som PHP og JavaScript.
Filmdagbok — et eksempel
For noen år siden overførte jeg nettested Filmdagbok fra WordPress til ProcessWire. Med over 4000 innlegg var det mye arbeid å gjøre endringer og ha full kontroll over innholdet, så jeg ønsket et system hvor dette kunne håndteres annerledes.
Overflyttingen bestod av følgende trinn
Eksportering av tekstinnhold fra WordPress.
Kopiering av bildeinnhold fra WordPress.
Oppsett av felter og maler i ProcessWire.
Importering av tekstinnhold til ProcessWire.
Importering av bildeinnhold til ProcessWire.
Design av nye sider, det vil si malene i ProcessWire.
Et blogginnlegg i WordPress bestod av
Tittel
Tekst
Merkelapper (rangering og regissører blandet)
Kategorier
Publiseringsdato
Et tekstfelt for IMDb-ID
Derfor satte jeg følgende opp maler i ProcessWire
Blogginnlegg
Kategorier
Rangeringer
Regissører
Med flere
I stedet for å skrive inn kategoriene som tekst inn i et blogginnlegg i ProcessWire, er blogginnlegget knyttet til kategorisider ved bruk av et sidefelt. I prinsippet likt WordPress. Og i stedet for å ha kun et sidefelt for merkelapper, opprettet jeg egne sidefelter for rangeringer, regissører og etter hvert også skuespillere og generelle merkelapper.
Etter å ha satt opp strukturen importerte jeg eksportfilene jeg fikk fra WordPress til ProcessWire. Her gjorde jeg første en del søk og erstatt, og rensket innholdet. Samtidig som jeg for eksempel byttet ut WordPress-innleggenes tilknytning til kategorier med tilknytning til kategorisidenes ID i ProcessWire.
Kort fortalt var det noe, men relativt lite manuelt arbeid, da mesteparten kunne gjøres ved å bruke ProcessWire sitt API til å lage dedikerte importer.
I senere tid knyttet jeg opprettelsen av nye innlegg til MyAPIFilms (myapifilms.com). Så hver gang jeg skulle skrive om en ny film, fylte jeg ut en IMDb-ID i et felt, og ProcessWire importerte filmens tittel, regissør, skuespillere, lanseringsår og sjangrer. Dermed gjenstod det bare for meg å skrive om filmen.
Resultatet ved publisering av dette innlegget var en blogg med 4318 innlegg, hvor cirka 3000 har en slags anmeldelse i seg. Disse var knyttet opp mot 247 merkelapper, 2712 regissører, 156 139 skuespillere, 5 rangeringer, 25 sjangrer, 4 typer og 260 land.