This filter add extra attribute rel="nofollow" to any "<a ..." element in the value, which does not contain it already. I use this to filter comments text in my blog.
1 2 3 4 5 6 7 8 9 10 11 12 | from django.template import Library
import re
register = Library()
r_nofollow = re.compile('<a (?![^>]*nofollow)')
s_nofollow = '<a rel="nofollow" '
def nofollow(value):
return r_nofollow.sub(s_nofollow, value)
register.filter(nofollow)
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 11 months, 2 weeks ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 11 months, 3 weeks ago
- Serializer factory with Django Rest Framework by julio 1 year, 6 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 7 months ago
- Help text hyperlinks by sa2812 1 year, 7 months ago
Comments
You can use also jQuery like:
$(".comment a").attr({rel: "nofollow"});
to add rel="nofollow" attribute to all a within class .comment
#
@polarbear
This would not work. I doubt that Google interprets JavaScript to check if it may or may not contribute the current sites pagerank to a link.
#
One small issue with this is that the regex doesn't match when you just add the text "nofollow" somewhere in one of the links being tested e.g: an href with a fragment-identifier like so: "blah.com#nofollow"
The following regex prevents bypassing the filter in this way
#
building on
muffinresearch
's regex:This matches only internal links. (hopefully)
#
Please login first before commenting.