Shoutbox - добавление нового формата даты

Мне нужно было отображать дату недавних сообщений в shoutbox'e более удобным способом для меня - если сообщение добавлено меньше суток назад, то чтобы просто отображалось время ; если в течении прошлой недели - чтобы отображался день, и время, если больше недели назад - то дата и время.

Для этого пришлось хакнуть модуль shoutbox - я не захотел переопределять функцию темизации ибо это тоже сродни хаку - скопировать более 50 строк кода в мою тему чтобы добавить 4 - я считаю это тоже не выход. Итак.

В файл shoutbox.module

function shoutbox_admin_settings() {
...
  $form['display_settings']['shoutbox_time_format'] = array(
    '#type' => 'select',
    '#title' => t('Time format'),
    '#default_value' => variable_get('shoutbox_time_format', 'ago'),
    '#description' => t('Choose the format which shout times will be rendered in.'),
    '#options' => array(
      'ago' => t('Time ago (1 hour 15 minutes ago)'),
      'small' => t('Small !time', array('!time' => '(' . format_date(time(), 'small') . ')')),
      'medium' => t('Medium !time', array('!time' => '(' . format_date(time(), 'medium') . ')')),
      'large' => t('Large !time', array('!time' => '(' . format_date(time(), 'large') . ')')),
      'madaro' => t('Madaro - depend on time'),
    ),
  );
...
 
function theme_shoutbox_post($shout, $links = array()) {
...
    case 'small':
    case 'medium':
    case 'large':
      $post .= format_date($shout->created, $format);
	  break;
    case 'madaro':
	  $different = time() - $shout->created;
	  if ($different < 64800) $format = 'H:i';
	  if ($different > 64800 && $different < 64800 * 7) $format = 'D, H:i';
	  if ($different > 64800 * 7) $format = 'd.m H:i';  
	  $post .= format_date($shout->created, 'custom', $format);
      break;
  }
</code lang="php">
 
В результате получаем новый пункт меню в настройках admin/settings/shoutbox  , где , выбрав "Madaro", получим такое отображение дат, как у меня.
 
Прикрепленный файл - от модуля Shutbox v 1.31.2.39.
Drupal 6

Комментарии

Добавить комментарий