Pauli Huhtiniemi - www.paulihuhtiniemi.com

Kategoria: Drupal

0

Drupal 7: ensimmäinen beta-versio julkaistu

Maanantai
18
Lokakuu .10
17:16

2,5 vuoden kehityksen jälkeen Drupal 7:n ensimmäinen beta-versio julkaistiin 7.10.2010. Ennen betaa julkaistiin kaikkiaan seitsemän alpha-versiota. Ensimmäinen Release Candidate tullaan julkaisemaan, kun kaikki betassa olevat kriittiset bugit on korjattu.

Drupal 7:n julkaisu on venynyt suunnitellusta, sillä esimerkiksi Dries Buytaert itse arvioi 2009 tammikuussa, että Drupal 7 julkaistaisiin vielä saman vuoden loppuun mennessä. Tämän vuoden aikana betan julkaisua on viivästyttänyt käsittääkseni varsinkin 6- ja 7-versioiden väliseen päivitystoimintoon liittyvät haasteet.

Ulospäin näkyvin uudistus on päivitetyt oletusteemat niin frontend- kuin admin-puolellakin. Uusi hallintapaneeli on paitsi huomattavasti miellyttävämmän näköinen, niin myös käytettävyydeltään parempi. Hallintapaneeli on myös nykyään oletuksena ns. overlay, eli se avautuu omaan “ikkunaansa” muokattavan sivun päälle. Overlayn kanssa oli alkuun huomattavia suorituskykyongelmia, mutta nyt homma näyttäisi pelaavan sutjakkaasti. En ole tosin vielä ihan vakuuttunut overlayn todellisesta hyödyllisyydestä.

Harmillisesti uutta sisältöä luodessa esikatselutoiminto käyttää edelleen admin-templatea. Jos siis haluaa tarkastella miltä kirjoitus näyttää frontend-muotoiluilla, niin node pitää tallentaa ensin julkaisemattomana. Käyhän se näinkin, mutta Wordpressin tapa käyttää esikatselussa frontend-teemaa on mielestäni käytettävyydeltään parempi.

Moduulien päivittäminen onnistuu nykyisin myös suoraan hallintapaneelin kautta ilman, että käyttäjän tarvitsee käsin kopioida moduulin uutta versiota palvelimelle. 

Yksi tärkeimmistä uudistuksista on CCK-moduulin siirtyminen coreen kuvankäsittely-moduulien kera. Erilaisten kenttien lisääminen sisältötyyppeihin onnistuu siis jatkossa ilman erillisten moduulien asentamista. Myös luokittelutermeille on mahdollista luoda uusia kenttiä.

Uusi tietokanta-layer on nyt PDO-pohjainen ja täysin abstrakti. Tietokantaa käytetään nyt hieman eri tavalla, jonka takia omien moduulien tietokantakyselyt tulee rakentaa uusiksi. Bob Marchman on kirjoittanut kaksi havainnollista blogikirjoitusta aiheesta: Drupal 6 vs Drupal 7 Database Primer Part 1 ja Part 2.

Drupal 7:ään on tullut paljon uusia hookkeja, ihan jo sen vuoksi, että vanhat $op-parametrin vastaan ottaneet hookit on pilkottu erillisiin hookkeihinsa. Esimerkiksi yleisen hook_nodeapi-hookin sijasta on nyt hook_node_insert, hook_node_load ja niin edelleen.

Tervetullutta on myös uudistunut theme-layer, joka perustuu Form API:n tapaan niin sanottuihin “renderöinti-taulukoihin”, ks. Render Arrays in Drupal 7. Jos olet muokannut lomakkeita Drupal 6:ssa, niin olet huomannut, että lomakkeet rakentuvat taulukoista, jotka lopuksi renderöidään HTML:ksi. Drupal 7:ssa myös sivut rakentuvat vastaavista taulukoista, jotka vasta aivan lopuksi tulostetaan HTML:nä templaatissa render-funktion läpi ajettuna. Tämän pitäisi tuoda ratkaisu muun muassa ongelmaan, jossa haluttaisiin muokata HTML:ää, jonka moduuli on ehtinyt jo renderöimään. Jatkossa moduulien ei tulisi palauttaa HTML:ää, vaan taulukoita, jotka renderöidään myöhemmin. Kaikenkaikkiaan sivun rakenteen ja HTML:n muokkaamisen tulisi olla nyt helpommin hallittavissa, koska renderöinti tapahtuu aina vasta viime hetkellä.

Skaalautuvuudesta on puhuttu myös paljon, sillä Drupal 7:n tulisi nyt oikeasti skaalautua maailmanluokan sivustoihin. Skaalautuvuuteen liittyvistä erityishaasteista minulla ei juurikaan ole omakohtaisia kokemuksia, mutta toivottavasti tähän mielenkiintoiseen aihepiiriin pääsen joskus tulevaisuudessa perehtymään.

Muista uudistuksista voisi mainita tuen semanttiselle webille RDFa:n muodossa sekä mukana tulevat tuoreimmat versiot jQuerysta (1.4) ja jQuery UI:sta (1.8).

Drupal 7 Module update

Itse olen tyytyväinen Drupal 7:n esittelemiin uudistuksiin. Monia isoja ja pieniä puutteita on korjattu ja varsinkin uusi theme-layer toivottavasti selkeyttää sivukohtaisten muokkausten tekemistä. 

Tarkoituksenani on päivittää tämä sivusto mahdollisimman nopeasti seiskaversioon. Teeman päivittäminen on luonnollisesti suurin homma, jonka olenkin jo aloittanut. Myöskään kaikista tämän sivuston käyttämistä lisämoduuleista ei ole vielä yhteensopivia versioita: 13 moduulista yhdeksällä on vähintään aikainen kehitysversio tarjolla Drupal 7:lle. Kirjoitan todennäköisesti sivuston päivityksestä tarkemmin tulevissa kirjoituksissa.

3

Drupal + Views: How to add a wrapper around two fields using replacement patterns

Torstai
2
Syyskuu .10
13:51

Views must be one of the most used contributed module for Drupal. It’s kind of a SQL query builder that allows you to make various kinds of listings of your data. For example, a list of the most recent blog posts is really easy to build with Views.

You can select whether the rows are printed as a table, a list or just a bunch of divs/spans after each other. When it comes to markup of individual fields, things can get a little bit trickier.

To make CSS styling more easier it helps to have a wrapper element around the fields. Usually this is when you want to float a group of elements correctly.

Let's say that for each row we have three fields called field_1, field_2 and field_3. By default, the view style is unformatted and each field has a div-wrapper around it:

<div class="views-row views-row-1 views-row-odd views-row-first views-row-last">
    <div class="views-field-field-1-value">
          <span class="field-content">Field 1 content</span>
    </div>
    <div class="views-field-field-2-value">
          <span class="field-content">Field 2 content</span>
    </div>
    <div class="views-field-field-3-value">
          <span class="field-content">Field 3 content</span>
    </div>
</div>

We would like to have a wrapper element around the field_2 and field_3. How can we achieve this? We could play with the template files, but many times I find it more straightforward to use replacement patterns, also known as tokens.

Select field_3 and click Rewrite the output of this field. Now you can see the replacement patterns that are available for use:

Drupal-Views-rewrite-output

Remember that there are tokens only for fields that are displayed before this field! If you go to look tokens available for field_2, there isn’t a token for field_3. This is really important and may be a bit confusing in the beginning. Use the field rearrange feature if needed.

So, now that we have selected the field_3, we can use all the tokens and rewrite the output as we like. I’m just going to add a new div with class “wrapper” around the fields:

<div class="wrapper">
    <div class="views-field-field-2-value">
        <span class="field-content">[field_2_value]</span>
    </div>
    <div class="views-field-field-3-value">
        <span class="field-content">[field_3_value]</span>
    </div>
</div>

I want to avoid outputting field_2 twice. So click field_2 and check Exclude from display. After this we can see the final output with a nice wrapper around field_2 and field_3:

<div class="views-field-nid">
    <span class="views-field-field-1-value">Field 1 content</span>
</div>
<div class="views-field-type">
    <span class="field-content">
        <div class="wrapper">
            <div class="views-field-field-2-value">
                <span class="field-content">Field 2 content</span>
            </div>
            <div class="views-field-field-3-value">
                <span class="field-content">Field 3 content</span>
            </div>
        </div>
    </span>
</div>

With this method you have almost full control over your markup and you don’t need to modify any template files. Just exclude all fields from display (not the last one, of course) and rewrite the output of last field using tokens.

This example has been tested with Drupal 6.19 and Views 6.x-2.11.

0

Tämän sivuston rakentaminen Drupalilla

Torstai
5
Elokuu .10
21:05

Nyt kun blogini on jokusen kuukauden ollut linjoilla, niin voisin kertoa hieman sivuston syntymisestä tekniseltä kantilta. 

Tämä oma sivustoni on selkeästi blogi, joten alustaksi Wordpress olisi ollut standardi-valinta, mutta olen viime aikoina tehnyt paljon töitä Drupalin parissa ja halusin osaltaan syventää tietämystäni rakentamalla omatkin sivut Drupalin päälle.

Jos blogin pystyttäminen on päätarkoitus, niin Drupal voi olla järkytys verrattuna vaikka edellä mainittuun Wordpressiin. Hallintapaneelin käyttöliittymä on ruma ja vanhanaikaisen näköinen, eikä esimerkiksi WYSIWYG-editoreista ole pakasta vedettynä tietoakaan. 

Onkin syytä tiedostaa, että oli sivusto millainen tahansa, niin pelkillä core-moduuleilla ei selviä oikeastaan koskaan. Käsittääkseni Drupalin kehitys on entistä enemmän menossa suuntaan, jossa vakiona mukana tulevien moduulien määrä on mahdollisimman pieni, mutta järjestelmästä olisi saatavilla eri tarkoituksiin räätälöityjä distribuutioita tarpeellisin lisämoduulein varustettuina.

Alusta lähtien oli selvää, että valmiiden teemojen sijasta ulkoasun täytyisi olla omaa tekoa. Omat Photoshop-taitoni eivät häikäise, mutta onneksi samassa taloudessa asuu graafisen alan ammattilainen, joten toiveideni mukainen leiska saatiin aikaiseksi. Halusin hyödyntää HTML5:sta ja varsinkin CSS3:sta sivuston taittoa tehdessä, mikä olikin oikein rentouttavaa, kun kerrankin ei tarvinnut välittää vanhemmista IE-selaimista. Suosittelen.

Kirjoitin HTML:n ja CSS:n aika pitkälti valmiiksi ennen kuin päätin ottaa Drupalin alustaksi. Tämä on aivan väärä tapa toimia, sillä Drupal tarjoaa HTML-merkkauksen, jolloin teeman tekeminen on CSS-muotoilujen tekemistä ja tarvittaessa HTML-merkkauksen muuttamista joko templaatti-tiedostojen tai teemoittamiseen liittyvien preprocess-funktioiden avulla.

Perusajatus Drupalin teemojen tekemisessä avautuu varsin nopeasti, mutta jos tarvitsee muuttaa vaikka yksittäisen lomakekentän HTML-merkkausta, niin HTML:n alkulähteen selvittäminen on varsinkin alussa hieman vaikeaa. Drupal-saitteja enemmän tehdessä tämä kuitenkin helpottuu.

Alkuun Drupalin välimuisti aiheutti turhaa ihmettelyä, kun tehdyt muutokset eivät tuntuneet toimivan. Vaikka Drupalin cachen laittaa pois päältä hallintapaneelista, niin se ei kuitenkaan ihan täysin poista sitä käytöstä. Cache on onneksi mahdollista kytkeä kokonaan pois käytöstä parilla puukotuksella development-vaihetta ajatellen, mutta tällä saattaa olla yllättäviä vaikutuksia esimerkiksi lomakkeiden kanssa. Jos jokin toimii hassusti, tyhjennä aina ensin cache.

Drupalissa on käsittääkseni alunperin ollut ajatuksena, että erillistä hallintapaneelin teemaa ei ole, vaan frontend- ja admin-puoli käyttävät samaa teemaa. Yleensä kuitenkin käytetään eri teemoja, mutta Drupalissa tämä erottelu on vielä hieman puolitiessä, sillä esimerkiksi sisältönoodin poistamisen varmistaminen tapahtuu frontend-teemalla, samoin noodin versiohistorian tarkastelu. Omassa käytössä tämä ei niinkään haittaa, mutta asiakasprojekteissa tällaiset outoudet aiheuttavat turhaa lisätyötä.

Drupalissa näkyy, että kehityksen aikana tärkeänä käyttökohteena on nähty yhteisölliset sivustot. Tämä on syytä muistaa vaikkapa moduulien konfigurointia ihmetellessä. Esimerkiksi itselläni oli alkuun hieman vaikea hahmottaa Twitter-moduulin konffausta, koska moduuli mahdollistaa oman Twitter-blockin esittämisen kullekin rekisteröityneelle käyttäjälle, jolloin asetuksia voi muuttaa useasta paikasta.

Drupalin vahvuus on laaja valikoima erilaisia valmiita moduuleita, joilla pystyy rakentamaan varsin suuria järjestelmiä hyvin vähäisellä koodauksen tarpeella. Välillä suorastaan hämmästyttää, kuinka monipuolisiin tarpeisiin jo pelkästään CKK-, Views- ja imagecache-moduulit riittävät. Näillä moduuleilla voidaan rakentaa monipuolisesti uusia sisältötyyppejä (Content Type), luoda niistä erilaisia näkymiä ja listauksia sekä käsitellä liitettyjä kuvia mm. muuttamalla kokoa ja rajaamalla. Kaikki tämä ilman, että tarvitsee kirjoittaa riviäkään koodia.

Toisaalta sitten, kun Drupalin kanssa tarvitsee alkaa koodaamaan, niin varsinkin alussa on helposti hieman hukassa, miten asiat tulisi tehtyä oikein, "the Drupal Way". 

Vaikka Drupalin kanssa on ollut tuskaisiakin hetkiä, niin mielestäni järjestelmä on kuitenkin suosionsa ansainnut. Odotan mielenkiinnolla tulevaa Drupal 7:aa, jossa CKK-moduuli on integroitu kiinteäksi osaksi Drupalia ja hallintapaneelin käyttöliittymä on uudistettu.