Front End Drupal är en bok för den som vill lära sig snygga till utseende och gränssnitt i Drupal. Här följer en recension som inte är rakt igenom snäll.
Min motivation för att läsa boken bestod i att jag vill lära mig förstå hur man påverkar temalagret i Drupal -- det som styr hur allt visas i slutändan. Tyvärr var Front End Drupal rätt mycket av en besvikelse. Det finns visserligen en hel del matnyttigt att läsa om Drupals temalager i boken, men det är tämligen utspritt över de 380 sidorna som boken spänner över. Över lag gav boken mig flera gånger intrycket att vara lika sammanhållen som en påse müsli, vilket inte ska tolkas positivt.
Första problemet med boken är målgruppen. I vissa delar av boken får man hjälp -- om och om igen -- med att klicka sig i genom Drupals administrationsmeny. I andra delar förväntas man förstå PHP som en programmerare. Blandningen mellan nybörjarguidning och krav på förkunskaper blir frustrerande, och jag hade föredragit om allt låg på en nivå ovanför det jag klarar av framför att åka berg- och dalbana. Som det var nu hade jag ingen chans att veta om det jag hade svårt att förstå berodde på att jag bläddrat två uppslag på en gång, eller om det helt enkelt var massa detaljer som inte förklarades.
Andra problemet med boken är att den är mycket brokig i innehållet. Jag hade förväntat mig att ett antal breda principer målas upp, följt av ett antal exempel med tilltagande svårighetsgrad. I stället blandas stora och små exempel under halvt kryptiska rubriker, utan att man som läsare blir beredd på vad som kommer att hända.
Som exempel utger sig första kapitlet för att lära läsaren hur man "tänker Drupal", men när man kommit till slutet av det har det i huvudsak handlat om generella riktlinjer kring användbarhet på webbplatser. Ett annat exempel är hur man anpassar förstasidan i Drupal -- där ett helt avsnitt ägnas åt att förklara hur inställningarna för "front page" samverkar med inställningen "promote to front page". (Däremot nämns inte mallfilen page-front.tpl.php.)
Navigeringen i boken försvåras ytterligare av att de olika nivåerna på rubriker ser nästan lika dana ut, så att man inte är medveten om när nya avsnitt börjar (eller det kommer ytterligare synpunkter på något som sagts tidigare). Och så är bilder och kodexempel emellanåt dåligt infogade, så att de antingen dyker upp utan förklaring eller bryter av brödtexten på olyckligt vis. (Märks det att jag är irriterad på boken, eller?)
Rätt mycket krut har däremot lagts på att gå igenom JavaScript och jQuery, och hur det kan användas i Drupal (närmare bestämt knappt 100 sidor). De kapitlen, framförallt 10 och 11, är förmodligen de mest genomarbetade i hela boken. Men jag köpte inte boken för att lära mig JavaScript.
Några användbara saker jag lärt mig genom boken:
* En stabil lista med teman att utgå från om man vill bygga vidare (s. 94).
* Vilka steg man går igenom för att göra ett subtema till Zen (s. 96).
* Att det är effektivt att se page.tpl.php som temats "index.html".
* Hur man ställer in egna sidor för 404- och 403-fel på sin sajt (s. 280).
Några frågor som för mig är obesvarade efter att ha läst boken:
* Hur hittar man relevanta tpl.php-filer, och hur är deras relation till page.tpl.php? (Och i vilka lägen kan man skapa nya?)
* Vilka variabler ska man inte missa att skriva ut i page.tpl.php?
* Vad är vitsen med att använda preprocess-funktioner, istället för att bara lägga in funktioner i template.php?
* Vad är vitsen med att använda $variables['extratext'] jämfört med att bara skapa variabeln $extratext?

Comments
Jag har inte läst den här
Jag har inte läst den här boken men jag har varit av intrycket att den bestått av en samling tips och råd från en erfaren designer och utvecklare. Sådana här böcker brukar vara guld värda eftersom de innehåller information man normalt inte finner i manualer.
Jag tror du skulle ha mer nytta av bok som Drupal 6 Themes som går igenom theming från grunden. Konstantin riktar sig mot de som redan kan theming, en hel del HTML och CSS och JavaScript men vill nå en högre nivå. Många av er har träffat honom och vet att han är otroligt kunnig designer med en stor kompetensbredd och dessutom bra på att förklara. Att få kika in i skallen på någon som Konstantin är häftigt. All den kunskap han har inhämtat och associerat blir ju din på det här sättet!
Jakob Persson - NodeOne
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
Drupal 6 Themes, då
Jag (och fler) träffade Konstantin på Drupalcamp, och det blev uppenbart att han kan otroligt mycket om Drupal. Kanske ledde det till att jag hade orimliga förväntningar på boken -- eller så förväntade jag mig helt enkelt fel saker.
Nästa bok på inköpslistan blir Drupal 6 Themes.
//Johan Falk
Försök till svar på Itangalo frågor
Här är handbokssidan som förklarar detta Core templates and suggestions. Längst upp på sidan finns en länk till en cheat sheet PDF som är smidig att skriva ut.
Mitt första steg är normalt att gå till mappen för respektive modul och titta vilka tpl-filer som finns där.
Alla "Page metadata" variabler plus $closure ska nog alltid vara med.
Du hittar alla här page.tpl.php
preprocess-funktioner läggs i template.php men du menar kanske tpl-filer?
I tpl-filer är det inte tänkt att någon logik eller komplicerad PHP-kod ska existera. De ska vara användbara för folk som kan HTML och CSS men inte är programmerare.
Logik och PHP-kod stoppar man istället in i preprocess-funktioner som en programmerare har ansvar för.
I preprocess-funktioner kan man sätta $vars['extratext'] (zen temat använder $vars andra skriver ut det $variables) och $extratext kommer då automatiskt att finnas tillgänglig i motsvarande tpl-fil.
Preprocess, igen
Tack för att du anstränger dig för att ge svar på mina frågor.
Jag är fortfarande inte klok på preprocess-funktionen.
När jag tidigare pillat med teman har jag i template.php lagt in korta kommandon, till exempel för att byta ordning på elementen i
$links.Detta har jag gjort utan att använda någon preprocess-funktion, och det har fungerat utmärkt. Borde jag ha gjort detta i en preprocess-funktion, och i så fall varför?
Och jag är inte heller helt klok på $variables. Om jag i template.php anger
$extratext = t('En textsträng');-- blir inte den tillgänglig i tpl-filer?//Johan Falk
Preprocess
Hei!
Vad jag förstår så är det enkla svaret nej, den blir inte tillgänglig i tpl-filen.
Genom att skapa en preprocessfunktion som heter samma som som en .tpl-fil (node/page/block/views etc) kan man på så vis "skicka" variabler till "rätt" tpl-fil genom den globala variabeln $vars. Enkelt uttryckt...
t ex om du skapar funktionen i template.php:
function dittthemenamn_preprocess_node(&$vars, $hook) {$vars['extratext'] = t('En textsträng');
}
...så blir den variabeln (
$extratext) tillgänglig enbart i node.tpl.php samt i alla dina node-contentyper (node-mintyp.tpl.php etc) och i deta fallet enbart tillgängliga i DITT tema.Samma sak gäller för views-tpl-filer:
function dittthemenamn_preprocess_views_view__myview(&$vars) {$vars['nyextratext'] = t('En ny textsträng');
}
Jag hittade följande i zentemats template.php-fil:
Override or insert variables into all templates:
function dittthemenamn_preprocess(&$vars, $hook) {
$vars['sample_variable'] = t('Lorem ipsum.');
}
Override or insert variables into the page templates:
function dittthemenamn_preprocess_page(&$vars, $hook) {
$vars['sample_variable'] = t('Lorem ipsum.');
}
Override or insert variables into the node templates:
function dittthemenamn_preprocess_node(&$vars, $hook) {
$vars['sample_variable'] = t('Lorem ipsum.');
}
Override or insert variables into the comment templates:
function dittthemenamn_preprocess_comment(&$vars, $hook) {
$vars['sample_variable'] = t('Lorem ipsum.');
}
Jag är också rätt nybörjare på det här med theming (i jämförelse med alla er andra gurus) men tror att jag har börjat förstå hur detta fungerar.
Lycka till!
/ Shejkin´ Fredric
Webb: SonoShake.com
Drupal: http://drupal.org/user/398315
Drupal: http://drupal.org/user/398315
Bara för att skapa variabler?
Jag tolkar det som att preprocess endast används för att skapa variabler som ska bli tillgängliga i tpl-filer, men om man ska ändra i exempelvis globala variabler kan man strunta i preprocess.
Eller har det med prestandagrejer att göra -- att saker wrappade i preprocess endast anropas om de behövs?
//Johan Falk
Precis!
Enligt http://drupal.org/node/223430 är det främsta skälet till preprocess att samla ihop data och spara dessa som variblar för åtkomst i resp .tpl-fil.
Men det är klart: om flera människor starkt avråder från all form av logik (php) i tpl-filer så måste man ju även lägga in den typen av logiken någonstans...
Och då faller det väl naturligt att lägga logiken även i en preprocess-funktion. Eller?
Jag vill samtidigt passa på att ge Johan Falk en eloge för hans grundliga recension av boken Front End Drupal.
På förvånansvärt många punkter håller jag med honom i hans kritik om boken.
Den har ett antal guldkorn, ingen tvekan om det, men i jämförelse men boken "Using Drupal" är den väldigt rörig tycker jag.
Jag är dock glad att jag har köpt den. Jag använder den som "en av mina uppslagsböcker" när jag behöver ngt matnyttigt som jag vet finns att hämta där.
/ Shejk´en
Webb: SonoShake.com
Drupal: http://drupal.org/user/398315
Drupal: http://drupal.org/user/398315
På sidan 182 i Pro Drupal
På sidan 182 i Pro Drupal Development beskrivs preprocess-funktioner i detalj.
Jakob Persson - NodeOne
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
Vilken tycker gurusarna är
Vilken tycker gurusarna är den bästa boken för att lära sig att "tema" drupal?
Henrik Jönsson - http://www.orestad-linux.se
Se mitt föregående
Se mitt föregående inlägg.
Jakob Persson - NodeOne
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog