A vállalati CMS, amelyre a Symfony-csapatotok talán már készen áll
Miért érdemes a Symfonyval, Pimcore-ral vagy Shopware-rel dolgozó ügynökségeknek fontolóra venniük a TYPO3-at.
Egy leendő ügyfél ritkán érkezik olyan briefinggel, hogy „TYPO3-at szeretnénk." Ehelyett a weboldalt írja le, amelyre szüksége van.
Lehet, hogy több márkát, weboldalt, piacot vagy nyelvet kell támogatnia. Különböző szerkesztőségi csapatok gondosan szabályozott jogosultságokat és jóváhagyási munkafolyamatokat igényelhetnek. A platformnak integrálódnia kell termékadatokkal, CRM-mel, kereskedelemmel vagy más üzleti rendszerekkel. Teljesen egyedi dizájnt kell lehetővé tennie, évekig karbantarthatónak kell maradnia, és el kell kerülnie, hogy a szervezetet egy zárt platformhoz kösse.
Ez az a fajta jelentős, vállalati szintű weboldal, amelyhez a TYPO3 az egyik legerősebb nyílt forráskódú CMS-választás lehet.
Sok ügynökség azonban soha nem veszi be a TYPO3-at az értékelésébe. Nem azért, mert a platform alkalmatlan, hanem mert még nincs TYPO3-tudás a csapatukban.
Ennek eredményeként egy ügynökség inkább azt a platformot ajánlja, amelyet már ismer, ahelyett, amelyik a legjobban illik a projekthez. Megpróbálhat egy kereskedelmi vagy adatkezelő rendszert tovább kiterjeszteni a tartalomkezelésre, drága szerkesztőségi funkciókat építhet maga, vagy olyan CMS-t választhat, amely a növekvő igényekkel korlátozóvá válik.
A hiányzó darab nem feltétlenül egy másik platform. Hanem a megfelelő szakértelemhez való hozzáférés.
Nem kell TYPO3-részleg ahhoz, hogy TYPO3-at ajánljatok
Ha a fejlesztőitek már Symfonyval, Pimcore-ral, Shopware-rel vagy más Symfony-alapú rendszerrel dolgoznak, a TYPO3 bevezetése kisebb lépés, mint amilyennek elsőre tűnik.
A TYPO3-nak saját architektúrája és CMS-specifikus fogalmai vannak, de a modern fejlesztői környezete sok alapot megoszt a tágabb Symfony-ökoszisztémával: Composer, dependency injection, service-konfiguráció, console command-ok, Symfony routing-komponensek, Doctrine DBAL és eseményvezérelt bővítési pontok.
A fejlesztőitek nem nulláról kezdik. Egy tapasztalt TYPO3-partnerrel, aki az architektúrát és az első megvalósítást támogatja, egy meglévő PHP-csapat már közreműködhet, miközben a gyakorlatban tanulja a TYPO3 platformspecifikus fogalmait.
Szerintünk pontosan ezt kellene tennie egy hivatalos TYPO3 Consultant Partnernek az ügynökségekért. A Digital Zombies küldetése nem az, hogy leváltsa egy ügynökség fejlesztőit, dizájnereit vagy ügyfélkapcsolatait. Hanem hogy a TYPO3-at reális opcióvá tegye, amikor az a helyes választás a projekthez.
Biztosítjuk az azonnali munkához szükséges speciális tudást, együttműködünk a meglévő csapattal, és átadjuk a tudást, hogy a fejlesztőik egyre magabiztosabbak legyenek a TYPO3-mal. Így egy ügynökség anélkül vállalhatja a megfelelő vállalati lehetőségeket, hogy az első projekt elfogadása előtt egy egész TYPO3-részleget kellene felvennie.
Mikor való a TYPO3 a szűkített listára?
Nem minden weboldalnak van szüksége vállalati CMS-re. A TYPO3 különösen meggyőzővé válik, amikor a komplexitás nem korlátozódik a frontendre. Komoly megfontolást érdemel, ha egy projekt több elemet tartalmaz az alábbiakból:
- több weboldal, márka, üzletág vagy regionális jelenlét;
- többnyelvű tartalom és lokalizációs munkafolyamatok;
- eltérő szerepekkel, jogosultságokkal és felelősségekkel rendelkező szerkesztők;
- ellenőrzési és jóváhagyási folyamatok a közzététel előtt;
- strukturált tartalom, amelynek konzisztensnek kell maradnia egy nagy platformon;
- egyedi integrációk üzleti rendszerekkel és külső szolgáltatásokkal;
- hosszú várható platform-élettartam;
- bővíthetőségi és kontrollált, karbantartható kiadási igények;
- a professzionális nyílt forráskódú szoftver és a kisebb vendor lock-in előnyben részesítése.
A TYPO3-at tartalomgazdag környezetekhez építették, ahol az irányítás ugyanolyan fontos, mint a publikálás. A multisite-kezelés, a lokalizáció, a granuláris hozzáférési jogok és a workspace-ek nem utólagos toldások, amelyeket egy ügynökségnek minden vállalati projekthez újra kellene építenie.
Ugyanakkor a TYPO3 nagymértékben bővíthető. Lehet a tartalomplatform egy tágabb technikai ökoszisztémán belül, ahelyett, hogy minden körülötte lévő specializált üzleti rendszert le akarna váltani. Ez a megkülönböztetés fontos a Pimcore-ral vagy Shopware-rel már dolgozó ügynökségeknek.
A Pimcore maradhat felelős a termékinformációkért, a digitális assetekért vagy a törzsadatokért. A Shopware maradhat a kereskedelmi platform. A TYPO3 átveheti a felelősséget az összetett szerkesztőségi élményekért, a céges tartalomért, a több oldalért és az azokat körülvevő munkafolyamatokért. A megfelelő architektúra nem kényszerít egy platformot arra, hogy minden problémát megoldjon.
Egy ismeretlen CMS-től egy szomszédos képességig
Egy ügynökség számára, amely már Symfony-alapú platformokkal épít, a TYPO3-at nem szabad teljesen külön technikai világként tekinteni.
Egy Pimcore-csapat érti a Composer-projekteket, a Symfony-service-eket, a controllereket, az eseményeket és a strukturált adatokat. Egy Shopware-csapat érti a Symfony-alapú extension-fejlesztést, a dependency injectiont, a console command-okat és az összetett integrációkat. Egy Symfony-alkalmazáscsapat már sok olyan alapkomponenssel dolgozik, amelyet a TYPO3 használ. Több technikai fogalom a kezdetektől ismerősnek fog tűnni.
Composer-alapú projektkezelés
A professzionális TYPO3-projekteket Composerrel telepítik és tartják karban. A függőségek explicitek, az extensionök tisztán csomagolhatók, a projektkonfiguráció pedig a verziókövetésbe tartozik. A Symfonyt, Pimcore-t vagy Shopware-t megszokott csapatoknak ez normál alkalmazásfejlesztés — nem olyan CMS, amelyet kézi feltöltésekkel és a production oldali változtatásokkal tartanak karban.
Dependency injection és service-ek
A TYPO3 a Symfony DependencyInjection komponensét használja, és a Services.yaml-on keresztül támogatja a service-konfigurációt. A konstruktor-injektálás az ajánlott megközelítés. A fejlesztők továbbra is fókuszált, tesztelhető, explicit függőségű service-eket írhatnak. A környező konvenciók elég közel állnak a Symfonyhoz ahhoz, hogy a gondolati modell gyorsan átvihető legyen.
Console command-ok
A TYPO3 a Symfony Console komponensét használja a parancssori funkciókhoz. Az importokhoz, szinkronizációhoz, ütemezett folyamatokhoz és karbantartási feladatokhoz készült egyedi command-ok olyan API-t használnak, amelyet a Symfony-orientált fejlesztők már ismernek.
Routing
A TYPO3 CMS-specifikus feladatokat ad hozzá, mint az oldalalapú URL-ek és a route enhancementek, de a frontend-routingja Symfony routing-komponensekkel valósul meg. A platform egy tartalomtudatos réteget vezet be anélkül, hogy feladná az ismerős technikai alapokat.
Doctrine DBAL
A TYPO3 adatbázis-kapcsolatokat és egy Doctrine DBAL-alapú QueryBuildert biztosít. A Doctrine-tapasztalattal rendelkező fejlesztők felismerik a stílust, még ha a TYPO3 nem is reprodukál egy tipikus Symfony-és-Doctrine-ORM alkalmazásarchitektúrát.
Események és bővítési pontok
A TYPO3 PSR-14 eseményeket biztosít a core és a harmadik féltől származó viselkedés bővítéséhez. Az API különbözik a Symfony EventDispatcheretől, de az architektúrabeli elv ismerős: definiált eseményekre listenerekkel reagálni, ahelyett hogy a core-kódot módosítanánk.
Ezek a hasonlóságok nem teszik a TYPO3-at azonossá a Symfonyval, Pimcore-ral vagy Shopware-rel. Megközelíthetővé teszik.
Egyedi dizájn anélkül, hogy lemondanánk egy kiforrott CMS-ről
Az egyik makacs tévhit a vállalati tartalomkezelő rendszerekről, hogy az erősebb szerkesztőségi képességek elkerülhetetlenül kevesebb kreatív szabadságot jelentenek. A TYPO3-nál ennek nem kell így lennie.
A TYPO3 nem írja elő, hogyan nézzen ki egy weboldal. A Fluid sablonrendszere megadja a frontend-fejlesztőknek a rugalmasságot, hogy teljesen egyedi dizájnt valósítsanak meg, miközben a TYPO3 kezeli mögötte a tartalmat, a jogosultságokat, a lokalizációt és a szerkesztőségi munkafolyamatokat.
Az újrafelhasználható tartalomelemek a projekt vizuális nyelve köré tervezhetők, ahelyett hogy a dizájnt egy előre definiált témába vagy általános oldalépítőbe kényszerítenénk. A szerkesztők gyakorlati rugalmasságot kapnak, míg a dizájnrendszer megadja a konzisztencia fenntartásához szükséges korlátokat.
Tapasztalatunk szerint ez különösen jól működik dizájn- és UX-vezérelt ügynökségekkel együttműködve. Egy ilyen projektben az ügynökség készítette a teljes dizájnt és a felhasználói élményt, míg a Digital Zombies végezte a TYPO3-megvalósítást. Az ügynökség dizájnját újrafelhasználható Fluid-komponensekké és szerkesztőbarát tartalomelemekké fordítottuk le anélkül, hogy felhígítottuk volna a szándékolt élményt.
A felelősségek megosztása természetesen működött. Az ügynökség megtartotta a stratégia, a dizájn és az ügyfélkapcsolat feletti tulajdont. Mi biztosítottuk a megvalósítás mögötti TYPO3-architektúrát és fejlesztői szakértelmet. Az eredmény nem egy egyedi weboldal és egy vállalati CMS közötti kompromisszum volt. Hanem egy egyedi digitális élmény, egy kiforrott tartalomplatformra támaszkodva.
A Fluid és az Extbase strukturált módot ad az építkezésre
A dizájnszabadság csak akkor hasznos, ha a megvalósítás karbantartható marad.
A Fluid a TYPO3 sablonmotorja. Támogatja a layouts-okat, sablonokat, partial-öket és újrafelhasználható ViewHelpereket, strukturált módot adva a frontend-fejlesztőknek, hogy egy komponensalapú dizájnt átültessenek a TYPO3-ba.
Az egyedi alkalmazásfunkciókhoz az Extbase TYPO3-orientált MVC-fogalmakat biztosít, mint a controllerek, repositoryk, domain-modellek és validáció. Ez nem Symfony, és a fejlesztők ne próbálják a Symfony-mintákat minden TYPO3-problémába erőltetni. De a tapasztalt PHP-fejlesztők felismerik a felelősségek szétválasztását, és sok fogalmat megközelíthetőnek találnak.
A TYPO3 azt sem követeli meg, hogy minden egyedi funkció Extbase-t használjon. A fejlesztők közvetlenül a TYPO3 core API-jaival és service-eivel dolgozhatnak, ha az a jobb architektúrabeli választás.
A lényeg az, hogy az egyedi TYPO3-fejlesztés ugyanazokat a mérnöki értékeket követheti, amelyeket egy erős Symfony-csapat már alkalmaz: a felelősségek szétválasztása, explicit függőségek, code review, tesztelés, verziókövetés és automatizált deploy.
A tudás átadható — nem kell fal mögött tartani
A második ügynökségi tapasztalatunk megmutatja, miért számít ez az ismerősség.
Az ügynökségnek karbantartandó és bővítendő TYPO3-projektjei voltak, de belül már nem volt elég TYPO3-kapacitása. Kezdetben mi biztosítottuk a speciális tudást és a szállítási kapacitást, hogy ezek a projektek haladjanak.
A szerepünk túlmutatott a ticketek megoldásán. Az ügynökség fejlesztői mellett dolgoztunk, elmagyaráztuk a releváns TYPO3-fogalmakat és -konvenciókat, átnéztük a megvalósításokat, és segítettünk megérteni a meglévő kódbázist. Mivel a fejlesztőknek már volt szilárd PHP- és Symfony-közeli tapasztalatuk, össze tudták kötni az ismeretlen TYPO3-fogalmakat a már ismert mérnöki elvekkel.
Idővel közreműködni kezdhettek, ahelyett hogy tartósan egy külső TYPO3-csapattól függtek volna.
Ez fontos szempont az ügynökségi és technológiai vezetők számára. Egy szakértő partner bevonása nem jelentheti egy új fekete doboz létrehozását. A partnernek meg kell védenie az azonnali szállítást, miközben az ügynökség saját csapatát is képesebbé teszi.
Mit kell a fejlesztőiteknek mégis megtanulniuk
Félrevezető lenne azt sugallni, hogy a Symfony-tapasztalat teljesen megszünteti a TYPO3 tanulási görbéjét. A fejlesztők platformspecifikus fogalmakkal fognak találkozni:
- A TCA határozza meg, hogyan strukturálják, jelenítik meg és kezelik a rekordokat a TYPO3-backendben.
- A TypoScript konfigurálja a tartalom renderelését és az oldalviselkedés egyes aspektusait.
- A Fluid váltja fel a Symfony-platformoknál megszokott Twig-alapú sablonozási megközelítést.
- Az Extbase egy TYPO3-specifikus MVC-keretrendszert biztosít az extension-fejlesztéshez.
- A sitepackage-ek és extensionök tartalmazzák a projektspecifikus konfigurációt, megjelenítést és funkcionalitást.
- Az oldalfa, a workspace-ek, a jogosultságok és a lokalizációs modell a szerkesztők és a nagyobb szervezetek igényeit tükrözik.
Ezek a fogalmak nem felesleges akadályok. Részei annak, ahogyan a TYPO3 megoldja azokat a tartalomkezelési problémákat, amelyeket egy testreszabott Symfony-alkalmazásnak egyébként magának kellene megoldania.
A leggyorsabb út nem az, hogy minden ismerős konvenciót szó szerint átültetünk. Hanem az, hogy megértjük, mely elvek vihetők át közvetlenül, mely TYPO3-API-kat érdemes használni, és hol biztosít a CMS már megfelelő absztrakciót. Épp itt jelenti a legnagyobb különbséget a tapasztalt útmutatás.
Egy gyakorlati mód a TYPO3 kiértékelésére
Egy ügynökségnek nem kell egy nagy ügyfélprojektet egy ismeretlen platformra bíznia anélkül, hogy előbb tesztelné az illeszkedést. Egy fókuszált technikai kiértékelés elég kicsi lehet ahhoz, hogy hosszú belső kezdeményezés nélkül elvégezhető legyen:
- Válasszatok egy reális vállalati briefinget vagy egy közelgő projekt körülhatárolt részét.
- Azonosítsátok azokat a követelményeket, amelyeknek valóban CMS kell: tartalomstruktúra, nyelvek, jogosultságok, munkafolyamatok és integrációk.
- Telepítsetek egy aktuális TYPO3-projektet Composerrel.
- Építsetek egy sitepackage-et ahelyett, hogy harmadik féltől származó kódot módosítanátok.
- Valósítsatok meg egy valódi dizájnkomponenst egyedi, szerkesztőbarát tartalomelemként.
- Adjatok hozzá egy kis service-t, integrációt vagy console command-ot.
- Hagyjátok, hogy a fejlesztők és a szerkesztők is értékeljék az eredményt.
Ez sokkal többet mutat meg, mint egy általános termékbemutató. Megmutatja, hogy a TYPO3 illik-e az ügynökség fejlesztési gyakorlatához, mennyi dizájnszabadság marad meg, és mivé válhat a szerkesztőségi élmény, ha tudatosan tervezik meg.
Egy bevont TYPO3-szakértővel a kiértékelés egyúttal szilárd architektúrát is megalapozhat, ahelyett hogy olyan proof of conceptet hozna létre, amelyet később el kell dobni.
Mit kell tennie egy hivatalos TYPO3 Consultant Partnernek
Számunkra a hivatalos TYPO3 Consultant Partner státusz nem pusztán egy minősítés. Azt a szerepet írja le, amelyet be szeretnénk tölteni az ökoszisztémában.
Az ügynökségeknek képesnek kell lenniük TYPO3-at ajánlani, amikor az a megfelelő platform az ügyfeleiknek — még akkor is, ha belül még nincs meg minden szükséges tapasztalatuk.
A mi feladatunk ennek a résnek a betöltése. Támogathatunk egy kiértékelést, kialakíthatjuk az architektúrát, megvalósíthatjuk a projektet, karbantarthatunk egy meglévő platformot, vagy a háttérben dolgozhatunk az ügynökség szállítói csapatának részeként. Ugyanilyen fontos: megosztjuk a tudásunkat, hogy az ügynökség fejlesztői magabiztosan több felelősséget vállalhassanak.
Az azonnali cél egy sikeres projekt. A hosszabb távú cél egy képesebb és magabiztosabb ügynökségi csapat.
Ha az ügynökségetek Symfonyval, Pimcore-ral, Shopware-rel vagy más modern PHP-platformmal dolgozik, a TYPO3 sokkal közelebb lehet a meglévő képességeitekhez, mint gondolnátok. És ha egy vállalati brief TYPO3-ra illőnek tűnik, de a hiányzó szakértelem visszatart, pontosan ezt a beszélgetést szeretnénk lefolytatni.
TYPO3-at fontolgattok egy vállalati projekthez?
Beszéljetek a Digital Zombiesszal a projektről, a technikai követelményekről vagy egy fókuszált TYPO3-kiértékelésről.