heimrichhannot / contao-social-stats-bundle
This bundle collects data about news entries.
Installs: 98
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 6
Forks: 0
Open Issues: 0
Type:contao-bundle
Requires
- php: ^7.4 || ^8.0
- contao/core-bundle: ^4.9
- contao/news-bundle: ^4.4
- guzzlehttp/guzzle: ^6.0 || ^7.0
- symfony/config: ^4.4 || ^5.4
- symfony/console: ^4.4 || ^5.4
- symfony/dependency-injection: ^4.4 || ^5.4
- symfony/event-dispatcher: ^4.4 || ^5.4
- symfony/http-kernel: ^4.4 || ^5.4
README
This bundle collects data about news entries. Currently it contains a command to update some stats for news articles from some networks.
Features
- following stats are collected:
- Google Analytics: Unique page view
- Facebook: share count
- Matomo: hits
Setup
Requirements
- PHP 7.2 or higher (not tested with 8.0 and higher)
- Contao 4.4 or higher
Additional:
- Google Analytics: Google APIs Client Library for PHP
Install
-
Install with composer or contao manager
composer require heimrichhannot/contao-social-stats-bundle
-
Updated database
php vendor/bin/contao-console contao:migrate
-
Setup a cronjob for SocialStatsCommand (see Usage -> Command for more information)
* */1 * * * php vendor/bin/contao-console huh:socialstats:update
Configuration
Most platforms neeed additions configurtation like access tokens. See configuration reference about what you need.
Usage
Command
Usage:
huh:socialstats:update [options]
Options:
-p, --platforms[=PLATFORMS] Limit to specific platform/network. See help for more information.
-l, --limit=LIMIT Limit the number of news article to update. [default: 20]
-a, --age=AGE Limit the age of articles to be updated to a number of days. 0 means no limit. [default: 0]
--pid=PID Limit the news articles to given archives. 0 means all archives. [default: 0]
--dry-run Don't write anything to the database. API-Calls are still executed.
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-e, --env=ENV The Environment name. [default: "prod"]
--no-debug Switches off debug mode.
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Help:
This command updates the social statistics of your news entries.
Following options are available for platforms option:
fb - Facebook
ga - Google Analytics
ma - Matomo
Work with the values
The values collected by the command are written into the huh_socialstats_values
field of tl_news. You get them as array after a simple \Contao\StringUtil::deserialze($newsItemModel->huh_socialstats_values, true)
. The time of the last update of the stats is written into tl_news.huh_socialstats_last_updated
.
Google Analytics
We use the Google APIs Client Library for PHP to obtain the values. For this to work you need:
- a Google API Console project
- a key file
- a view id
Here you find all informations how to gain these components: https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/web-php
Add custom news routes
By default, the platforms are searched for the default news url (the page you set in the news archive plus an identifier, typical the news alias, see \Contao\News::generateNewsUrl()
). If you output your news on multiple locations or have some custom routing, you can add or change the urls with AddNewsArticleUrlsEvent
use HeimrichHannot\SocialStatsBundle\Event\AddNewsArticleUrlsEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface; class SocialStatsEventSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents() { return [ AddNewsArticleUrlsEvent::class => 'addNewsArticleUrls', ]; } public function addNewsArticleUrls(AddNewsArticleUrlsEvent $event) { $event->addUrl($event->getBaseUrl().'/my_custom_news_article_route/'.$event->getItem()->id); } }
Configuration reference
# Default configuration for extension with alias: "huh_social_stats" huh_social_stats: # Override the auto-determined base url. base_url: null # The start date from which data should be counted. Needed for analytics services like matomo or google analytics. Default values is 2005-01-01 as timestamp. start_date: 1104534000 matomo: # Set the matomo url url: ~ # The matomo authorization token token: ~ facebook: # The facebook app id. app_id: null # The facebook app secret. app_secret: null google_analytics: # View ID view_id: ~ # Relative path to the google analytics keyfile. key_file: files/bundles/huh_social_stats/google_analytics/privatekey.json