- Author:
- jarofgreen
- Posted:
- July 28, 2009
- Language:
- Python
- Version:
- 1.0
- Score:
- 4 (after 7 ratings)
Includes the Javascript for Google Analytics. Will not show Google Analytics code when DEBUG is on or to staff users.
Use {% googleanalyticsjs %} in your templates.
You must set something like
GOOGLE_ANALYTICS_CODE = "UA-1234567-1"
in your settings file.
Assumes 'user' in your template variables is request.user, which it will be if you use:
return render_to_response('template.html',{ }, context_instance=RequestContext(request))
(Assuming django.core.context_processors.auth is in TEMPLATE_CONTEXT_PROCESSORS, which it is by default)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | from django import template
import settings
register = template.Library()
class ShowGoogleAnalyticsJS(template.Node):
def render(self, context):
code = getattr(settings, "GOOGLE_ANALYTICS_CODE", False)
if not code:
return "<!-- Goggle Analytics not included because you haven't set the settings.GOOGLE_ANALYTICS_CODE variable! -->"
if 'user' in context and context['user'] and context['user'].is_staff:
return "<!-- Goggle Analytics not included because you are a staff user! -->"
if settings.DEBUG:
return "<!-- Goggle Analytics not included because you are in Debug mode! -->"
return """
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker('""" + str(code) + """');
pageTracker._trackPageview();
} catch(err) {}</script>
"""
def googleanalyticsjs(parser, token):
return ShowGoogleAnalyticsJS()
show_common_data = register.tag(googleanalyticsjs)
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 9 months ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 9 months, 1 week ago
- Serializer factory with Django Rest Framework by julio 1 year, 3 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 4 months ago
- Help text hyperlinks by sa2812 1 year, 5 months ago
Comments
I've done that before to, don't know why I didn't think of it this time :-) Edited to fix. Also returned the google js to it's original form.
#
edited to add note about django.core.context_processors.auth in TEMPLATE_CONTEXT_PROCESSORS
#
This code snippet works great, but I just have to point out the comments when the Analytics code is excluded always says "Goggle" instead of "Google".
#
Was using a context processor and an if block in my base template, this is a much better solution.
#
instead of:
you should use:
That way is someone is using a settings file other than the default your code will use the correct settings file.
#
Please login first before commenting.