Улучшаем встроенную статистику Joomla 1.0

  • Среда, 04 января 2006

Как известно в Joomla имеется встроенная статистика посещений сайта. Однако статистика по браузерам оставляет желать лучшего: слишком часто встречаются неизвестные браузеры. Румамбер SergeR предложил хак для улучшения качества определения типов браузеров во встроенной статистике Joomla.

Установка данного хака никак не повлияет на уже имеющуюся статистику, потому что Joomla сохраняет в базу данных не само значение USER_AGENT, а текстовые строки с названиями браузеров. Однако вся последующая статистика по браузерам, будет содержать значительно меньше неизвестных браузеров.

  1. Загружаем архив с библиотекой phpSniff 2.1.4 (7.4kb)
  2. Извлекаем из архива файл phpSniff.class.php и копируем его в дирекорию includes/
  3. В файле includes/agent_browser.php находим код:
    $browsersAlias = array (
    
    и заменяем его на:
    $browsersAlias = array (
    'msie' => 'Microsoft Internet Explorer',
    'netscape' => 'netscape'
    
  4. В файле includes/joomla.php находим функцию mosGetBrowser:
    function mosGetBrowser( $agent ) {
    	require( 'includes/agent_browser.php' );
    
    	if (preg_match( "/msie[\/\sa-z]*([\d\.]*)/i", $agent, $m )
    	&& !preg_match( "/webtv/i", $agent )
    	&& !preg_match( "/omniweb/i", $agent )
    	&& !preg_match( "/opera/i", $agent )) {
    		// IE
    		return "MS Internet Explorer $m[1]";
    	} else if (preg_match( "/netscape.?\/([\d\.]*)/i", $agent, $m )) {
    		// Netscape 6.x, 7.x ...
    		return "Netscape $m[1]";
    	} else if (preg_match("/mozilla[\/\sa-z]*([\d\.]*)/i", $agent, $m)
    	&& !preg_match( "/gecko/i", $agent )
    	&& !preg_match( "/compatible/i", $agent )
    	&& !preg_match( "/opera/i", $agent )
    	&& !preg_match( "/galeon/i", $agent )
    	&& !preg_match( "/safari/i", $agent )) {
    		// Netscape 3.x, 4.x ...
    		return "Netscape $m[1]";
    	} else {
    		// Other
    		$found = false;
    		foreach ($browserSearchOrder as $key) {
    			if (preg_match( "/$key.?\/([\d\.]*)/i", $agent, $m )) {
    				$name = "$browsersAlias[$key] $m[1]";
    				return $name;
    				break;
    			}
    		}
    	}
    
    	return 'Unknown';
    }
    
    и замените ее следующим кодом:
    function mosGetBrowser( $agent ) {
    	require( 'includes/agent_browser.php' );
    	require_once('includes/phpSniff.class.php');
    
    	$client = new phpSniff($agent);
    	$client_long_name = $client->property('long_name');
    
    	if (array_key_exists($client_long_name, $browsersAlias)){
    		$name = $browsersAlias[$client_long_name];
    	} else {
    		$name = $client_long_name;
    	}
    	$name .= ' ' . $client->property('version');
    	return($name);
    }
    

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Логотип Joomla

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Свернуть

Коротко о главном в Joomla

Новости портала

Новое в блогах

Видео

Форум о Joomla