HUOM! Voit itse lisätä ja muuttaa sisältöä muokkaa-painikkeiden avulla

 Olet itse vastuussa tämän teoksen käytöstä aiheutuvista vahingoista Lue lisää.

Drupal ohjelmointi

Kohteesta Wikikko - kansan taitopankki
Loikkaa: valikkoon, hakuun

Yleistä[muokkaa]

Aika ryhtyä kehittäjäksi (developer) ja ottaa askel syvemmälle kotisivujen julkaisujärjestelmiin? Drupal on ohjelmoitu käyttämällä PHP kieltä.

Drupalin pääsivu Wikikossa on Drupal.
Wikikosta löytyy myös aiheeseen liittyviä sivuja kuten PHP ja PHP ja MySQL.
Drupal.org sivuston ohje, jota tällä sivulla on pääasiallisesti käytetty.
Drupalin kehitykseen osallistuminen

Ohjeita[muokkaa]

Dokumentaatio
IRC. LimeChat ohjelma Mavericks käyttöjärjestelmälle.
Keskustelufoorumi

Ohjelmointiympäristön asettaminen[muokkaa]

Ohjeiden lähde

Selain[muokkaa]

  • Firefox on suositeltava selain.
  • Safarin suhteen täytyy olla varovainen, koska saattaa olla jossain tapauksissa että etsit virhettä muualta, vaikka kyseessä on Safarin toimimattomuus. Safarilla on myös ikävä tapa ajoittain kaatua. Safari sisältää kehitystyökalun valmiina, mutta lisäosana voidaan liittää Firebug Lite. Drupal versio Firbug Lite:sta.

Editorit[muokkaa]

  • Hiiren jättäminen vähemmälle lisää nopeutta, suositeltavia ovat esimerkiksi: Emacs ja Vi ja VIM
  • PHPeclipse ehkä ilmaisista suosituin. PhpStorm on kaupallinen IDE eli graafisella käyttöliittymällä.

OS X, Xcode 5[muokkaa]

  • Xcodessa voit luoda projektin joka sisältää esimerkiksi koko drupalin asennuskansion. Pääset tällöin suoraan avaamaan tiedostot editorii hakemistopuusta ja tallentamaan ne.
    • File > New > Project... > OS X Other > Empty > Next
    • vasemmasta alakulmasta + > Add Files to "nimi"... ja lisää drupalin asennuskansio tai se kansio minkä tiedostot haluat suoraan Xcodessa käyttöön.
  • Xcode > Preferences... > Text Editing > Indentation > säädä välit 2
  • Tiedostot saa aukeamaan Xcode:ssa, asettamalla .module, .info, .inc, .install Finderin tiedoston tiedot toiminnolla avautumaan Xcodessa.
  • Koska kielenä on PHP, Xcodessa tekstin saa värjäytymään Editor > Syntax Coloring > PHP. (highlight syntax)
http://industriousone.com/blog/xcode-drupal HUOM! Tämä on Xcode 3 -ohje.
https://drupal.org/project/coder
OS X

Debugger[muokkaa]

Hyvällä debuggerilla pystyt seuraamaan joustavasti php -ohjelman suoritusta.

Pääteohjelmat[muokkaa]

Esimerkiksi käyttöjärjestelmän oma tai Filezilla, Cyberduck, PuTTY

Vertailuohjelmat[muokkaa]

diff ja merge

http://kdiff3.sourceforge.net/

Tietokantatyökalut[muokkaa]

Esimerkiksi phpMyAdmin. Katso myös Firefox lisäosat liittyen tietokantaan.

Drupal ja tietokanta testaukseen[muokkaa]

Uusia moduuleita, ovat ne sitten Drupalin sivuilta ladattuja tai itse tekemiä ei tule tai ei ainakaan tulisi testailla tuotannossa eli muiden käyttäjien käyttämässä Drupalissa. Tarvitset siis joko "kotitietokoneelle" tai palvelimelle toisen Drupal asennuksen ja sille oman tietokannan tai saman tietokannan eri taulut. Yksi vaihtoehto on lähteä puhtaalta pohjalta asentamalla Drupal tai kopioimalla toinen, esimerkiksi julkaistu sivusto pohjaksi. Katso uuden Drupalin asennusohje sivulta Drupal. Toinen vaihtoehto. Tässä kolmas vaihtoehto. Tässä neljäs vaihtoehto eli Drupalin siirto. Valmiita paketteja ovat esimerkiksi DAMP, WAMP tai MAMP. Kun drupal asennetaan "kotikoneelle" ei tarvitse huolehtia internetyhteydestä, mahdollisista tietoturva-aukoista joita ohjelmoitaessa voi syntyä tai jatkuvasta ftp-latauksesta palvelimelle. Lisätietoa ja asennusohjeita esim. kohdassa Ohjeita olevasta dokumentaatio-linkistä.

Tietokannan varmuuskopiointi[muokkaa]

phpMyAdmin[muokkaa]

https://drupal.org/node/120630

Synkronointi paikallisen ja etäkoneen välillä[muokkaa]

https://drupal.org/node/120617

Virheilmoitukset[muokkaa]

Virheiden löytämistä helpottaa kun asettaa virheilmoitukset ilmestymään näytölle. Muista poistaa kaikki seuraavat asetuket kun sivusto asetataan julkisesti esille.

  • settings.php tiedostoon lisätään seuraavat rivit:
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
  • Kytke päälle Ylläpito > Asetukset > Kehitys > Loggaus ja virheet > Kaikki viestit
  • TAI kytke PHP:n php.ini tiedostossa E_ALL | E_STRICT

Välimuistin kytkeminen pois päältä[muokkaa]

Kehitysvaiheessa välimuistin pois päältä kytkeminen saattaa olla järkevää, jotta Drupal reagoi muutoksiin välittömästi. Mutta tuotantovaiheessa välimuisti pidetään yleensä päällä.

  • Lisää settings.php tiedostoon seuraava:
if (!class_exists('DrupalFakeCache')) {
  $conf['cache_backends'][] = 'includes/cache-install.inc';
}
// Default to throwing away cache data
$conf['cache_default_class'] = 'DrupalFakeCache';
// Rely on the DB cache for form caching - otherwise forms fail.
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

Drupalin säätäminen nopeammaksi[muokkaa]

https://drupal.org/node/1722250

Moduuleita kehittäjille[muokkaa]

https://drupal.org/node/206773
drupal notebook

Sähköposti[muokkaa]

"Kotikoneella" sähköpostien lähettäminen saattaa vaatia hiukan säätämistä.

https://drupal.org/node/201981 Kokeilemisen arvoinen voi olla esim. kohta Mail to Database eli settings.php tiedostoon rivi $conf['mail_system'] = array('default-system' => 'HelperDebugMailLog'); jonka jälkeen sähköpostit löytyvät Raportit > loki

Drush[muokkaa]

https://github.com/drush-ops/drush

git ja patches[muokkaa]

Moduulien pohjana omaan tarkoitukseen kannattaa tietysti käyttää olemassaolevia moduuleita. Kun kirjoitat uuden toiminnon olemassa olevaan toimintoon tai korjaat virheen sen julkaisu yhteisölle tapahtuu patch -toiminnon avulla. The task is to use Git, drupal.org's version control system, to clone the repository, make a branch, and after adding the 'More link' functionality, to roll a patch. If you come up with something beyond the 'More' link, add that, too. Then post your patch in the 'Current content' issue queue. Next, review one of the other patches in the queue on a different Git branch. If it works right, mark it Reviewed & Tested by the Community (RTBC). (For major patches, this status is hard to obtain, so be careful with it outside this sandbox.) If everyone that contributes a patch also reviews one, then your patch will be reviewed as well.[1]

Patches
Ohje
Git ohje

Git asennus[muokkaa]

  1. Ota käyttöön Git Drupal.org sivuston käyttäjätilissäsi.
  2. Asenna Git tietokoneeseesi, https://www.drupal.org/documentation/git/install
    1. Git -ohjelma asennetaan pääte-ohjelman kautta käytettäväksi tai GitHub sovellus.
  3. Luo .gitconfig ja .gitignore tiedostot. Esim. OSX:ssä käyttäjähakemistoosi. https://www.drupal.org/documentation/git/configure
  4. Siirry hakemistoon, johon haluat kopion Drupalin palvelimelta ladattavan.
  5. Lataa kopio Drupalista, esim. git clone --branch 8.x http://git.drupal.org/project/drupal.git
https://www.drupal.org/documentation/git
Ohje https://www.drupal.org/node/3060/git-instructions/7.x/nonmaintainer

GitHub[muokkaa]

GitHub.com kotisivuilta voi suoraan lisätä omaan koneeseen asennettuun GitHub-sovellukseen Clone in Desktop -linkin avulla.

Käyttöliittymä standardit Drupalissa[muokkaa]

https://drupal.org/ui-standards

Drupalkoodin standardit[muokkaa]

Kirjoitettaessa Drupal koodia tulee noudattaa sen hetkisiä koodauksen standardeja. Esimerkit ovat oheisesta ohjeesta 18.1.2014.

  • rivin pituus enintään 80 merkkiä, sallien poikkeukset
  • sisennys 2 välilyöntiä, ei koskaan sarkainta
  • ei välilyöntiä rivin lopussa
  • ehtoja ei jaeta useammille riveille
  • koodin ei tarvitse olla äärettömän tiivistä vaan ennemmin selkeää
  • kommentointi on tärkeä osa ohjelmointia. Moduulit kirjoitetaan lähtökohtaisesti englannin kielellä. Rivin lopussa kommentti //Kommentti tähän. Kommentit loppuvat pisteeseen ja alkavat isolla kirjaimella. # -merkkiä ei tule käyttää kommentoinnissa.
/**
 * Tekstiä
 */
/**
  * @file
  * Tekstiä
  */
  • ' -merkkiä suositellaan paitsi "Vihreän vaa'an paino." ja
    "<h2>$header</h2>"
  • <?php eli käytä php sanaa. Jätä pois loppu ?> koska se voi aiheutta ongelmia tietyissä palvelimissa rikkoen HTTP headerit.
  • <?php print $muuttuja; ?> eli käytä puolipistettä
  • + - * / = .= != == ** ++ -- > < ym. erotetaan yhdellä välilyönnillä kummallakin puolen merkkiä
  • (int) $muuttuja eli välissä yksi välilyönti
  • ohjetiedostot ISOILLAKIRJAIMILLA.txt
  • tiedostot päättyvät \n
  • tekstitiedostot päättyvät yhteen tyhään riviin \n
  • funktiot ja muuttuja pienillä kirjaimilla, sanat erotetaan alaviivalla. Funktioilla lisäksi ryhmä/moduuli etuliite
  • kiinteät muuttujat isoilla kirjaimilla alaviivalla erotettuna, myös esm. TRUE
  • $muuttuja = 'Foo' . $bar; eli välilyönti pisteen kummallakin puolen
  • $muuttuja = "Foo $bar";
  • globaalit muuttujat alkavat alaviivalla _moduulinnimi_muuttujannimi
  • funktiokutsun muoto $muuttuja = nimi($muuttuja1, $muutuja2);
  • funktiokutsussa oletusarvo argumenttilistan loppuun, aina pyrittävä palauttamaan järkevä arvo
  • oliota muodostettaessa $olio = new LuokanNimi($muuttuja1, $muuttuja2);
  • Taulukot $muuttuja = array('teksti1', 'teksti2', 'foo' => 'bar');
    • jos ylittää 80 merkkiä, pilkotaan yksi per rivi alkaen aina kahdella välilyönnillä ja pilkku rivin lopussa
  • käytä epätavallisissa tilanteissa require_once() ja tavallisissa include_once()
    • include_once ./includes/moduulini_tiedosto.inc eli aloita aina pisteellä polku
    • Drupal 7:ssä: require_once DRUPAL_ROOT . '/' . variable_get('cache_inc', 'includes/cache.inc');
<?php
if (!defined('MAINTENANCE_MODE')) {
  define('MAINTENANCE_MODE', 'error');
}
?>
  • kirjoita elseif yhteen, käytä aina aaltosulkeita
if (ehto1 || ehto2) {
  toiminto1;
}
elseif (ehto3 && ehto4) {
  toiminto2;
switch (ehto) {
  case 1:
    toiminto1;
    break;

  default:
    oletustoiminto;
}
do {
  toiminnot;
} while ($ehto);
<?php if (!empty($muuttuja)): ?>
  <p><?php print $muuttuja; ?></p>
<?php endif; ?>

<?php foreach ($muuttuja as $muuttuja): ?>
  <p><?php print $muuttuja; ?></p>
<?php endforeach; ?>

Moduuli[muokkaa]

Katso sivu Drupal ohjelmointi moduuli.

Teema[muokkaa]

Katso sivu Drupal ohjelmointi teema.

Testaus[muokkaa]

Drupal sisältää Simple Test PHP Libraryyn perustuvan testauksen. Testaus kohdistuu lähinnä käyttöliittymään. Hyvä testi syntyy kun tiedetään mitä täytyy testata. Lisätietoa aiheesta. Se kytketään päälle normaalisti moduulina kohdasta Testing.

https://drupal.org/node/1128366
  1. https://drupal.org/node/1134754