Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Haktar

Вместо переходов просмотры в статистике

Recommended Posts

В приложение links статистика ведётся не по количеству просмотров записи, а по количеству переходов по ссылкам.

Вот пример такого у вас на форуме (также стоит это приложение) - http://ipbskins.ru/forum/links/link/159-palermo-club/

 

Захотелось изменить это, вместо статистики по количеству переходов по ссылкам, поставить по количеству просмотров записи.

Залез в файл classLinks.php, но так и не понял где и что поменять.

 

Не подскажите? Вот файл прилагаю:

classLinks.zip

Share this post


Link to post
Share on other sites

А просмотры у данного приложения вообще есть?

Share this post


Link to post
Share on other sites

А просмотры у данного приложения вообще есть?

В том то и дело что их нет, судя по этому файлу. А нельзя их подключить?

Share this post


Link to post
Share on other sites

Нужно все приложение смотреть

Share this post


Link to post
Share on other sites

Нужно все приложение смотреть

Вот всё приложение:

IP Links 3.2.2.zip

Share this post


Link to post
Share on other sites

1. Выполнить sql-запрос

ALTER TABLE links ADD link_views INT(10) NOT NULL DEFAULT '0';

2. В admin/applications_addon/other/links/modules_public/links/links.php после

		$this->registry->output->addCanonicalTag( "links/link/{$link['link']['link_id']}-{$link['link']['link_seo_title']}/".$showlink, $link['link']['link_seo_title'], 'showlink' );

добавить

		$this->DB->update( 'links', 'link_views=link_views+1', "link_id={$link['link']['link_id']}", true, true );

Дальше правите шаблоны, где нужно добавить просмотры

  • Upvote 2

Share this post


Link to post
Share on other sites

1. Выполнить sql-запрос

ALTER TABLE links ADD link_views INT(10) NOT NULL DEFAULT '0';

2. В admin/applications_addon/other/links/modules_public/links/links.php после

		$this->registry->output->addCanonicalTag( "links/link/{$link['link']['link_id']}-{$link['link']['link_seo_title']}/".$showlink, $link['link']['link_seo_title'], 'showlink' );

добавить

		$this->DB->update( 'links', 'link_views=link_views+1', "link_id={$link['link']['link_id']}", true, true );

Дальше правите шаблоны, где нужно добавить просмотры

Спасибо, то что надо!

 

Да, ещё бы добавить в категории, подсчитывающее количество всех просмотров.

Share this post


Link to post
Share on other sites

Да, ещё бы добавить в категории, подсчитывающее количество всех просмотров.

1. Выполнить sql-запрос

ALTER TABLE links_cats ADD category_total_views MEDIUMINT(8) NOT NULL DEFAULT '0';

 

2. В admin/applications_addon/other/links/sources/classLinks.php

- Найти

SUM( link_hits ) AS totalHits,

заменить на

SUM( link_hits ) AS totalHits, SUM( link_views ) AS totalViews,

 

- Найти

			$totalHits			= ( $stats[ 'totalHits' ] ) ? $stats[ 'totalHits' ] : 0;

После добавить

			$totalViews			= ( $stats[ 'totalViews' ] ) ? $stats[ 'totalViews' ] : 0;

- Найти

'category_total_hits' => $totalHits,

Заменить на

'category_total_hits' => $totalHits, 'category_total_views' => $totalViews,

 

3. Для кешевой статистики

 

- Найти

										'total_hits'				=>	0,

Ниже добавить

										'total_views'				=>	0,

- Найти

		$this->DB->build(	array(	'select'	=>	'link_approved, link_hits, link_comments',

заменить на

		$this->DB->build(	array(	'select'	=>	'link_approved, link_hits, link_comments, link_views',

- Найти

				$stats[ 'totalHits' ] += $row[ 'link_hits' ];

Ниже добавить

				$stats[ 'totalViews' ] += $row[ 'link_views' ];

- Найти

		$cache[ 'total_hits' ]			=	( $stats[ 'totalHits' ]	)			?	$stats[ 'totalHits' ]			:	0;

Ниже добавить

		$cache[ 'total_views' ]			=	( $stats[ 'totalViews' ]	)			?	$stats[ 'totalViews' ]			:	0;

 

 

Дальше правите шаблоны, где нужно добавить просмотры

Есть НО. Обновляться счетчик будет при вызове метода resyncCategory(), что делается при определенных действиях.

Как вариант, вызывать метод в нужных местах. Но каждый раз дергать метод накладно. Лучше использовать кеш

 

4. В этот же файл добавить

	public function updateCategoryViews($catId)
{
	if ( $this->getCategory( intval( $catId ) ) )
	{
		$cache = $this->cache->getCache('links_views_updates');

		if ( !isset($cache[$catId]) or ( $cache[$catId] < ( time() - 10 * 60) ) )
		{
			$cache[$catId] = time();

			$this->cache->setCache( 'links_views_updates', $cache, array( 'donow' => 1, 'array' => 1 ) );

			$this->resyncCategory( $catId );
		}			
	}
}

Устанавливаем на 10 минут.

5. Обновление статистики при просмотре категории

admin/applications_addon/other/links/modules_public/links/categories.php

Найти

$this->registry->output->addCanonicalTag( "links/category/{$category['category_id']}-{$category['category_seo_title']}/".$cats, $category['category_seo_title'], 'cats' );

Ниже добавить

		$this->links->updateCategoryViews( $category['category_id'] );

  • Upvote 1

Share this post


Link to post
Share on other sites

@newbie,

Отлично, всё работает. Большое спасибо!

 

Кстати, что бы не открывать новую тему, в этом же приложение выбивает в ошибку модуль Жалоб, вот что пишет:

Warning: require_once(/extensions/reportPlugins/links.php): failed to open stream: Нет такого файла или каталога in адрес к файлу/admin/sources/base/core.php on line 1238

 

Fatal error: require_once(): Failed opening required '/extensions/reportPlugins/links.php' (include_path='.:адрес к файлу/ips_kernel/') in адрес к файлу/admin/sources/base/core.php on line 1238

 

Причём links.php в директории reportPlugins я совешено не трогал.

В чём может быть проблема?

Share this post


Link to post
Share on other sites

Кстати по теме: А как ещё добавить в общую статистику на главной странице приложения, что бы показывало общее количество просмотров?

Добавил в шаблон - {$stats[ 'total_views' ]}

Не помогает, показывает 0.

Share this post


Link to post
Share on other sites

Я тут вспомнил, что в 3-ке можно в АЦ создавать задачи.

Можно сделать, чтобы в категории не заходить.

Установить

task.xml

Загрузить

admin/applications_addon/other/links/tasks/resync.php

 

В чём может быть проблема?

Выполните sql-запрос
UPDATE rc_classes SET app = 'links' WHERE my_class='links';

Добавил в шаблон - {$stats[ 'total_views' ]}

Не помогает, показывает 0.

admin/applications_addon/other/links/modules_public/links/categories.php

После

 		$stats[ 'total_hidden' ]			=	$this->registry->class_localization->formatNumber( $stats[ 'total_hidden' ] );

добавить

		$stats[ 'total_views' ]			=	$this->registry->class_localization->formatNumber( $stats[ 'total_views' ] );

  • Upvote 1

Share this post


Link to post
Share on other sites

Я тут вспомнил, что в 3-ке можно в АЦ создавать задачи.

Можно сделать, чтобы в категории не заходить.

Установить

Отлично, установил. Работает. Большое спасибо.

 

admin/applications_addon/other/links/modules_public/links/categories.php

После

Добавил. Всё также выдаёт 0.

 

Выполните sql-запрос

Выполнил. Ошибке нет. Но появилась другая ошибка/ При заходе на страницу жалоб на форуме, выдаёт такое:

Fatal error: Call to undefined method games_plugin::giveSectionLinkTitle() in адрес к файлу/admin/applications/core/modules_public/reports/reports.php on line 258

Share this post


Link to post
Share on other sites

Добавил. Всё также выдаёт 0.

Пропустил вчера одну правку.

Выше она есть. Чтобы не искать, тут продублирую

- Найти

        $this->DB->build(   array(  'select'    =>  'link_approved, link_hits, link_comments',

заменить на

        $this->DB->build(   array(  'select'    =>  'link_approved, link_hits, link_comments, link_views',

Нужно будет еще перекешировать данные. Либо синхронизировать категории, либо запустить задачу.

Выполнил. Ошибке нет. Но появилась другая ошибка/ При заходе на страницу жалоб на форуме, выдаёт такое:

Fatal error: Call to undefined method games_plugin::giveSectionLinkTitle() in адрес к файлу/admin/applications/core/modules_public/reports/reports.php on line 258

Это вообще от приложения games, а не от links
  • Upvote 1

Share this post


Link to post
Share on other sites

Пропустил вчера одну правку.

Выше она есть. Чтобы не искать, тут продублирую

Вот теперь всё нормально.

 

Это вообще от приложения games, а не от links

Вообще у меня приложение games дублировано от приложения links. На links такая же ошибка.

Share this post


Link to post
Share on other sites

Вообще у меня приложение games дублировано от приложения links.

Что значит дублировано?

В Links в плагине жалоб есть метод giveSectionLinkTitle(), а в Games - нет (скачал отсюда и посмотрел).

Добавьте в admin/applications_addon/other/games/extensions/reportPlugins/games.php

	/**
 * Get section & link
 *
 * @param		array		$reportData		Report data
 * @return	array
 * @access	public
 */	
public function giveSectionLinkTitle( $reportData )
{
	$game = $this->games->getGame( $reportData[ 'exdat1' ], false );
	$cat	=	$this->games->getCategory( $game[ 'game_category_id' ] );

	return array( 'title'	=> $cat[ 'category_title' ], 'url' => '/index.php?app=games&module=games&section=categories&do=view&cid=' . $cat[ 'category_id' ] );
}

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...