Опубликовано: 6 октября 20196 г В приложение links статистика ведётся не по количеству просмотров записи, а по количеству переходов по ссылкам.Вот пример такого у вас на форуме (также стоит это приложение) - http://ipbskins.ru/forum/links/link/159-palermo-club/ Захотелось изменить это, вместо статистики по количеству переходов по ссылкам, поставить по количеству просмотров записи.Залез в файл classLinks.php, но так и не понял где и что поменять. Не подскажите? Вот файл прилагаю:classLinks.zip
Опубликовано: 7 октября 20196 г Автор А просмотры у данного приложения вообще есть?В том то и дело что их нет, судя по этому файлу. А нельзя их подключить?
Опубликовано: 7 октября 20196 г Автор Нужно все приложение смотретьВот всё приложение:IP Links 3.2.2.zip
Опубликовано: 8 октября 20196 г 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 ); Дальше правите шаблоны, где нужно добавить просмотры
Опубликовано: 8 октября 20196 г Автор 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 ); Дальше правите шаблоны, где нужно добавить просмотрыСпасибо, то что надо! Да, ещё бы добавить в категории, подсчитывающее количество всех просмотров.
Опубликовано: 8 октября 20196 г Да, ещё бы добавить в категории, подсчитывающее количество всех просмотров.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'] );
Опубликовано: 8 октября 20196 г Автор @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 я совешено не трогал.В чём может быть проблема?
Опубликовано: 8 октября 20196 г Автор Кстати по теме: А как ещё добавить в общую статистику на главной странице приложения, что бы показывало общее количество просмотров?Добавил в шаблон - {$stats[ 'total_views' ]}Не помогает, показывает 0.
Опубликовано: 9 октября 20196 г Я тут вспомнил, что в 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' ] );
Опубликовано: 9 октября 20196 г Автор Я тут вспомнил, что в 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
Опубликовано: 9 октября 20196 г Добавил. Всё также выдаёт 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
Опубликовано: 9 октября 20196 г Автор Пропустил вчера одну правку.Выше она есть. Чтобы не искать, тут продублируюВот теперь всё нормально. Это вообще от приложения games, а не от links Вообще у меня приложение games дублировано от приложения links. На links такая же ошибка.
Опубликовано: 9 октября 20196 г Вообще у меня приложение 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§ion=categories&do=view&cid=' . $cat[ 'category_id' ] ); }
Опубликовано: 9 октября 20196 г Автор Добавьте в 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
В приложение links статистика ведётся не по количеству просмотров записи, а по количеству переходов по ссылкам.
Вот пример такого у вас на форуме (также стоит это приложение) - http://ipbskins.ru/forum/links/link/159-palermo-club/
Захотелось изменить это, вместо статистики по количеству переходов по ссылкам, поставить по количеству просмотров записи.
Залез в файл classLinks.php, но так и не понял где и что поменять.
Не подскажите? Вот файл прилагаю:
classLinks.zip