**ProcessWire** on avoimen lähdekoodin sisällönhallintajärjestelmä ja Content Management Framework. Ohjelma on toteutettu PHP-kielellä, sitä suoritetaan Apache-palvelinohjelman päällä ja sisältö tallennetaan MySQL-tietokantaan. ProcessWiren kehityksessä tärkeimpänä lähtökohtana on ollut tarjota mahdollisimman joustava ja helppokäyttöinen alusta verkkosivustojen kehittäjille ja suunnittelijoille.

Virallisesti ProcessWire tukee yhdistelmää Apache + PHP + MySQL/MariaDB, mutta epävirallisten, kolmannen osapuolen muutosten ja ohjeiden avulla sitä on mahdollista hyödyntää myös nginx- ja IIS -palvelinohjelmistoissa.

Historia
--------

ProcessWire nykymuodossaan (versio 2.0 ja uudemmat) perustuu löyhästi aiempaan, samaa nimeä kantaneeseen ProcessWire 1.0 -järjestelmään (2007), sekä vielä vanhempaan Dictator CMS -järjestelmään (2003.)

Kaikkien kolmen järjestelmän väliltä löytyy samankaltaisia piirteitä niin toimintalogiikasta, arkkitehtuurista, kuin käyttökokemuksenkin osalta, minkä lisäksi kaikkien kolmen pääkehittäjänä on toiminut yksi ja sama henkilö — Ryan Cramer. ProcessWiren 2:n edeltäjiä ei kuitenkaan koskaan virallisesti julkaistu avoimena lähdekoodina.

Vuonna 2012 sisällönhallintajärjestelmiä käsittelevä verkkolehti CMS Critic valitsi ProcessWiren "kriitikon valintana" vuoden parhaaksi ilmaiseksi sisällönhallintajärjestelmäksi Critic's Choice CMS Awards -kilpailussaan.

Erikoispiirteitä
----------------

Lähes kaikki tuotetut sisällöt (mukaan lukien käyttäjät ja oikeudet) ovat ProcessWiren terminologiassa sivuja, jotka hyödyntävät jotakin järjestelmän sisäisistä sivupohjista ("Template".)

Sisäänrakennettujen sivupohjien muokkaamisen lisäksi järjestelmään on mahdollista luoda uusia sivupohjia sivustokohtaisesti, mikä mahdollistaa kokonaan uusien sisältötyyppien lisäämisen ja käsittelyn. Ylläpitäjä voi koska tahansa luoda uusia sivupohjia, nimetä vanhoja sivupohjia uudelleen, tai poistaa tarpeettomiksi jääneitä sivupohjia. Kuhunkin sivupohjaan liittyvien tietokenttien hallinnointi tapahtuu ProcessWiren tarjoaman graafisen käyttöliittymän avulla.

### Sisältörakenne

Kaikki sisällöt (sivut) sijaitsevat sivuston puumaisessa sisältörakenteessa, ja kaikilla niistä on oletuksena oma, hakukoneystävällinen, sivun nimeen perustuva polkunsa. Tältä osin ProcessWire eroaa esimerkiksi Drupalista, jossa sisältö ("nodet") oletuksena sijaitsevat numeerisen tunnisteen perusteella määräytyvän polun alla.

Muutama esimerkki:

* sivuston etusivu löytyy aina osoitteesta "/", kun taas sivu nimeltä "About", joka on sijoitettu suoraan etusivun alle, löytyy oletuksena polusta "/about/" (polku luodaan sivua lisättäessä oletuksena nimen perusteella, mutta se on myös mahdollista vaihtaa joko heti tai myöhemmässä vaiheessa)
* hallintaosio löytyy oletuksena polusta "/processwire/", ja käyttäjähallintaosio polusta "/processwire/access/users/"
* yksittäinen käyttäjä nimeltä "Admin" löytyy oletuksena käyttäjähallinnan alta, polusta "/processwire/access/users/admin/"

### Sivupohjat

Kuhunkin sivuun liittyy aina jokin sivupohja, ja kuhunkin sivupohjaan puolestaan liittyy aina sivuston hallintatyökalujen avulla käsiteltävää metatietoa. Näihin metatietoihin lukeutuu esimerkiksi tieto sivupohjaan liitetyistä kentistä sekä sivupohjakohtaisista oikeusmäärityksistä, jotka kertovat millä rooleilla on esimerkiksi luku- ja kirjoitusoikeudet kyseisen sivupohjan omaaviin sivuihin.

Vaikka kaikki sisällöt sijaitsevatkin sivuston sisältöpuussa ja niillä on omat yksilölliset osoitteensa, eivät kaikki sisällöt välttämättä ole julkisesti tarkasteltavissa kyseisessä osoitteessa. Mikäli sivulla ei ole ns. sivupohjan tiedostoa, sitä ei näytetä koskaan julkisesti. Lisäksi kunkin sivupohjan osalta sivujen katseluoikeus voi olla rajattu tietylle käyttäjäroolille, ja kunkin yksittäisen sivun tila voi olla julkaisematon, jolloin sivut näkyvät vain tunnistautuneille käyttäjille.

### Esitystapa

Mikäli tiettyä sivupohjaa hyödyntävien sivujen halutaan myös olevan selaimen avulla tarkasteltavissa, voidaan niihin liittää sivupohjan tiedosto ("Template file"), joka määrittää, miten kyseisen sivupohjan omaavat sivut loppukäyttäjälle näytetään.

Mikäli sivupohjaan ei liity tiedostoa (oletuksena näin on esimerkiksi käyttäjien ja oikeuksien osalta), sen omaavat sivut eivät ole suoraan selaimen kautta tarkasteltavissa. Tällöin niihin liittyvään osoitteeseen siirtyminen palauttaa joko 404-virhesivun, ohjaa kirjautumisnäkymään, tai näyttää käyttäjälle määrätyn muun sivun sisällön. Toiminta tällaisessa tilanteessa on sivuston ylläpitäjien määriteltävissä sivupohjakohtaisesti.

Sivujen esitystavan osalta ProcessWire eroaa olennaisesti esimerkiksi WordPress-järjestelmästä: lähtökohtaisesti se ei tuota merkkausta, ja sivuston toteuttajan tehtävänä onkin määritellä, miten ProcessWiren avulla tuotetut sisällöt esitetään. Tämä mahdollistaa sekä sivuston rakenteen ja ulkoasun vapaan mukautuksen, tarvittaessa myös esimerkiksi sisältösivujen esittämisen tavanomaisten web-sivujen sijaan vaikkapa RSS-syötteinä tai XML-dokumentteina.

Tyypillisten web-sivuston osioiden tai elementtien, kuten valikoiden ja lomakkeiden, luontiin voidaan hyödyntää erikseen asennettavia Markup- eli merkkausmoduuleita.

Ominaisuuksia
-------------

* jQuery-vaikutteinen helppokäyttöinen (sisäinen) API mahdollistaa järjestelmään syötettyjen sivujen ja muiden sisältöjen noutamisen, käsittelyn, tallentamisen, sekä poistamisen.
* Ylläpitonäkymän kautta (tai vaihtoehtoisesti ohjelmallisesti API:n avulla) luotavat tietokentät, joiden määrää ei ole rajoitettu ja joista jokainen voi liittyä yhteen tai useampaan sivuun tarpeen mukaan (kenttien uudelleenkäyttäminen.)
* Modulaarinen rakenne — jopa ProcessWiren sisäänrakennetun sisällönhallintajärjestelmän toiminnot on toteutettu ProcessWire-ohjelmistokehyksen päälle asennettujen sovellusmoduulien avulla.
* Sivupohjien toteuttamisessa hyödynnetään PHP-kieltä oman mallinejärjestelmän sijaan. Kolmannen osapuolen moduulien avulla tarjolla on kuitenkin tuki esimerkiksi Twig- ja Smarty -mallinejärjestelmille.
* Sivuston oikeuksien hallinnointi on toteutettu sivupohjien tasolla roolipohjaisesti. Lisäksi oikeudet periytyvät puurakenteessa alaspäin, ellei seuraaviin sivuihin liittyvillä sivupohjilla ole omia oikeusasetuksia.
* Mahdollisuus ylläpitää useita sivustoja sekä verkkotunnuksia yhden julkaisujärjestelmäasennuksen avulla.
* Hallintaosion osoitteen vaihtaminen ja koko hallintaosion ulkoasun sekä rakenteen muokkaaminen tai korvaaminen jollain valmiista vaihtoehdoista.
* Mahdollisuus sivujen välisten relaatioiden — eli liitosten — luomiseen Sivu-tyyppisiä tietokenttiä hyödyntäen.
* Sisäänrakennettu tuki monikielisille sivustoille .

Lähteet
-------

1. ↑  Release 2.7.2, 11. joulukuuta 2015 (viitattu 22. heinäkuuta 2018). Tieto on haettu Wikidatasta.
2. ↑  Release 3.0.210, 6. tammikuuta 2023 (viitattu 13. tammikuuta 2023). Tieto on haettu Wikidatasta.
3. 1 2 3 4  Josette Rigsby: ProcessWire Aims to Simplify Web CMS *CMSWire*.  22.02.2011. Josette Rigsby. Viitattu 09.12.2011. (englanniksi)
4. ↑  ProcessWire software requirements *processwire.com*. Viitattu 15.2.2020. (englanniksi)
5. ↑  ProcessWire on NGINX *ProcessWire Support Forums*.  26.6.2011. Viitattu 16.6.2013. (englanniksi)
6. ↑  ProcessWire on Windows7/2008 Server with IIS WebServer *ProcessWire Support Forums*.  18.5.2013. Viitattu 16.6.2013. (englanniksi)
7. ↑  Ryan Cramer: ProcessWire - Introduction *ryancramer.com*. Ryan Cramer.  Arkistoitu 4.11.2011. Viitattu 09.12.2011. (englanniksi)
8. ↑  Dictator CMS - Total Content Management Control *dictatorcms.com*. Viitattu 09.12.2011. (englanniksi)
9. ↑  Critic's Choice for Best Free CMS goes to... Mike Johnston.  (englanniksi)
10. ↑  What's unique about ProcessWire CMS *processwire.com*. Viitattu 15.2.2020. (englanniksi)
11. ↑  About nodes *drupal.org*.  26.9.2012. Viitattu 16.6.2013. (englanniksi)
12. ↑  Markup Generation *processwire.com*. Viitattu 16.6.2013. (englanniksi)
13. ↑  @smashingmag *(Smashing Magazine Twitter-palvelussa)*.  20.10.2011. Viitattu 09.12.2011. (englanniksi)
14. ↑  About the ProcessWire API *processwire.com*. Viitattu 15.2.2020. (englanniksi)
15. ↑  Marc Carson: Processwire post-launch notes *friendlyskies.net*.  27.10.2011. Marc Carson. Viitattu 09.12.2011. (englanniksi)
16. ↑  Twig Template Engine Output *modules.processwire.com*. Viitattu 16.6.2013. (englanniksi)
17. ↑  Smarty Templating *modules.processwire.com*. Viitattu 16.6.2013. (englanniksi)
18. 1 2  ProcessWire 2.2 [soft launch] (Version 2.2 julkaisutiedote) *processwire.com*.  17.1.2012. Viitattu 11.2.2011. (englanniksi)
19. ↑  Multi language support with ProcessWire CMS *processwire.com*. Viitattu 15.2.2020.

Aiheesta muualla
----------------

* ProcessWiren virallinen sivusto (englanniksi)
* ProcessWire GitHub-palvelussa (englanniksi)
* Projektin esittely ja tilastoja Open Hub -palvelussa (englanniksi)
* Esittely socPub-sivustolla (englanniksi)
* Version 2.1 julkaisutiedote CMS Critic -sivustolla (englanniksi)
* Esittely Tyssen Design -suunnittelutoimiston blogissa (englanniksi)