Hur jag tycker att man ska ta sina första steg, i dagsläget vill säga. Självklart kan mina åsikter ändras om ny kunskap dyker upp.
Syftet med detta inlägg är att beskriva hur jag sätter upp en enkel miljö för att utveckla en komponent till Joomla 3.x. Jag kommer att döpa komponenten till ”test”.
Verktyg jag använder i detta inlägg
- Joomla installerad på lokal dator (~user/) (version Joomla! 3.4.1 – 2015-03-24)
- Apache 2.4.10
- Netbeans (version 8.0.2 – 2015-03-24)
- Firefox (version 36.0.1)
- Joomlas dokumentation – den är bra, bara man kommer förbi första tröskeln
Det viktiga här är att man installerar Joomla på den egna datorn och inte försöker jobba direkt mot en server. Självklart kan man säkert göra det också, men för att beskriva de första stegen tycker jag att man ska ha Joomla installerad på sin egen dator. Detta kräver så klart att man har en webb-server installerad på sin dator.
Att installera webb-server och andra nödvändigheter kommer inte att beskrivas i detta inlägg.
Bakgrund
Det har tagit mig ett tag att förstå vad jag håller på med, längre tid än jag vill erkänna. Jag har försökt följa Joomlas egen dokumentation om hur man skapar en komponent.
De första stegen som beskrivs där man ska skriva in en url för att se innehållet i en enkel text-fil, dessa fungerade aldrig för mig. I alla fall från början var det omöjligt att få dessa att fungera. Efter mycket experimenterande och flera tillfällen av att ge upp, så lyckades jag till slut hitta rätt genom att läsa ett svar på följande länk. Att lägga till XML-filen anger en person är lösningen. Vad som inte nämns är att det räcker om det finns en XML-fil i någon av ”componen”-mapparna, antingen under ”site” eller ”site/administration”. ”site” är den mapp där själva Joomla finns. Hur det ser ut visar jag nedan och du får så klart byta ut det jag angett med vinkel-parenteser före ”/administrator/..” till hur det ser ut för just din installation av webbserver och Joomla.
URLen som man kan testa om komponenten fungerar kommer att se ut som enligt nedan. Detta inlägg kommer bara att visa på vad som behövs för den administrativa delen.
<joomla-site>/administrator/index.php?option=com_test
Första filerna till komponenten test
I mappen där du har Joomla installerad hittar du en mapp som heter ”administrator”, därunder hittar du mappen ”components”. I mappen ”components” ska vi skapa en mapp som heter ”com_test” och några filer som jag beskriver i en träd-struktur nedan.
- com_test
- test.php
- test.xml
- index.html
Mappen börjar med ”com_” för att det är en komponent som jag beskriver, du kan se att alla andra mappar i ”administrator” också börjar med ”com_”.
Innehållet i test.php kan vi för tillfället skriva vad som helst. Jag rekommenderar något i stil med nedan.
test.php
Detta är test.php som finns i mappen ../site/administrator/component/com_test"
Innehållet i index.html är en platshållare som är samma i alla mappar. I alla fall vad jag har kunnat förstå. Det finns säkert något tillfälle då ett annorlunda innehåll skulle kunna vara av värde, men för nu så ser innehållet ut enligt nedan.
index.html
<html><body bgcolor="#FFFFFF"></body></html>
Nu kommer vi till en fil som har lite mer krav på hur den ser ut, nämligen test.xml. Det är en fil som beskriver vad komponenten innehåller, vad den är och en hel del andra saker beroende på dig som utvecklare. Jag ska visa en enkel version som är till för att komma igång. Se gärna Joomlas dokumentation enligt länken tidigare i dokumentet.
test.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2.0" method="upgrade">
<name>test</name>
<!-- Följande elemet är valfria, och har inga formaterings-begränsningar -->
<creationDate>Mars 2015</creationDate>
<author>Rickard Persson</author>
<authorEmail>dummy@exempel.com</authorEmail>
<authorUrl>exempel.com</authorUrl>
<copyright>Copyright Info - test</copyright>
<license>License Info - test</license>
<!-- Versions-strängen registrerars i komponent-tabellen -->
<version>0.0.1</version>
<!-- Beskrivningen är valfri och är default samma som namnet -->
<description>Beskrivning av test, en första genomgång</description>
<administration>
<!-- Administration Menu Section -->
<menu link='index.php?option=com_test'>test</menu>
<!-- Administration Main File Copy Section -->
<!-- Note the folder attribute: This attribute describes the folder
to copy FROM in the package to install therefore files copied
in this section are copied from /admin/ in the package -->
<files folder="admin">
<!-- Admin Main File Copy Section -->
<filename>index.html</filename>
<filename>test.php</filename>
</files>
</administration>
</extension>
Jag har valt att inte översätta kommentarerna för administrations-avsnittet, då det finns risk att jag översätter så att det blir ännu svårare att förstå.
Vad som denna fil säger är att det är en ”komponent” då typen anger detta, dessutom vet vi att komponenten heter ”test” som kommer att genomsyra hela projektet och många av de klasser och filer som ska döpas enligt riktlinjer som har med PHP och Joomla att göra.
Vi kan även se att det finns två filer som är kopplade till administration.
Aktivera den ”nya” komponenten
Om vi nu försöker att se vad filerna innehåller genom Joomla genom länken som jag angav tidigare och repeterar här så kommer det inte fungera. Vi kommer att få ett felmeddelande som säger att sidan saknas.
<joomla-site>/administrator/index.php?option=com_test
Så vad behöver vi göra? Jo, vi måste in i administrationen för Joomla-siten och in i ”Extention manager” där vi väljer meny-alternativet ”Discover”. Där klickar vi på knappen ”Discover” för att Joomla ska läsa av XML-filen som vi lade upp i mappen ”../administrator/components/com_test/”. När Joomla hittar komponenten så får vi alternativet att installera komponenten, och det ska vi göra. Därefter kan vi hitta komponenten under meny-alternativet ”Components”, och väljer vi där komponenten vi precis har installerat så kommer vi att se innehållet i den PHP-fil som vi tidigare har skapat.
Börja skriva koden
Nu när komponenten finns aktiverad i Joomlas system är det bara att fortsätta att skapa och ändra i koderna. Och vi behöver inte hålla på med att installera/uppdatera komponenten bara för att vi gör någon liten ändring, det är bara att uppdatera webbläsaren med en page-reload.
Vad kommer sedan
Något jag kommer försöka lära mig att förstå är hur jag bäst ska hantera debugging när jag utvecklar till Joomla. Det finns några alternativ som jag ska titta närmare på, och ska försöka återkomma om det.
Det är nämligen rätt vanligt att man möts av en helt blank sida och man har ingen aning om var i koden felet har sitt ursprung, så någon typ av debugging-hantering är nödvändig för att klara av att hantera alla de tillfällen då man skriver en kod som är en bit från att vara perfekt. Men det är i ett annat inlägg.
Jag hoppas att detta gör det lättare att komma igång med Joomlas egen beskrivning av utveckling av en enkel MVC-komponent.