Tarkkaamo

Jussi Linkolan blogi ja kotisivusto

MediaWiki, Open Graph ja Featured Image

MediaWiki-ohjelmistolla tehdyn sivuston sivuja Facebookiin jaettaessa voi olla vaikeuksia saada haluttu kuva mukaan linkkijulkaisuun. Open Graph Tagit ovat verkkosivun <head>-osioon asetettavia tietueita, joilla voi antaa Facebookille ohjeet, kuinka sivuun liittyvät tiedot näytetään, kun se jaetaan Facebookissa. MediaWikissä tämän voi tehdä lisäosalla, joka omassa käytössäni ei toiminut suoraan asennettuna toivotulla tavalla.

Nämä ohjeet perustuvat MediaWikin versioon 1.23.2, kokeilu omalla vastuulla.

OpenGraphMeta Extension

Open Graph -määritysten lisäämiseen on tässä esimerkissä käytetty OpenGraphMeta-nimistä laajennusta, joka asennetaan aluksi asennusohjeen mukaan.

Tavoitetila

Halutaan, että sivuilla, joille ei erikseen ole määritelty artikkelikuvaa (Featured Image), Facebook näyttää linkin yhteydessä wikisivuston logon. Oletuskuva pitää voida ohittaa määrittelemällä sivulle erikseen kuva, jota sen oletuskuvana käytetään. Artikkelikuvaan liittyvä Open Graph -tietue näyttää suunnilleen tältä:

<meta property="og:image" content="http://example.com/w/skins/myskin/mylogo.jpg" />

Havaitut ongelmat

Asennuksen jälkeen OpenGraphMeta tuottaa <head>-osioon sivuston logoon viittaavan artikkelikuvan, kun kyseessä on sivuston etusivu. Muille sivuille kuvatietue ei tulostu.

Korjauksia

Ensimmäinen korjaus löytyy OpenGraphMeta-lisäosan keskustelusivulta. Lisäosan koodia tiedostossa /extensions/OpenGraphMeta/OpenGraphMeta.php pitää muuttaa seuraavasti:

Rivillä 46 oleva määritys:

Title::newFromDBkey($data['dbkey'], NS_FILE) )

muutetaan muotoon:

Title::newFromDBkey( "File:" . $data['dbkey'] )

Tämän jälkeen lisäosan ohjeiden mukaisen, wikitekstin sekaan määritellyn parseri-funktion, esimerkiksi {{#setmainimage:Otsakekuva.jpg}}, pitäisi tuoda haluttu og:image määritys sivun otsakkeiden joukkoon.

Nyt pitää saada vielä sivuston logo oletuskuvaksi, joka näytetään aina, kun muuta kuvaa ei ole määritelty. Riviltä 80 alkava lauseke:

elseif ( $isMainpage ) {
                $meta["og:image"] = wfExpandUrl($wgLogo);

muutetaan muotoon:

else {
                $meta["og:image"] = wfExpandUrl($wgLogo);

Muuta huomioitavaa

Lisäosa ei ole aivan uusi, ja se muokkaa itse määritellystä kuvasta varsin pienen kuvakkeen. Open Graphin nykyisissä suosituksissa otsakekuvan koko olisi minimissään 1200×630 pikseliä, joten kuvakkeelle asetetun koon voi muuttaa suuremmaksi. (Jos kuvakekoko on suurempi kuin alkuperäinen kuva, käytää MediaWiki alkuperäistä kuvaa.) Eli rivillä 75:

$meta["og:image"] = wfExpandUrl($out->mMainImage->createThumb(100*3, 100));

mutetaan esimerkiksi muotoon:

$meta["og:image"] = wfExpandUrl($out->mMainImage->createThumb(1200, 630));

Logon määrittäminen

Oletuskuvan osalta pitää huomata, että logon polun on oltava määriteltynä LocalSettings.php -tiedostossa:

$wgLogo = "$wgStylePath/myskin/mylogo.jpg";

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *