Hopp til innholdet

cjohansen.no

Praktisk eZ Publish

Det er mange måter å jobbe med eZ Publish på. Følgende er noen triks som letter min hverdag.

Utgangspunkt

Først, noen enkle antagelser som utgangspunkt:

Tipsene vil også være nyttig om du kjører eZ Publish lokalt under utvikling, men sannsynligvis ikke på Windows (ettersom symlinker er en del av moroa).

Settings og templates i Eclipse

Jeg har tidligere uttrykt min forkjærlighet for Eclipse som IDE. Det er fullt mulig å bruke Eclipse til eZ-utvikling også, men enkelte justeringer bør gjøres for optimal ytelse.

Filer

eZ Publish består av veldig mange filer og dersom du henter alle inn i Eclipse-prosjektet ditt vil du oppleve problemer med filsøk, og andre filoperasjoner, samtidig som du kommer til å få brekningsfornemmelser når Eclipse tikker nede i høyre hjørne: "building workspace"...

På grunn av dette ønsker vi kun å ta inn de filene som er nødvendig for å jobbe med siten. I de fleste tilfeller vil dette begrense seg til filene under settings/, design/ og hvis du har egenutviklede utvidelser (eller utvikler design/settings som én eller flere utvidelser), extension/. Disse mappene kan symlinkes til en tom mappe slik at du får en prosjektrot som kun inneholder filer du er interessert i:

cd /min/webside # Live-siten lever under /min/webside/www
mkdir work
cd work
ln -s ../www/settings
ln -s ../www/design
ln -s ../www/extension

Neste skritt er å lese disse lokalt på din maskin. Under Linux kan du bruke sshfs til å mounte et område på en ekstern maskin på det lokale filsystemet. Dermed er det bare å oppgi mountpunktet som prosjektrot når du oppretter prosjektet i Eclipse (dette vil typisk være noe alá /media/servernavn/min/webside/work

Under Windows finnes det sikkert mange muligheter. Én jeg har erfaring med er Webdrive som lar deg mounte et SSH-område som en lokal disk. Deretter er det bare å oppgi tilsvarende sti som over som prosjektrot når du oppretter Eclipse-prosjektet. Desverre koster Webdrive penger, om ikke veldig mye.

Når du har gjort dette skal du sitte med et Eclipse-prosjekt med to (eller tre, alt ettersom) mapper: design, settings (og extension). Ingen av de andre mappene med eZs kildekode er en del av prosjektet.

Editorer

Når du skal velge editorer for tpl-filene er du sannsynligvis ute etter en editor som ihvertfall har syntax highlighting, og gjerne også kode-utførelse (for de som liker det).

Min erfaring er at du har to valg: Smile eZ Publish Eclipse Plugin er en plugin spesifikt utviklet for Eclipse. Den har syntax highlighting, template-validering, og en kjekk browser som lar deg se klassene dine og deres respektive felter mm. Jeg har ikke lang erfaring med denne, men syntax highlighteren var ihvertfall ikke fullkommen (en fetch over flere linjer får for eksempel litt rar fargelegging).

Hvis du klarer deg fint med bare syntax highlighting er PHPEclipse en ålreit løsning. Dens tpl-editor (som sannsynligvis er utviklet for Smarty) funker bra på eZs templates selvom den ikke er spesifikt beregnet for disse.

Versjonskontrollere deler av et prosjekt

Å bruke Subversion til å versjonskontrollere deler av et prosjekt er lekende lett:

  1. Opprett prosjektet i Subversion
  2. Sjekk det ut i rota av eZ-installasjonen
  3. Legg til de mappene du ønsker versjonskontroll på
  4. Commit

Dette kan gjøres på følgende måte:

cd /min/webside/www
mkdir tmp
cd tmp
svn import . http://svn.mittprosjekt.com/repos/prosjekt/trunk -m "Oppretter prosjekt"
cd ..
rm -r tmp
svn co http://svn.mittprosjekt.com/repos/prosjekt/trunk
svn add -N settings # Ønsker kun mappen, ikke alle standardsettingsfilene
svn add settings/override
svn add -N settings/siteaccess
svn add settings/siteaccess/min_site
svn add settings/siteaccess/min_site_admin
svn add -N design
svn add design/mitt_design
svn add -N extension
svn add extension/min_extension
svn commit -m "Lagt til filer"

Deretter kan du jobbe med prosjektet og kjøre svn add på nye filer og svn commit -m "kommentar" når du har gjort litt jobb. Dersom du setter opp en utviklingssite på samme måte kan du deploye malendringer fra utvikling til live-siten på følgende måte:

cd /min/webside/dev
# Gjør litt arbeid
svn commit -m "Fikset issue #1, #2 og #3"
cd ../www
svn up
php bin/php/ezcache.php --clear-tag=template,content

Her er det mange gode potensielle småscript som kan skrives ;)

Legg merke til at dette oppsettet ikke uten videre vil la deg bruke for eksempel Subclipse fra Eclipse, siden work-mappen ikke inneholder .svn-mappen. Dette kan jobbes rundt ved å symlinke også denne, men dersom du ikke har alle mappene i Eclipse som ligger i Subversion vil det ikke fungere helt smertefritt. Personlig syns jeg det er like greit å " svn-e" fra kommandolinja.

Utviklingskopi

For å kunne drive fornuftig videreutvikling av siten din trenger du en utviklingskopi som du kan herje med maler og settings uten at siten din går ned. Det er ihvertfall fire måter å sette opp en slik utviklingskopi:

  1. Lage egen siteaccess med samme database
  2. Lage egen siteaccess med egen database (kopi av live-basen)
  3. Kopiere hele installasjonen, men dele database
  4. Kopiere hele installasjonen, og også databasen

Jeg styrer unna de to første fordi jeg liker å ha litt mer albuerom mellom live-siten og utviklingssiten. Det siste alternativet er bra når du skal gjøre strukturelle endringer i innholdet, mens en kopi som kjører mot samme database er perfekt når du kun jobber med maler og settings.

Kopi av site, men samme database

Med dette oppsettet vil du over tid få ett problem med utviklingssiten: alle filene som lastes opp på live-siten vil ikke henge med. Dette problemet kan enten ignoreres (noen ganger er det ikke så viktig at alt innholdet er ferskt og riktig på utviklingssiten), og andre ganger bør det løses. Det kan løses på én av to måter:

  1. kontrollere var/storage og var/min_site/storage med Subversion og manuellt sjekke inn/ut endringer
  2. fjerne storage-mappene og symlinke de mot live-siten

Det siste forslaget lar deg ha fullstendig synkronisert innhold mellom de to sitene. Det kan gjøres på følgende måte:

cd /min/webside/dev
cd var
rm -fr storage
ln -s ../../www/var/storage
cd min_site
rm -fr storage
ln ../../../www/var/min_site/storage

Hva er dine favorittknep for å jobbe smidig og enkelt med eZ Publish?

Muligens relatert

2006 - 2012 Christian Johansen Creative Commons Lisens