yura3d |
Отправлено: 8 февраля 2011 — 22:24
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
Назначение (Отобразить)Данное дополнение позволяет выводить дату и время в сокращённом, более удобочитаемом для пользователей виде. Например, если какое-либо из сообщений было добавлено в тему 15 минут назад, то вместо полных даты и времени в колонке Обновление (что не всегда удобно и наглядно) Вы будете видеть именно это: 15 минут назад (недавние обновления выделяются также жирным шрифтом и цветом). Вместо сегодняшней даты будет подставлено слово Сегодня, вместо вчерашней - слово Вчера. Это позволит Вашим пользователям визуально быстрее выделять последние новинки на форуме! Обновлённый формат вывода даты и времени будет доступен не только для списка разделов, тем и сообщений, но также и для многих других функций и модулей форума (например, для службы личных сообщений ЛС)
Установка (Отобразить)Откройте файл include/fm.class.php, найдите строки:
CODE: /*
_DateFormat Форматирование даны в виде 21 Декабря, 2006 - 20:03:17
*/
function _DateFormat($time) {
$rus_m = array ('01'=>'Января','02'=>'Февраля','03'=>'Марта','04'=>'Апреля','05'=>'Мая','06'=>'Июня','07'=>'Июля','08'=>'Августа','09'=>'Сентября','10'=>'Октября','11'=>'Ноября','12'=>'Декабря');
$currDay = strftime ("%d",$time);
$currMonth = strftime ("%m",$time);
$currYear = strftime ("%Y",$time);
$tm = date("H:i:s",$time);
return $currDay.' '.$rus_m[$currMonth].', '.$currYear.' - '.$tm;
}
и замените их строками:
CODE: /*
_RussianUnstemming Крайне упрощённая версия анстеммера (by yura3d)
*/
function _russianUnstemming($stem, $male, $value) {
$last = $value % 10;
if ($last >= 5 && $last <= 9 || $value >= 11 && $value <= 19 || !$last) {
return ($male) ? "{$stem}ов" : $stem;
}
else if ($last >= 2 && $last <= 4) {
return ($male) ? "{$stem}а" : "{$stem}ы";
}
return ($male) ? $stem : "{$stem}у";
}
/*
_DateFormat Форматирование даны в виде 21 Декабря, 2006 - 20:03:17
*/
function _DateFormat($time, $adv = true) {
static $rus_m = array('01' => 'января', '02' => 'февраля', '03' => 'марта', '04' => 'апреля', '05' => 'мая',
'06' => 'июня','07' => 'июля', '08' => 'августа', '09' => 'сентября', '10' => 'октября', '11' => 'ноября', '12' => 'декабря');
$currDay = strftime ("%d",$time);
$currMonth = strftime ("%m",$time);
$currYear = strftime ("%Y",$time);
$tm = date("H:i",$time);
if ($adv) {
$userTime = $this->_Nowtime + $this->user['timedif'] * 3600;
if ($userTime - $time < 60) {
return '<b>меньше минуты назад</b>';
}
else if ($userTime - $time < 18000) {
$hours = floor(($userTime - $time) / 3600);
$minutes = floor(($userTime - $time) / 60 - $hours * 60);
return '<b style="color: #a00">' . (($hours) ? $hours . ' ' . $this->_RussianUnstemming('час', true, $hours) . ' ' : '') .
(($minutes) ? $minutes . ' ' . $this->_RussianUnstemming('минут', false, $minutes) . ' ' : '') .
'назад</b>';
}
if ($currDay . $currMonth . $currYear == strftime("%d%m%Y", $userTime - 86400)) {
return "<b>Вчера — $tm</b>";
}
else if ($currDay . $currMonth . $currYear == strftime('%d%m%Y', $userTime)) {
return "<b>Сегодня — $tm</b>";
}
}
return (($currDay[0] == '0') ? $currDay[1] : $currDay).' '.$rus_m[$currMonth].' '.$currYear.' — '.$tm;
}
Далее откройте файлы index.php и forums.php, в каждом из них найдите строки:
CODE: $LastTopicDate = ($forum['last_time'] > 0) ? date("d.m.Y - H:i", $forum['last_time'] + $fm->user['timedif']*3600) : $fm->LANG['NA'];
и замените их строками:
CODE: $LastTopicDate = ($forum['last_time'] > 0) ? $fm->_DateFormat($forum['last_time'] + $fm->user['timedif'] * 3600) : $fm->LANG['NA'];
Затем откройте файл profile.php, найдите строку:
CODE: $basetimes = $fm->_DateFormat($fm->_Nowtime);
и замените её строкой:
CODE: $basetimes = $fm->_DateFormat($fm->_Nowtime, false);
Наконец, откройте файл messenger.php, найдите в нём фрагмент (встречается 2 раза):
CODE:$MessageDate = date("d.m.Y - H:i", $message_id + $fm->user['timedif']*3600);
Найдённый фрагмент нужно заменить на этот:
CODE:$MessageDate = $fm->_DateFormat($message_id + $fm->user['timedif'] * 3600);
Некоторые важные моменты (Отобразить)- Посмотреть работу дополнения уже можно на этом форуме!
- Данное дополнение может незначительно замедлять скорость генерации тех страниц форума, на которых часто выводятся даты (например, в случае большого кол-ва разделов на главной странице форума)
- Данное дополнение не является модулем, и поэтому не имеет интерфейса управления через админку (в частности, нет возможности включения/отключения)
|
|
|
yura3d |
Отправлено: 8 февраля 2011 — 23:54
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
Nikela пишет:Абсолютно согласна.
Вобщем все, кто захочет убрать вывод секунд, откройте файл include/fm.class.php, найдите строку:
CODE: $tm = date("H:i:s",$time);
и замените её строкой:
CODE: $tm = date("H:i",$time);
На мой взгляд, так смотрится эстетичнее. Инструкция по установке дополнения в первом сообщении темы была исправлена с учётом данного изменения |
|
|
Pauk |
Отправлено: 9 февраля 2011 — 11:24
|
Advanced Member
Покинул форум
Сообщений всего: 327
Дата рег-ции: Март 2009
Репутация: 6
|
спасибо огромное, очень понравился мод!
оформил под себя - теперь вообще красота!
(Добавление)
Цитата:(Отредактировано автором: Сегодня — 04:47)
парни помогите сделать вот эту надпись меньшим шрифтом... куда лезть?
заранее спасибо! (Отредактировано автором: 9 февраля 2011 — 11:37) |
|
|
Nikela |
Отправлено: 9 февраля 2011 — 15:03
|
Advanced Member
Покинул форум
Сообщений всего: 254
Дата рег-ции: Нояб. 2010
Откуда: Минск
Репутация: 10
|
electron пишет:Nikela пишет:Цвет я убрала (как-то мне это кажется лишним такое привлечение внимания), но вот не могу найти где убрать жирность всему.
если вглядеться в код, то можно понять, что жирность в основном формируется в include/fm.class.php . уберите тэги и из этого файла и будет вам щастье
Сорри, но это я догадалась сделать в первую очередь После этого действия убралась жирность непосредственно в посте сверху, там где написано "Отправлено:..", но не на главной форума.
На данный момент у меня вид этих строк:
Спойлер (Отобразить)CODE: _DateFormat Форматирование даны в виде 21 Декабря, 2006 - 20:03:17
*/
function _DateFormat($time, $adv = true) {
static $rus_m = array('01' => 'января', '02' => 'февраля', '03' => 'марта', '04' => 'апреля', '05' => 'мая',
'06' => 'июня','07' => 'июля', '08' => 'августа', '09' => 'сентября', '10' => 'октября', '11' => 'ноября', '12' => 'декабря');
$currDay = strftime ("%d",$time);
$currMonth = strftime ("%m",$time);
$currYear = strftime ("%Y",$time);
$tm = date("H:i",$time);
if ($adv) {
$userTime = $this->_Nowtime + $this->user['timedif'] * 3600;
if ($userTime - $time < 60) {
return 'меньше минуты назад';
}
else if ($userTime - $time < 18000) {
$hours = floor(($userTime - $time) / 3600);
$minutes = floor(($userTime - $time) / 60 - $hours * 60);
return '' . (($hours) ? $hours . ' ' . $this->_RussianUnstemming('час', true, $hours) . ' ' : '') .
(($minutes) ? $minutes . ' ' . $this->_RussianUnstemming('минут', false, $minutes) . ' ' : '') .
'назад';
}
if ($currDay . $currMonth . $currYear == strftime("%d%m%Y", $userTime - 86400)) {
return "Вчера — $tm";
}
else if ($currDay . $currMonth . $currYear == strftime('%d%m%Y', $userTime)) {
return "Сегодня — $tm";
}
}
return (($currDay[0] == '0') ? $currDay[1] : $currDay).' '.$rus_m[$currMonth].' '.$currYear.' — '.$tm;
}
Но чуда не произошло
А также я пыталась редактировать файлы: forum_body.tpl, forum_data.tpl - тоже тщетно. Возможно где-то была невнимательна. Поэтому и хочу указаний к точному файлу.(Отредактировано автором: 9 февраля 2011 — 15:10) |
|
|
|