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