Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Как изменить отображение даты последнего входа пользователя?

Как изменить отображение даты последнего входа пользователя?


     20.03.2015    Шаблоны (TPL), Общие вопросы по PHP, Хаки    3144

вопрос
Ребят, всем привет!
Подскажите пожалуйста, как можно сделать в профиле пользователя и подобных в строке "Был на сайте:" отображение даты так, чтобы было не 20 марта 2015 23:19, а, например, 1 час 38 минут назад.
У меня так реализовано в новостях и комментариях при помощи хака "Timeago".
<?php
if(!class_exists('TimeAgo')) {
    
    class TimeAgo {
        
        public function __construct ($data) {
            if(strtotime($data)) {
                $data = strtotime($data);    
            }
            echo $this->timeString($data);
        }
    
        protected function timeInteger($n, &$plurals) {
            $plural = ($n % 10 == 1 && $n % 100 != 11 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 or $n % 100 >= 20) ? 1 : 2));
            return $plurals[$plural];
        }
    
        protected function timeString($dt, $precision = 2) {
          $times = array(
            365*24*60*60    =>  array("год", "года", "лет"),
            30*24*60*60     =>  array("месяц", "месяца", "месяцев"),
                7*24*60*60      =>  array("неделя", "недели", "недель"),
                24*60*60        =>  array("день", "дня", "дней"),
                60*60           =>  array("час", "часа", "часов"),
                60              =>  array("минута", "минуты", "минут"),
                1               =>  array("секунда", "секунды", "секунд"),
          );
        
          $passed = time() - $dt;
        
          if($passed < 5) {
            $output = ' менее часа назад';
          } else {
            $output = array();
            $exit = 0;
                foreach($times as $period => $name) {
        
                  if($exit >= $precision || ($exit > 0 && $period < 60)) break;
                    $result = floor($passed / $period);
        
                    if ($result > 0) {
                        $output[] = $result . ' ' . $this->timeInteger($result, $name);
                        $passed -= $result * $period;
                        $exit++;
                    } else if ($exit > 0) $exit++;
                }
                $output = implode(' и ', $output).' назад';
            }
            return $output;
        }        
    }
}

new TimeAgo($value);


Помогите пожалуйста переделать под lastdate или хотя бы намекните как-нибудь приближенно :)
Заранее очень благодарен.

Ответа пока нет


3 комментария

SX2
Эксперт

SX2 - 21 марта 2015 10:44 -

if(date(Ymd, $member_id['lastdate']) == date(Ymd, $_TIME)){
        $tpl->set( '{lasttime}', $lang['time_heute'] . langdate(" в H:i", $member_id['lastdate']));
        } elseif( date( Ymd, $row['date'] ) == date( Ymd, ($_TIME - 86400) ) ){            
        $tpl->set( '{lasttime}', $lang['time_gestern'] . langdate(" в H:i", $member_id['lastdate']));
        } else {            
        $tpl->set( '{lasttime}', langdate("d F в H:i", $member_id['lastdate']));
    }
{lasttime}

if(date(Ymd, $member_id['lastdate']) == date(Ymd, $_TIME)){
        $lasttime = $lang['time_heute'] . langdate(" в H:i", $member_id['lastdate']);
        } elseif( date( Ymd, $row['date'] ) == date( Ymd, ($_TIME - 86400) ) ){            
        $lasttime = $lang['time_gestern'] . langdate(" в H:i", $member_id['lastdate']);
        } else {            
        $lasttime = langdate("d F в H:i", $member_id['lastdate']);
    }
{$lasttime}

Самая сложная часть работы – решиться приступить к ней.

Moreno
Юзер

Moreno - 21 марта 2015 13:31 -

SX2,
Сергей, прошу прощения, это всё одним файлом подключать в шаблон? Что-то не понял)

Moreno
Юзер

Moreno - 25 марта 2015 16:29 -

Так куда нужно вставить данный код? В function.php?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх