ProcessWire

**ProcessWire** on avoimen lähdekoodin sisällönhallintajärjestelmä (CMS), Content Management Framework (CMF) ja web-sovelluskehys (WAF), joka on toteutettu PHP-ohjelmointikielellä. Se on jaettu Mozilla Public License 2.0 -lisenssillä. ProcessWire on rakennettu sellaisen API:n ympärille, jonka käyttö- ja nimeämiskäytännöt ovat samankaltaiset kuin JavaScript-kehyksessä jQuery. API:n tavoitteena on tarjota verkkosivuston sivuille samanlainen saavutettavuus ja hallinta kuin jQuery tarjoaa DOM:lle. Sisältöä hallitaan joko API:n tai verkkopohjaisen hallintapaneelin kautta. ProcessWirea käytetään pääasiassa verkkosivustojen, web-sovellusten, palveluiden, sisältösyötteiden ja niihin liittyvien sovellusten kehittämiseen.

## Ominaisuuksia

* jQuery-tyylinen API kattavalla dokumentaatiolla
* Graafinen verkkopohjainen asennusohjelma
* Kaikki kentät ovat mukautettuja kenttiä, indeksoitu API:n hakutoimintoja varten
* Voidaan käynnistää muista PHP-sovelluksista tai komentorivi-skripteistä
* Interaktiiviset ja API-pohjaiset kuvankäsittelytoiminnot
* Raahaa ja pudota -pohjainen puutyyppinen sivulista
* Raahaa ja pudota -tiedostotoiminnot sekä kuvien lataus- ja muokkaustoiminnot
* Tuki suuremmille (yli 100&nbsp;000 sivua) asennuksille
* Merkkijonopohjaisten valitsimien käyttö API-kutsuissa
* Roolipohjainen pääsynhallintajärjestelmä
* Ydinkehityksen painotus tietoturvassa
* Merkkauksesta riippumaton tuloste, jättää kaiken tulosteen kehittäjälle
* Mallipohjatiedostot ovat PHP-pohjaisia, mallinemoottoria ei käytetä oletuksena
* Kokonaisten sivujen tai yksittäisten osien välimuistitus
* Monikielinen tuki monikielisillä tekstikentillä ja URL-osoitteilla
* Modulaarinen lisäosa-arkkitehtuuri ja saatavilla olevat kolmannen osapuolen moduulit
* Kenttä- ja syötetyypit ovat itsessään lisäosamoduuleja
* Koukkujärjestelmä, joka mahdollistaa useimpien ydintoimintojen koukuttamisen ja muuttamisen
* Kentät ja kenttäryhmät ovat toistettavissa sisäänrakennettuja Repeater-kenttätyyppejä käyttäen
* Tuki rikkaalle tekstin muokkaukselle käyttäen CKEditoria
* Useita hallintateeman suunnitteluvaihtoehtoja, mukaan lukien moderni "Konkat Default" -teema
* Etupään muokkaustoiminnot sisäänrakennettuina ytimeen
* PHP-nimiavaruuksien tuki

## Moduulit ja laajennettavuus

ProcessWiressa on modulaarinen lisäosa-arkkitehtuuri, jossa moduulit toimivat ensisijaisena menetelmänä toiminnallisuuden laajentamiseen. Ytimessään ProcessWire itsessään on suurelta osin kokoelma moduuleja, ja hallintasovellus koostuu kokonaan moduuleista. ProcessWiren moduuleja on useita eri lajeja:

* **Ydinmoduulit** - Sisältyvät ProcessWire-ytimeen `/wire/modules/` -hakemistossa. Monet ovat esiasennettuina, kun taas toiset ovat saatavilla yhdellä napsautuksella asennettaviksi
* **Sivustomoduulit** - Kolmannen osapuolen tai mukautetut moduulit, jotka on asennettu `/site/modules/` -hakemistoon
* **Pro-moduulit** - Pääkehittäjän kehittämät kaupalliset moduulit, jotka tarjoavat edistynyttä toiminnallisuutta

Vuodesta 2026 lähtien ProcessWiren moduulihakemistossa on saatavilla yli 637 moduulia. Suhteellisen pienempi moduulien määrä verrattuna muihin CMS-alustoihin, kuten WordPressiin, johtuu ProcessWiren ominaisuusrikkaasta ytimestä, joka sisältää sisäänrakennettua toiminnallisuutta, joka muuten vaatisi erilliset lisäosat.

### Moduulityypit

ProcessWire tukee useita ennalta määriteltyjä moduulityyppejä:

* **Fieldtype-moduulit** - Määrittelevät mukautettuja kenttätyyppejä erilaisten tietojen tallentamiseen
* **Inputfield-moduulit** - Tarjoavat syöttöliittymiä kentille hallinnassa
* **Process-moduulit** - Luovat hallintasivuja ja -prosesseja
* **Textformatter-moduulit** - Muotoilevat ja muuntavat tekstitulosteita
* **Markup-moduulit** - Generoivat merkkausta ja HTML:ää
* **Autoload-moduulit** - Latautuvat automaattisesti ProcessWiren käynnistyessä, hyödyllisiä koukuille

Moduulien asennus on yksinkertaistettu useiden menetelmien kautta: ZIP-tiedostojen lataaminen hallinnon kautta, lataus-URL-osoitteiden antaminen tai tiedostojen manuaalinen sijoittaminen moduulihakemistoon.

### Kaupalliset Pro-moduulit

ProcessWire tarjoaa useita kaupallisia Pro-moduuleja, jotka pääkehittäjä Ryan Cramer on kehittänyt:

* **FormBuilder** - Kattava lomakkeen rakennustyökalu lomakkeiden luomiseen ja hallintaan ilman koodausta
* **ProFields** - Kokoelma tehokkaita kenttätyyppejä, mukaan lukien Repeater Matrix, Table, Combo ja Custom Fields -moduulit
* **ProCache** - Edistynyt välimuistimoduuli suorituskyvyn optimointiin
* **ProMailer** - Sähköpostin hallintatyökalut
* **ProDrafts** - Luonnos- ja versiohallinta
* **ListerPro** - Edistynyt sivujen listaus ja hallinta
* **LoginRegisterPro** - Täydellinen käyttäjärekisteröinti- ja kirjautumisjärjestelmä

Pro-moduulien tuotot tukevat ilmaisen ProcessWire-ytimen jatkokehitystä.

## Kohderyhmä

Ennen verkkosivuston tai sovelluksen kehitystä ja sen aikana ProcessWiren kohderyhmä koostuu suurelta osin web-kehittäjistä ja web-suunnittelijoista. Tässä kohderyhmässä ProcessWirea käytetään sekä kehitystyökaluna että CMS:nä.

Kehityksen jälkeen kohderyhmä muuttuu henkilöiksi, jotka hallinnoivat verkkosivustojen ja sovellusten sisältöä ja jotka eivät tyypillisesti ole web-suunnittelijoita/-kehittäjiä. Tämä kohderyhmä käyttää ProcessWirea ensisijaisesti CMS:nä sisällön hallintaan.

## Yhteisö

ProcessWirella on aktiivinen globaali kehittäjien ja käyttäjien yhteisö. Yhteisön ensisijainen keskus on tukifoorumi osoitteessa processwire.com/talk, joka sisältää osiot:

* Yleinen tuki ja API-kehityskysymykset
* Moduulikehitys ja -tuki
* ProcessWirellä rakennettujen verkkosivustojen esittely
* Monikieliset tukikeskustelut
* Tietoturvakeskustelut
* Työpaikkailmoitustaulu ProcessWire-kehittäjien palkkaamiseen

Yhteisö tunnetaan ystävällisestä ja avuliaasta ilmapiiristään, jossa sekä käyttäjät että pääkehittäjä osallistuvat aktiivisesti. ProcessWire ylläpitää viikoittaista uutiskirjettä ja ProcessWire Weeklyä, Teppo Koivulan itsenäistä julkaisua, joka käsittelee ProcessWire-uutisia ja web-kehitysaiheita.

Yhteisö on kehittänyt lukuisia kolmannen osapuolen moduuleja, sivustoprofiileja ja oppaita. Virallisen verkkosivuston esittelyosio esittelee ProcessWirellä rakennettuja verkkosivustoja pienistä yritysten sivustoista suuriin institutionaalisiin verkkosivustoihin.

## Historia

ProcessWirea on kehitetty aktiivisesti vuodesta 2003. Vuosina 2003–2007 sitä kehitettiin nimellä Dictator CMS. Vuosina 2007–2010 sitä kehitettiin nimellä ProcessWire 1.x. ProcessWirestä tuli avoimen lähdekoodin yhteisöprojekti vuonna 2010, ja sitä kehitetään tällä hetkellä versioina ProcessWire 2.x ja 3.x.

ProcessWirellä on ollut useita merkittäviä versiojulkaisuja ensimmäisen avoimen lähdekoodin julkaisun jälkeen. Versio 3.0, joka julkaistiin syyskuussa 2016, merkitsi toista pääversiojulkaisua ja esitteli PHP-nimiavaruudet, etupään muokkaustoiminnot ja tuen käännetyille moduuleille.

Versio 3.0.255, joka julkaistiin 16. tammikuuta 2026, esitteli useita merkittäviä parannuksia:
* Uuden modernin hallintasuunnitteluteeman nimeltä "Konkat Default", jonka Konkat Studio (Jan Ploch ja Diogo Oliveira) loi, tarjoten nykyaikaisemman ulkonäön, jota voidaan vaihtaa alkuperäisen "Core Original" -suunnittelun kanssa
* Parannettu Markup Regions -toiminnallisuus, joka mahdollistaa merkkausalueiden muokkaamisen tiedostoista, jotka aiemmin vain määrittelivät ne
* Laajennettu API-dokumentaatio noin 50 ydinmoduulille
* Päivitykset ydin-JavaScript-API-toimintoihin Uikit-modaalien käyttämiseksi Vex-modaalien sijaan
* Uudet JavaScript-API-menetelmät entiteettien koodaukseen/dekoodaukseen
* ZipFileValidator-moduulin käyttöönotto parannetun tietoturvan vuoksi

Järjestelmä on säilyttänyt johdonmukaisuuden ja taaksepäin yhteensopivuuden koko kehityksensä ajan jatkuvilla päivityksillä säilyttäen samalla alkuperäiset API-konseptit ja nimeämiskäytännöt.

## Käännökset ja yhteisö

ProcessWirella on aktiiviset, globaalit loppukäyttäjä- ja kehittäjäyhteisöt. Nämä yhteisöt ovat kääntäneet ProcessWiren englannista omille äidinkielilleen, mukaan lukien: kiina, kroatia, tšekki, hollanti, ranska, saksa, kreikka, heprea, unkari, italia, japani, portugali, venäjä, slovakki, espanja, ruotsi, turkki, ukraina ja vietnam. ProcessWire-yhteisöjen keskeisin keskus löytyy kehittäjien tukifoorumeilta.

## Vertailu muihin alustoihin

ProcessWirea verrataan usein muihin sisällönhallintajärjestelmiin, erityisesti WordPressiin. Virallinen vertailu korostaa useita keskeisiä eroja:

* ProcessWire on rakennettu ensisijaisesti kehyksenä, jossa CMS on sovellus sen päällä, kun taas WordPress sai alkunsa bloggausalustana
* Kaikki ProcessWiren kentät ovat oletuksena mukautettuja kenttiä, kun taas WordPress erottaa vakio- ja mukautetut kentät
* ProcessWire käyttää hierarkkista sivupuurakennetta kaikelle sisällölle, kun taas WordPress käyttää erillisiä julkaisutyyppejä ja taksonomioita
* ProcessWire korostaa kehittäjän hallintaa tulosteen merkkauksessa ollen merkkauksesta riippumaton, kun taas WordPress käyttää teemajärjestelmiä
* ProcessWirella on pienempi moduuliekosysteemi (yli 600 moduulia) verrattuna WordPressiin (yli 40 000 lisäosaa), suurelta osin siksi, että ydintoiminnallisuus on kattavampi

## Palkinnot ja julkaisut

Marraskuussa 2016 ProcessWire palkittiin CMS Criticin parhaana pienyritysten CMS:nä.

Heinäkuussa 2016 Smashing Magazine julkaisi artikkelin *A Beginners Guide to ProcessWire*.

Tammikuusta 2016 lähtien Envato Tuts+ on julkaissut useita artikkeleita ja oppaita ProcessWirestä.

Tammikuussa 2015 ProcessWire palkittiin CMS Criticin parhaana ilmaisena PHP-CMS:nä.

Joulukuussa 2014 PHP Architect julkaisi artikkelin *ProcessWire: Flexibility, Power, and a Generous Dose of Pure Fun*.

Joulukuussa 2012 ProcessWire palkittiin CMS Criticin parhaana ilmaisena CMS:nä.

## Arkkitehtuuri

ProcessWire on rakennettu sivujen sisältöpuun ympärille (toisin kuin säiliöjärjestelmä). Jokaisen sivun URL tai polku heijastaa aina sen paikkaa hierarkiassa. Samaa polkua käytetään sivun viittaamiseen API:ssa. Tämän seurauksena polun yhteys sisäiseen puuhierarkiaan määrittää ProcessWiren arkkitehtuurin. Sisältöpuun merkitsemän vanhempi-lapsi-suhteen lisäksi ProcessWire tukee relaatio yhden-suhde-yhteen ja yhden-suhde-moneen -viittauksia puun sivujen välillä.

### Mallipohja-arkkitehtuuri

Mallipohjat ProcessWiressa ovat sisältötyyppi, joka sisältää yhden tai useamman mukautetun kentän, jotka edustavat sisältötyypin määritelmää. Jokainen ProcessWiren sivu on määritetty mallipohjaksi, joka sitten edustaa sivun tyyppiä. Mallipohja jaetaan tyypillisesti useiden sivujen kesken. Mallipohjat määrittelevät myös pääsynvalvonnan, välimuistituksen ja muut asetukset, jotka jaetaan mallipohjaa käyttävien sivujen kesken.

Mallipohilla on valinnaisesti liittyvä PHP-tiedosto, johon viitataan mallipohjan tiedostona. Tämä tiedosto suoritetaan aina, kun mallipohjaa käyttävän sivun URL-osoitteeseen pääsee. Tämän seurauksena mallipohjan tiedostoja käytetään tyypillisesti tulostustarkoituksiin. Mallipohjan tiedostolle tarjotaan useita API-muuttujia, joista huomattavin on `$page` API-muuttuja, joka sisältää kaikki tarkasteltavan nykyisen sivun kentät ja sisällön.

Mallipohjan tiedostot palvelevat useita konteksteja sovelluksesta riippuen. ProcessWiren oletusverkkosivustoprofiilit käyttävät mallipohjan tiedostoja ensisijaisesti suoran ja dynaamisesti generoidun HTML-merkkauksen tulosteeseen. Mallipohjan tiedostoja voidaan käyttää myös välisenä ohjaimena mallin ja erillisen näkymän välillä. Koska mallipohjan tiedostot ovat tavallisia PHP-tiedostoja, ne voivat tarvittaessa käyttää muita verkkopalveluita tai PHP-sovelluksia ilman erillistä jäsennystasoista.

### Kenttä-arkkitehtuuri

Kaikki ProcessWiren kentät ovat käyttäjän määrittämiä mukautettuja kenttiä. Tietty kenttä voidaan määrittää useille mallipohjille, jotka puolestaan sisältävät yksittäisiä sisältöpaloja kullekin mallipohjaa käyttävälle sivulle. Jokaisella kentällä on tyyppi, johon viitataan nimellä "fieldtype" (yksi sana), eräänlainen lisäosamoduuli. ProcessWire sisältää useita fieldtype-moduuleja, mukaan lukien sellaiset, jotka tukevat tekstiä, numeroita, tiedostoja, kuvia, sivuviittauksia, URL-osoitteita, sähköpostiosoitteita, päivämääriä ja kommentteja. Lisää fieldtype-moduuleja asennetaan kolmannen osapuolen moduuleina.

### Sivurakenne

ProcessWire käyttää hierarkkista puumaista rakennetta kaiken sisällön järjestämiseen sivuina. Tämä rakenne on samankaltainen kuin tiedostojärjestelmä, ilman asetetuja syvyysrajoituksia. Järjestelmä on suunniteltu skaalautumaan yhden sivun verkkosivustoista miljoonien sivujen asennuksiin säilyttäen samalla johdonmukaisen suorituskyvyn ja helppokäyttöisyyden. Kaikki navigointi ja sisällön väliset suhteet perustuvat tähän puurakenteeseen, jota voidaan kulkea läpi sekä hallintaliittymän että API:n kautta.

## Tietoturva

ProcessWire painottaa vahvasti tietoturvaa koko ydinkehityksensä ajan. Järjestelmä sisältää:

* Roolipohjaisen pääsynhallinnan tarkkojen käyttöoikeuksien kanssa
* Sisäänrakennettu suoja yleisiä haavoittuvuuksia vastaan (SQL-injektio, XSS, CSRF)
* Säännölliset tietoturvatarkastukset ja päivitykset
* Validointi- ja puhdistustyökalut koko API:ssa
* Tiedostojen latauksen validointi ja turvatoimenpiteet
* Istunnon tietoturvaominaisuudet

ProcessWire on säilyttänyt vahvan tietoturvaennätyksen koko historiansa ajan ilman merkittäviä tietoturvatapauksia tai katkoksia.

## Jakelu ja vaatimukset

ProcessWiren lähdekoodi on isännöity GitHubissa ja se jaetaan myös Softaculousissa, Bitnamissa ja Composer/Packagistissa.

ProcessWire toimii AMP-alustalla (Apache, MySQL tai MariaDB, PHP), jota monet hosting-palveluntarjoajat ja web-kehitysympäristöt käyttävät. ProcessWire vaatii PHP-version 5.3.8 tai uudemman sekä MySQL:n tai MariaDB:n 5.0.15 tai uudemman.

## Merkittäviä toteutuksia

ProcessWire toimii monipuolisilla verkkosivustoilla, mukaan lukien:
* Hallituksen ja institutionaaliset verkkosivustot
* Matkailu- ja kohdemarkkkinointisivustot
* Yrityssivustot
* Verkkokauppa-alustat
* Uutis- ja mediajulkaisut
* Oppilaitokset
* Kulttuuriorganisaatiot ja museot

Alustan joustavuus tekee siitä sopivan sekä yksinkertaisille verkkosivustoille että monimutkaisille web-sovelluksille.

## Lähteet

## Aiheesta muualla
* ProcessWiren virallinen sivusto 
* ProcessWire vs WordPress -vertailu 
* ProcessWire-moduulihakemisto 
* ProcessWire-tukifoorumit 
* ProcessWire GitHubissa