рдореЛрдбреВ - рд╕рд╛рдЗрдЯ рдЖрдЧрдВрддреБрдХреЛрдВ рдХрд╛ рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдпрд╛рддреНрд░рд╛рдУрдВ рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо

рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рддрд░рд╣, рдореИрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╣ рдХреА рдПрдХ рдбрд┐рдЧреНрд░реА рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реВрдВ, рдФрд░ рдЦреБрдж рд╕рдм рдХреБрдЫ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рд╡рд┐рджреЗрд╢реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, liveinternet рдФрд░ рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЗ рдЕрдиреНрдп рдХрд╛рдЙрдВрдЯрд░ред рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЙрди рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВред



рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ (рдФрд░ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ) рдХрд┐ рдореЙрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯ рд╡рд┐рдЬрд╝рд┐рдЯрд░ рдХрд╛ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред





рд╕реНрдЯреЗрдЬ 1. рд╣рдо рдПрдХ рд▓реЙрдЧ рд▓рд┐рдЦрддреЗ рд╣реИрдВред



рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЖрдкрдХреА рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ sql рдХреНрд╡реЗрд░реА рдмрдирд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, phpmyadmin рдореЗрдВред

CREATE TABLE IF NOT EXISTS `modx_visitors_log` ( `index` int(10) NOT NULL AUTO_INCREMENT, `ip` varchar(15) COLLATE utf8_unicode_ci NOT NULL, `host` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `url` text COLLATE utf8_unicode_ci NOT NULL, `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `referer` text COLLATE utf8_unicode_ci NOT NULL, `browser` varchar(255) NOT NULL, PRIMARY KEY (`index`), KEY `ip` (`ip`,`host`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
      
      





рддрд╛рд▓рд┐рдХрд╛ рддреИрдпрд╛рд░ рд╣реИ, рдЕрдм рд╣рдореЗрдВ рд╡рд┐рдЬрд╝рд┐рдЯ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдиреИрдХреНрд╕ рдФрд░ рдореЙрдбрдХреНрд╕ рдореЗрдВ рдЪрдВрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЖрдорддреМрд░ рдкрд░ рдЕрджреНрдпрддрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ: рдореЙрдбреЗрдХреНрд╕ рдореЗрдВ рдкреНрд▓рдЧрдЗрди, рдЕрдЧрд░ рд╕рд░рд▓ рд╣реИ, рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдХреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдИрд╡реЗрдВрдЯ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЗрдВрдЬрди рдореЗрдВ рдХрд╛рдлреА рдХреБрдЫ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо OnLogPageHit рдЗрд╡реЗрдВрдЯ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред



рдХреЗ рдкрд╛рд╕ рдЬрд╛рдУ

-> ->->







рд╣рдо рдирдП dbLog рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирд╛рдо рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдкреЗрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ:

 /*  */ //        modx_visitors_log $db = '`modx_visitors_log`'; //      IP.    -     $not_log_ip = array('192.168.100.1', '192.168.100.2'); $not_log_user = array('bezumkin'); /*   */ //   $login = $_SESSION['webShortname']; //       .   -   . $ip = $_SERVER['REMOTE_ADDR']; // IP  .    . $host = ''; //    ,  IP .   . $url = $_SERVER['REQUEST_URI']; //  . $referer = urlencode($_SERVER['HTTP_REFERER']); //   ,   . $browser = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']); //  .    browscap,    .     . //    if (!in_array($ip, $not_log_ip) and !in_array($login, $not_log_login)) { $modx->db->query("INSERT INTO $db (`login`, `ip`, `host`, `url`, `referer`,`browser`) VALUES ('$login','$ip','$host', '$url','$referer','$browser')"); }
      
      





рд╕рд┐рд╕реНрдЯрдо рдИрд╡реЗрдВрдЯреНрд╕ рдЯреИрдм рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдФрд░ OnLogPageHit рд╕реЗрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рдЕрдВрдд рдореЗрдВ <? Php рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░?> рдЕрдВрдд рдореЗрдВ ред рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдирд╣реАрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдкреИрдЧрд┐рди рд▓рд┐рдЦрд╛ рдерд╛, рддреЛ рдореИрдВрдиреЗ рдмрд╣реБрдд рдХрд╕рдо рдЦрд╛рдИ рдереАред

рдпрд╣реА рд╣реИ, рдкреНрд▓рдЧрдЗрди рдХреЛ рдЖрдкрдХреЗ рд╕рднреА рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рддрдХ, рдмреЗрд╢рдХ, рдЖрдк рдХрд╣реАрдВ рднреА рдЧрд▓рдд рдереЗ!



рд╡реИрд╕реЗ, OnWebPageComplete рдЗрд╡реЗрдВрдЯ рдкрд░ рдкреНрд▓рдЧрдЗрди рдХреЛ рд▓рдЯрдХрд╛ рджреЗрдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдлрд┐рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ "рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдЬрд╝рд┐рдЯ" рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рд╕рдорд╛рди рдмрдЯрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЧреБрдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛ рд╣реИред рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред



рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЗ рдЖрдИрдкреА рдкрд░ рдкрдВрдЬреАрдХреГрдд рд╣реЛрд╕реНрдЯ рдирд╛рдореЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдФрд░ рд╕реНрдирд┐рдкреЗрдЯ ( Ip2Host ) рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рдордп рдкрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдРрд╕рд╛ рдХреНрдпреЛрдВ? рдпрд╣ рд╕рд░реНрд╡рд░ рдХреА рддрд╛рдХрдд рдХреЛ рдмрдЪрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдореЗрдЬрдмрд╛рди рдХреЛ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд▓реЛрдб рдЧрдВрднреАрд░ рд╣реЛрдЧрд╛ред рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рд░рд╛рдд рдореЗрдВ рджреМрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

 <?php $db = '`modx_visitors_log`'; //   ,    host $sql = $modx->db->query("SELECT `ip` FROM $db WHERE `host` = '' GROUP BY `ip`"); $arr = $modx->db->makeArray($sql); //    foreach ($arr as $v) { $ip = $v['ip']; //   nslookup.     Windows, -,   ,  - -      - . $host = `nslookup "$ip" | grep 'name =' | awk '{print $4}'`; //      - ,    ,        . if (empty($host)) {$host = 'unknown';} //   . $modx->db->query("UPDATE $db SET `host` = '$host' WHERE `ip` = '$ip' AND `host` = '';"); } ?>
      
      





рдЖрдкрдХреЛ рдЕрдЬрдирдмрд┐рдпреЛрдВ рд╕реЗ рдЫрд┐рдкреЗ рдХрд┐рд╕реА рдкреГрд╖реНрда рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

[!Ip2Host!]







рдФрд░ рдЙрд╕рдХреЗ рдХреНрд░реИрдВрдХ рдХреЛ:

10 2 * * * * user wget localhost/secret_page.html









рд╕реНрдЯреЗрдЬ рджреЛред рд╕реНрдХреНрд░реАрди рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рд▓реЙрдЧ рдХрд░реЗрдВред



рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдкрдХреА рдпрд╛рддреНрд░рд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣реИрдВ, рдФрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдПрдХ рдЕрдЪреНрдЫреА рдЕрдиреБрд╕реВрдЪреА рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдкреНрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрди рд╣реВрдВред



рддреЛ рдЪрд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред



рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдмрд╛рдж рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓ рдХрд░реЗрдВрдЧреЗред рдХреЛрдб рдХреЗ рдЕрдВрджрд░ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБред

 <?php /*   */ if (empty($db)) {$db = '`modx_visitors_log`';} //     if (empty($days)) {$days = 14;} // -     if (empty($daysText)) {$daysText = '';} //   -   ,   if (empty($tpl)) {$tpl = 'visitStat.tpl';} //    if (empty($act)) {$act = 'graph';} //   ,   , graph & table if (empty($dateFormat)) {$dateFormat = '%d.%m';} //  ,  strftime() if (empty($int)) {$int = 2;} //      graph.   -  . /*   */ // ,      $cur = time(); $end = date("Ymd"); $start = strftime("%Y-%m-%d", ($cur - ($days * 86400))); //  $sql = $modx->db->query("SELECT DATE(`datetime`) as `date`, COUNT(distinct `ip`) as `host`, COUNT(`ip`) as `hit` FROM $db WHERE DATE(`datetime`) BETWEEN '$start' AND '$end' GROUP BY DATE(`datetime`) ORDER BY `datetime` ASC"); $result = $modx->db->makeArray($sql); //    3  , ,    foreach($result as $v) { $date[] = $v['date']; $host[] = $v['host']; $hit[] = $v['hit']; } //   graph   $int ,    -   $i = 1; foreach ($date as $v) { if ($act == 'graph') { if ($i == $int) { $i = 0; $date2 .= '<th></th>'; } else { $date2 .= '<th>'.strftime($dateFormat, strtotime($v)).'</th>'; } $i++; } else if ($act == 'table') { $date2 .= '<th>'.strftime($dateFormat, strtotime($v)).'</th>'; } } foreach ($host as $v) { $host2 .= '<td>'.$v.'</td>'; } foreach ($hit as $v) { $hit2 .= '<td>'.$v.'</td>'; } $placeholders = array('[+stat.days+]','[+stat.days.text+]','[+stat.date+]','[+stat.host+]','[+stat.hit+]'); $values = array($days, $daysText, $date2, $host2, $hit2); $html = $modx->getChunk($tpl); echo str_replace($placeholders, $values, $html); ?>
      
      





рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рдирд╛рдо рджреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GenerStatGraph , рд╡рд╣рд╛рдВ рдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рд╣реЗрдЬреЗрдВред



рдЕрдм рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдкрдиреА рддреВрдлрд╛рдиреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рдореЗрдВ рджреЛ chunk рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдкрд╣рд▓рд╛, рд╕рд┐рд░реНрдл рдореЗрдЬ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ - рд╕рд╛рдЬрд┐рд╢ рд░рдЪрдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ (tpl.StatTable)ред

 <div style='margin: auto;text-align: center;'> <table id='chart_table'> <caption>     [+stat.days+] [+stat.days.text+]</caption> <thead> <tr><td></td>[+stat.date+]</tr> </thead> <tbody> <tr><th></th>[+stat.host+]</tr> <tr><th></th>[+stat.hit+]</tr> </tbody> </table> </div>
      
      







рдкреНрд▓реЙрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ (tpl.StatGraph)ред

 <link type='text/css' rel='stylesheet' href='[(site_url)]inc/css/visualize.css' /> <script type='text/javascript' src='[(site_url)]inc/js/visualize.jquery.js'></script> <script type='text/javascript'> $(document).ready(function(){ $('#chart').visualize({ type: 'area', width: '570', height: '300' }); }); </script> <div style='margin: auto;'> <table id='chart' style='display: none;'> <caption>     [+stat.days+] [+stat.days.text+]</caption> <thead> <tr><td></td>[+stat.date+]</tr> </thead> <tbody> <tr><th></th>[+stat.host+]</tr> <tr><th></th>[+stat.hit+]</tr> </tbody> </table> </div>
      
      







рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпреЗ рджреЛрдиреЛрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрджреНрднреБрдд jquery jQuery рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝ рдкреНрд▓рдЧрдЗрди рдХреЗ рджреВрд╕рд░реЗ рдХрдиреЗрдХреНрд╢рди рдореЗрдВ рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА рдЗрд╕ рд╢реЗрдбреНрдпреВрд▓ рдХрд╛ рдбрд┐рдЬрд╛рдЗрдиред

рдЧреНрд░рд╛рдл рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб (jquery.visualize рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕рд╛рде рд╣реА рдбрд┐рдЬрд╛рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХреЛ рджреЗрдЦреЗрдВ):

 $(document).ready(function(){ $('#chart').visualize({ type: 'area', width: '570', height: '300' }); });
      
      





рдЙрдлреНрдлреНрдл ... рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫред



рд╕реНрдЯреЗрдЬ 3. рд▓реЙрдиреНрдЪ!



рд╣рдо рдПрдХ рдирдпрд╛ рдореЙрдбреЗрдХреНрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ (рдПрдХ рдЕрд▓рдЧ рдЯреЗрдмрд▓ рдФрд░ рдЧреНрд░рд╛рдлрд╝) рдЪрд▓рд╛рддреЗ рд╣реИрдВред

 [!generateStatGraph? &days=`20` &tpl=`tpl.StatTable` &act=`table` &dateFormat=`%d <i>%b</i>` !] [!generateStatGraph? &days=`20` &daysText=`` &tpl=`tpl.StatGraph` &act=`graph` &dateFormat=`%d` !]
      
      







рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣рд╛рдВ рд╣рдордиреЗ рдХреЗрд╡рд▓ рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЗ рдЕрдирд╛рдо рдЖрдВрдХрдбрд╝реЗ рджрд┐рдЦрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣рдо рдЖрдИрдкреА, рд╡рд┐рдЬрд╝рд┐рдЯ рдХреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕реАрдзреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╕рд╛рдЗрдЯ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕реНрдирд┐рдкреЗрдЯ + рдбрд┐рдЬрд╝рд╛рдЗрди рдЪрдВрдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВред



рдЖрд╡реЗрджрдиред



рдХреМрди рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рд╣реИ - рдЖрдк рдХрд╛рдо рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ , рдЙрд╕реА рд╕рдордп рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╣реИрдмреНрд░рдлреЗрдХреНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реИрд╕реЗ, рдЖрдк рдЙрди рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдЧреИрд░-рдЕрдореНрд▓реАрдп рдЕрдВрддрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореИрдВ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рдиреАрдЪреЗ рд╕реНрдерд┐рдд рдХрд╛рдЙрдВрдЯрд░ рдкрд░ рд▓рд╛рдЗрд╡рдЗрдВрдЯрд░рдиреЗрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИред



GenerateStatGraph рд╕реНрдирд┐рдкреЗрдЯ рд╡рд┐рдХрд▓реНрдк:

рдФрд░ рдбреА.рдмреА.

: `modx_visitors_log`

: [string]

: , (`modx`.`modx_log`).






рдФрд░ рджрд┐рдирд╛рдВрдХ

: '%d %b %Y %H:%M'

: strftime()

: .






рдФрд░ рджрд┐рди

: 14

: [int]

: .






& $ daysText

: ''

: [string]

: - , , .






& tpl

: 'tpl.StatGraph'

: modx

: .






рдФрд░ рдХрд╛рд░реНрдп рдХрд░реЗрдВ

: 'graph'

: graph, table

: . graph .






& int

: 2

: [int]

: &act=`graph`, &int , . - .








EventCalendar рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░:

[+ рд╕реНрдЯреЗрдЯ.рдбреЗ +]







[+ рд╕реНрдЯреЗрдЯ.рдбреЗрд╕реЗрдЯреЗрдХреНрд╕реНрдЯ +]

.





[+ рд╕реНрдЯреЗрдЯ.рдбреЗрдЯ +]

.





[+ рд╕реНрдЯреЗрдЯ.рд╣реЛрд╕реНрдЯ +]

().





[+ рд╕реНрдЯреЗрдЯ.рд╣рд┐рдЯ +]

().









рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред





рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ bezumkin@yandex.ru рдкрд░ рднреЗрдЬреЗрдВ, рдпрд╛ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдВред



All Articles