web-dev-qa-db-ja.com

ノードの添付ファイルのサイズを表示するにはどうすればよいですか?

Drupal 7で、ファイルの管理/ファイルフィールドの表示を通じてノードの添付ファイルサイズを表示する方法はありますか、またはこれはプログラムで実行されますか?

2
Tom Vader

これを$nodeオブジェクトでハードコーディングするには、そうすることでできます(できればtemplate.phpのtheme_preprocess_nodeで)。

field_my_fieldを単一の値として入力した場合:

$file = field_get_items('node', $node, 'field_my_file');
if ($file) {
    $file_size = $file[0]['filesize'];
    $file_size_formated = format_size($file_size);
}

複数の値としてfield_my_fieldを入力した場合:

$files = field_get_items('node', $node, 'field_my_file');
if ($files) {
    $files_size_formated = array();
    foreach ($files as $key => $file) {
        $file_size = $file['filesize'];
        $files_size_formated[] = format_size($file_size);
    }
}

Template.phpには次のようなものが必要です。

// This function allow one preprocess_node function per content type
function mytheme_preprocess_node(&$vars) {
  $node = &$vars['node'];
  // Preprocess function for each node type
  $function = __FUNCTION__ . '_' . $node->type;
  if (function_exists($function)) {
    $function($vars);
  }
}

function mytheme_preprocess_node_my_content_type(&$vars) {
  $node = &$vars['node'];
  $file = field_get_items('node', $node, 'field_my_file');
  if ($file) {
      $file_size = $file[0]['filesize'];
      $vars['file_size_formated'] = format_size($file_size);
  }
}

次に、あなたの中でnode--my-content-type.tpl.phpを使用して、変数$file_size_formatedを、たとえば次のようにしたい場所に印刷できます。

<div class="file-size"><?php print $file_size_formated; ?></div>
3
pbonnefoi

template.phpのテーマ関数 theme_file_link を変更して、次のようなものとリンクするファイルサイズを追加することもできます。

function YOURTHEME_file_link($variables) {
  // ...

  $file_size = format_size($file->filesize);

  return '<div class="file">' . $icon . ' ' . l($link_text, $url, $options) . '<span class="file-size">' . $file_size . '</span></div>';
}
1
tmsss