web-dev-qa-db-ja.com

target = "_ blank"を使用するカスタムフォーマッタを設定するにはどうすればよいですか?

Custom Formatters モジュールをインストールしました。「出力の書き換え」->「ターゲット」->「_blank」でビュー設定が機能しない理由を理解できなかったためです。

「Generic File」形式または「Rendered File」->「Link」形式のいずれかを再作成する必要があります。

これは私が試したものですが、「属性」は$ variables配列に追加できるものではないと思います theme() -

$output = '';
foreach ($variables['#items'] as $item) {
  $output .= theme('file_link', array(
    'file' => (object) $item,
    'attrs' => '_blank',
    ));
}
return $output;

上記のフォーマッターコードは、CustomFormatters.comサイトの Generic Image で見つかりました

2
dan2k3k4

OK、テーマのtemplate.phpファイルにhook_file_link()関数を実装するために機能する答えを見つけました:

https://drupal.org/node/301234#comment-4764468 で回答-ここにコピー:

function THEMENAME_file_link($variables) {
  $file = $variables['file'];
  $icon_directory = $variables['icon_directory'];

  $url = file_create_url($file->uri);
  $icon = theme('file_icon', array('file' => $file, 'icon_directory' => $icon_directory));

  // Set options as per anchor format described at
  // http://microformats.org/wiki/file-format-examples
  $options = array(
    'attributes' => array(
      'type' => $file->filemime . '; length=' . $file->filesize,
    ),
  );

  // Use the description as the link text if available.
  if (empty($file->description)) {
    $link_text = $file->filename;
  }
  else {
    $link_text = $file->description;
    $options['attributes']['title'] = check_plain($file->filename);
  }

  //open files of particular mime types in new window
  $new_window_mimetypes = array('application/pdf','text/plain');
  if (in_array($file->filemime, $new_window_mimetypes)) {
    $options['attributes']['target'] = '_blank';
  }

  return '<span class="file">' . $icon . ' ' . l($link_text, $url, $options) . '</span>';
}

THEMENAMEをテーマ名に変更し、コードをテンプレートファイルに配置するだけです。これをカスタムフォーマッターに抽出することもできると思います。

2
dan2k3k4

Theme/template.phpファイルにfilefieldフック(関数)を実装する https://www.drupal.org/node/190566

<?php
function youtemplatename_filefield_file($file) {
  // Views may call this function with a NULL value, return an empty string.
  if (empty($file['fid'])) {
    return '';
  }

  $path = $file['filepath'];
  $url = file_create_url($path);
  $icon = theme('filefield_icon', $file);

  // Set options as per anchor format described at
  $options = array(
    'attributes' => array(
      'type' => $file['filemime'] . '; length=' . $file['filesize'],
    ),
  );

  // Use the description as the link text if available.
  if (empty($file['data']['description'])) {
    $link_text = $file['filename'];
  }
  else {
    $link_text = $file['data']['description'];
    $options['attributes']['title'] = $file['filename'];
  }

  //open files of particular mime types in new window
  $new_window_mimetypes = array(
    'application/pdf',
    'text/plain'
  );
  if (in_array($file['filemime'], $new_window_mimetypes)) {
    $options['attributes']['target'] = '_blank';
  }

  return '<div class="filefield-file clear-block">'. $icon . l($link_text, $url, $options) .'</div>';
}
?>
0
Gajendra Sharma