Etikettarkiv: extern site

Timthumb som inte fungerar?

Jag stötte på ett litet problem när jag uppdaterade en kundblogg nyligen. Jag tänkte dela med mig av lösningen här.

Den aktuella bloggen använder sig av Timthumb i ett plugin för att visa utvalda inlägg i en widget. Pluginet heter Featured Post with thumbnail och är rätt trevligt i min mening.

Nå, till problemet. Det var nämligen så att de små ”tummnaglarna” inte visades korrekt. Efter lite undersökande stod det klart att det berodde på att jag inte hade bilderna som miniatyrerna skulle skapas ifrån under samma subdomän, utan på en specifik sådan där webbservern anpassats speciellt för att hantera statiskt material.

Men sak samma vad orsaken var! Bilderna var inte på samma ställe som bloggen, och det ställde till problem.

Ganska snabbt hittar man denna tråd om man googlar lite på problemet. Och där står ju lösningen;

For obvious security reasons, timthumb.php blocks any external image URL, unless that URL is added into the list of white listed websites.

If you look into the code of timthumb.php, you’ll see an array containing white list URLS. Add picasaweb.google.com into the allowed white list.

Det finns även ett exempel på hur koden ser ut, och ska se ut. Det gäller att veta var man hittar den bara. Man behöver tanka hem filerna för pluginet med ett FTP-program och hitta filen som vanligtvis heter timthumb.php eller thumbs.php eller något i den stilen. Plugins hittar du i mappen som heter ”wp-content”. Där finns mappen ”plugins”.

I kundens fil hette dock arrayen lite annorlunda, så det såg istället ut såhär;

// If ALLOW_EXTERNAL is true and ALLOW_ALL_EXTERNAL_SITES is false,
// then external images will only be fetched from these domains and
// their subdomains.
if(! isset($ALLOWED_SITES)){
$ALLOWED_SITES = array (
'flickr.com',
'staticflickr.com',
'picasa.com',
'img.youtube.com',
'upload.wikimedia.org',
'photobucket.com',
'imgur.com',
'imageshack.us',
'tinypic.com',
);
}

Egentligen skulle man ju kunna ha det såhär om man vet att man bara kommer att ha miniatyrer från en plats;
if(! isset($ALLOWED_SITES)){
$ALLOWED_SITES = array (
'media.mydomain.se',
);
}

Men jag lade bara till den egna subdomänen istället. Man vet aldrig, och de sidor som angivits kändes ju ganska säkra ändå.

När koden är ändrad är det bara att ladda upp filen igen och skåda att det fungerar!

Om du inte känner dig så hemma på detta kan självklart Vidde Webb hjälpa till! Gå bara till beställningssidan och beskriv problemet. Det går utmärkt att göra detta utan att beställa domän eller webbhotell om du redan har detta.