Monday 5 December 2011

Drupal Development – image cache problems with special characters


We came across this problem on one of our Drupal sites the other day, someone uploaded an image with an ampersand in the filename, and imagecache refused to display the image. A bit of investigating revealed that imagecache had a problem with a number of special characters in the image filenames.

The solution is a little imagecache theme override – you can see examples for both Drupal5 and Drupal6 below

Drupal 5 version

function phptemplate_imagecache($namespace, $path, $alt = ”, $title = ”,
$attributes = NULL) {
$attributes = drupal_attributes($attributes);
$imagecache_path = file_create_url(file_directory_path() .’/imagecache/’.
$namespace .’/’. drupal_urlencode($path));
return ”. check_plain($alt) .”;
}


Drupal 6 version

function phptemplate_imagecache($namespace, $path, $alt = ”, $title = ”, $attributes = NULL) {
if ($image = image_get_info(imagecache_create_path($namespace, $path))) {
$attributes['width'] = $image['width'];
$attributes['height'] = $image['height'];
}
// check is_null so people can intentionally pass an empty
// array of attributes to override
// the defaults completely… if
if (is_null($attributes)) {
$attributes['class'] = ‘imagecache imagecache-’. $namespace;
}
$attributes = drupal_attributes($attributes);
$imagecache_url = imagecache_create_url($namespace, drupal_urlencode($path));
return ”.
check_plain($alt) .”;
}

Get more information on php development, symfony developers, Drupal development, iphone apps development, Facebook apps, Social media websites, Zend PHP framework and how to hire php developer