--- /dev/null
+package Newslash::Plugin::GoogleAnalytics;
+use Mojo::Base 'Mojolicious::Plugin';
+
+sub register {
+ my ($self, $app, $conf) = @_;
+
+ $self->{conf} = {%$conf, %{$app->config->{Analytics}}};
+ $self->{app} = $app;
+
+ if ($app->config->{TT2Renderer}) {
+ my $tt2r = $app->config->{TT2Renderer}->{self};
+ $tt2r->add_object(Analytics => $self->{conf});
+ }
+
+ $app->helper(google_analytics => sub { state $google_analytics = $self; });
+}
+
+1;
# use Template::Toolkit 2 render
$app->plugin('Newslash::Plugin::TT2Renderer');
+ # use Analytics helper
+ $app->plugin('Newslash::Plugin::GoogleAnalytics');
+
# user AntiCsrf ($app->anti_csrf)
if ($app->mode ne 'test') {
# when test mode, disable AntiCsrf.
--- /dev/null
+[%- IF Analytics && Analytics.tag -%]
+<script async src="https://www.googletagmanager.com/gtag/js?id=[% Analytics.tag %]"></script>
+<script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+
+ gtag('config', '[% Analytics.tag %]');
+</script>
+[%- ELSE -%]
+<!-- no Analytics.tag given -->
+[%- END -%]
<head>
+ [%- IF NS.mojo_mode == "production" %]
+ [% INCLUDE common/analytics %]
+ [%- ELSE %]
+ <!-- running under [% NS.mojo_mode %] mode. -->
+ [%- END %]
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />