web-dev-qa-db-ja.com

フォーマッタでデフォルトの画像スタイルを「元の画像」に設定する

私が書いているカスタムフォーマッタで、画像スタイルの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に元の画像を使用するにはどうすればよいですか?

6
Artur

指定したい場合は簡単な解決策ですimage_styleのようなものを使用します

  image_style_url('850x450',$file->uri);

また、画像スタイルを使用せず、Origin画像を使用する場合

 file_create_url($file->uri);
1
Yusef