Как вывести размер файла, прикреплённого к ноде, в заголовок?

Аватар пользователя byulent byulent 24 июня 2017 в 20:20

Имеется страница с собственным типом материала "Выпуск газеты". Заголовок каждой страницы должен выглядеть как "Выпуск № XX от DD месяц YYYY (ZZ M)"
Решил использовать модули Automatic Entity Labels и Token. Номер выпуска сделал отдельным полем в ноде, дату вывел легко, а вот с размером файла проблемы.
Среди стандартных токенов имеется только токен, выводящий ссылку на файл ([node:field_file]).
Попытался сделать свой:

<?php
/**
 * Implements hook_token_info().
 */
function mytokens_token_info() {
  
$node_tokens['field_file']['size'] = array(
    
'name' => t('File size'),
    
'description' => t('File size'),
  );
  
$node_tokens['field_file']['size']['mbytes'] = array(
    
'name' => t('In MB'),
    
'description' => t('File size in MB'),
  );
  return array(
    
'tokens' => array(
      
'node' => $node_tokens,
    ),
  );
}

/**
 * Implements hook_tokens().
 */
function mytokens_tokens($type$tokens, array $data = array(), array $options = array()) {
  
$replacements = array();

  if (

$type == 'node' && !empty($data['node'])) {
    
$node $data['node'];

    foreach (

$tokens as $name => $original) {
      if (
$name == 'mbytes') {
        
$replacements[$original] = $node->field_file['und'][0]['filesize']/(1024*1024);
      }
    }
  }

  return 

$replacements;
}
?>

Но созданный токен не отображается в таблице токенов (и мало того, затирает название и описание токена node:field_file), а когда я добавляю его в заголовок, не происходит ничего.
Как же мне всё-таки вывести этот размер файла?

Комментарии

Аватар пользователя mozh mozh 4 июля 2017 в 10:30

hook_node_preprocess скорее всего поможет
отслеживаете тип нужной ноды, смотрите поле файла и изменяете тайтл