Menu

Så gjorde vi en sportevenemangs-applikation av WordPress

Svenska Grapplingligan (SGL) är Sveriges största turnering för submission wrestling-utövare i hela landet. Trots att grappling (submission wrestling) som sport inte funnits så många år i Sverige har den redan lockat till sig hundratals klubbar och tusentals utövare. Varje år arrangeras ett antal deltävlingar inom de sex regioner som man delat upp landet i för att slutligen avgöra mästarna för säsongen i en nationell final. Vårt uppdrag var att skapa en smidig webblösning för att registrera tävlingar och hantera anmälningar, matchlistor, matchresultat, ranking, m.m.

Varför WordPress?

Det vi direkt kunde konstatera var att det inte fanns något bra färdigt sportevenemangshanteringssystem(?) att använda sig av. Att skapa vår egen speciallösning såg vi därför som ofrånkomligt. Dock ville vi undvika återuppfinna hjulet för de mest grundläggande byggstenarna som databaslager, mallramverk, m.m. Med ett öppet CMS som WordPress får man dessutom ett väldokumenterat API och tillgången till miljoner färdigskrivna tillägg som ger ett ovärderligt mervärde.

Utmaningarna

  • Att ersätta WordPress vanliga administrationsverktyg (wp-admin) med rollanpassade och ändamålsenliga verktyg för tävlingarnas administratörer och deltagare.
  • Att stöpa om WordPress vanliga sätt att hantera användare för att koppla användare till tävlingar och dela upp dem efter säsong, region, klubb, viktklass, kön och erfarenhetsnivå.
  • Att utifrån sportens regelverk automatisera och förenkla förfarandet för att skapa matchlistor, registrera matchresultat samt beräkna poäng och ranking.

Vad är det för fel på WordPress administrationsverktyg?

Vi såg direkt det orimliga i att släppa in alla användare i WordPress administrationsverktyg med hänsyn till all information vi behövde ha kontroll över i programmeringen och de begränsade möjligheterna att anpassa administrationsverktygets gränssnitt och funktion. Istället bestämde vi oss för att plocka russinen ur kakan och bara tillgängliggöra den funktionalitet som användarna behöver med vårt eget rollanpassade webbgränssnitt.

Varför ändra på hur WordPress hanterar användare?

Att utöka vilka uppgifter som ska lagras om varje användare är en relativt smal sak för en någorlunda erfaren WordPress-utvecklare. Problemet är att vi dessutom ville kunna styra över användarinformationen i programmeringen och koppla den till våra egna informationstyper. Exempelvis att användaren ska vara den som uppger sitt kön och sin vikt i sin användarprofil medan vår programmeringslogik utifrån den informationen sätter korrekt viktklass. Ett annat exempel är att när användaren uppgett vilken klubb denne tillhör så ska systemet läsa ut vilken region användaren tillhör utifrån klubbens regionstillhörighet.

Resultatet

För att visa hur resultatet blev har vi valt att göra fem korta filmklipp; ett som visar hur administratören skapar ett tävlingsevenemang, ett som visar hur man registrerar en ny användare, ett som visar hur användaren anmäler sig till en tävling, ett som visar hur administratören för en tävling skapar matchlistor och till sist ett som visar hur administratören registrerar matchresultat.

Tekniska lösningarna

OBS! För dig som är lite mer tekniskt intresserad av våra lösningar tänkte jag här berätta lite mer om det, ni andra kan skippa denna bit utan att känna skam. 🙂

Som den erfarne webbutvecklaren kanske redan lagt märke till har vi varit flitiga användare av ramverket Bootstrap. Vidare har vi använt oss av en hel del jQuery och inte bara för visuella effekter. För att minska antalet klick och sidladdningar skapade vi vårt eget API för AJAX-anrop som hanterar att läsa så väl som skriva till databasen.

Vad gäller det som inte är lika synligt har vi en informationsarkitektur som ställer mycket speciella krav på funktionerna för att läsa och skriva till databasen. Till vår hjälp har vi använt oss mycket av ett tillägg som heter Taxonomy Metadata. Med det har vi kunnat utöka informationen kopplad till varje taxonomi och term för att bl.a. skapa relationer mellan informationstyper som annars varit omöjligt eller väldigt svårt.

Med en allt mer komplex informationsarkitektur får man dock vissa problem med WordPress standardfunktion för att iterera genom poster, även känd som ”The Loop”. Kort och gott; alltför många loopar i looparna gör så väl WordPress som utvecklare snurriga. Ett annat problem var WordPress sätt att koppla permalänkar till vilken sidmall som ska visas. Det slutade med att vi utökade WordPress permalänksystem och mallramverk för att helt ta kontrollen över vilka funktioner, variabler och sidmallar som ska laddas för vilken permalänk.

Med lite ”mörk programmerar-magi” fick vi till en funktion som läser en enkelt utformad YAML-fil för att sätta permalänk-regler och en funktion för att haka på sidmallar och funktioner på permalänksreglerna, allt detta innan WordPress uppfattat vilken permalänk som efterfrågas och vilken mall som ska laddas. Lösningen är dock utformad så pass att man fortfarande kan ladda vanliga WordPress-mallar som vanligt lika väl som man kan välja att helt åsidosätta dem. På detta sätt plockar vi verkligen russinen ur kakan vi kallar WordPress.

Sist men inte minst kan det vara värt att nämna att vi använt oss av ett tillägg som heter WordPress Social Login för att låta användare registrera sig och logga in med sitt facebook- eller googlekonto.

Sidan inlägget handlar om hittar du på adressen: http://grapplingligan.se