방금이 문제를 다루고 이것을 처리하기 위해 코드를 작성해야했습니다.
이렇게 theme_image_style()
하면 페이지 요청을 실행하는 동안 이미지 파생물을 효과적으로 복제 할 수 있습니다. 생성은 일반적으로 404를 트리거하는 보안 문제를 우회하지만 페이지를 처음 방문 할 때 페이지 속도가 느려집니다.
공용 파일 스키마 만 사용하고 있지만 개인 파일 스키마 기반 스타일에서는 실패 할 것으로 예상됩니다.
/**
* Implements hook_theme().
*/
function MODULE_theme() {
return array(
'remote_image_style' => array(
'variables' => array(
'style_name' => NULL,
'path' => NULL,
'width' => NULL,
'height' => NULL,
'alt' => '',
'title' => NULL,
'attributes' => array(),
),
),
);
}
/**
* Returns HTML for an image using a specific image style.
*
* Clones theme_image_style() with the additional step of forcing the creation
* of the derivative to bypass any 404 issues.
*/
function theme_remote_image_style($variables) {
// Determine the dimensions of the styled image.
$dimensions = array(
'width' => $variables['width'],
'height' => $variables['height'],
);
image_style_transform_dimensions($variables['style_name'], $dimensions);
$variables['width'] = $dimensions['width'];
$variables['height'] = $dimensions['height'];
$image_style_dest_path = image_style_path($variables['style_name'], $variables['path']);
if (!file_exists($image_style_dest_path)) {
$style = image_style_load($variables['style_name']);
image_style_create_derivative($style, $variables['path'], $image_style_dest_path);
}
$variables['path'] = file_create_url($image_style_dest_path);
return theme('image', $variables);
}