Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

В приложение 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 );

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

Опубликовано:
  • Автор

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

Опубликовано:
  • Автор

@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' ] );

Опубликовано:
  • Автор

Я тут вспомнил, что в 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
Опубликовано:
  • Автор

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

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

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

 

Это вообще от приложения 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' ] );
}

Опубликовано:
  • Автор

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

Добавил. Появилось такое:

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

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.