Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Trotor

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

Рекомендованные сообщения

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

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

 

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

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

 

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

classLinks.zip

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

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

IP Links 3.2.2.zip

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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 );

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

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

 

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

Поделиться сообщением


Ссылка на сообщение

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

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

Поделиться сообщением


Ссылка на сообщение

@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 я совешено не трогал.

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

Поделиться сообщением


Ссылка на сообщение

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

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

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

Поделиться сообщением


Ссылка на сообщение

Я тут вспомнил, что в 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

Поделиться сообщением


Ссылка на сообщение

Я тут вспомнил, что в 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

Поделиться сообщением


Ссылка на сообщение

Добавил. Всё также выдаёт 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

Поделиться сообщением


Ссылка на сообщение

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

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение

Вообще у меня приложение 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

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...