私が書いているカスタムフォーマッタで、画像スタイルのdefault_valueに問題があります。
function MYMODULE_field_formatter_info() {
return array(
'MYMODULE_formatter' => array(
'label' => t('My Custom Formatter'),
'field types' => array('image'),
'multiple values' => FIELD_BEHAVIOR_DEFAULT,
'settings' => array(
'trigger_image_style' => '',
)
),
);
}
function MYMODULE_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state){
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$element = array();
$image_styles = image_style_options(FALSE);
$element['trigger_image_style'] = array(
'#type' => 'select',
'#title' => t('Trigger image style:'),
'#description' => t('Image style to be used for trigger'),
'#default_value' => $settings['trigger_image_style'],
'#options' => $image_styles,
);
return $element;
}
function MYMODULE_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$elements = array();
$html = "";
$settings = $display['settings'];
// ensure deaults?
if (!isset($settings['trigger_image_style'])) $settings['trigger_image_style'] = '';
//.....
}
Drupalは誤ったパスを返すようです:
image_style_url($settings['trigger_image_style'], $item['uri']);
私が選択したスタイルを明示的に設定するまで。正しくないパスには、次のように2つのスラッシュがあります。
http://example.com/sites/default/files/styles//public/trigger-images/test1.jpg
空の文字列は単に「元の画像を使用する」という意味だと思いました...スタイルが設定されていない場合や空の文字列の場合、Drupalに元の画像を使用するにはどうすればよいですか?
指定したい場合は簡単な解決策ですimage_style
のようなものを使用します
image_style_url('850x450',$file->uri);
また、画像スタイルを使用せず、Origin画像を使用する場合
file_create_url($file->uri);