Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[static_comments] rel=nofollow #305

schlatterbeck opened this issue Apr 14, 2019 · 3 comments

[static_comments] rel=nofollow #305

schlatterbeck opened this issue Apr 14, 2019 · 3 comments


Copy link

@schlatterbeck schlatterbeck commented Apr 14, 2019

Static comments currently render links without a 'rel="nofollow"' stanza in the generated tag.
Wordpress by default uses rel="external nofollow" which I wanted to keep after converting to nikola.
Especially if the commenter specifies an URL we don't want search machines to index those.
I've modified the comment template (see patch below) for the author URL. But for URLs in the text there doesn't seem to be a way to specify nofollow for the generated link. This is probably a shortcoming of the REST compiler or is there a way to specify nofollow for a link that I didn't find yet?


--- templates/jinja/static_comments_helper.tmpl.old     2019-04-14 13:57:43.755064023 +0200
+++ templates/jinja/static_comments_helper.tmpl 2019-04-14 13:58:39.754962650 +0200
@@ -13,7 +13,7 @@
           <a name="comment-{{ }}"></a>
           {%if is not none %}
             {{ messages("{0} wrote on {1}:", lang).format(
-              '<span class="author">' ~ ('<a href="{0}">{1}</a>'.format(comment.author_url|e,|e) if comment.author_url is not none else (|e)) ~ '</span>',
+              '<span class="author">' ~ ('<a href="{0}" rel="external nofollow">{1}</a>'.format(comment.author_url|e,|e) if comment.author_url is not none else (|e)) ~ '</span>',
               '<span class="date">' + comment.formatted_date(date_format) + '</span>'
             ) }}
           {% endif %}
Copy link

@felixfontein felixfontein commented Apr 14, 2019

I guess one has to parse the HTML for this and add rel=nofollow manually. This can probably be done similarly to link rewriting (absolute -> relative) in Nikola itself.

Copy link

@schlatterbeck schlatterbeck commented Apr 15, 2019

Can you point me to the relevant code in Nikola? Then I would try to come up with a patch.
That said: Wouldn't it be better to add additional annotations to the link specification in REST, e.g we have the image tag:

.. image:: magnetic-balls.jpg
:width: 40pt

similar to this we could add properties to a link

Nikola_ is linked here

.. _Nikola:
:rel: external nofollow

I don't know if this is syntactically possible. It seems that Sphinx has added support for nofollow in some recent release according to the release announcement, I've not looked into the code, though. So maybe it's possible to reuse the syntax they use, provided it makes sense in other contexts?

Copy link

@felixfontein felixfontein commented Apr 15, 2019

Adding something in ReST won't solve the problem for other compilers, and you still have to modify all comments manually. It's better to let the plugin do this automatically.

For how to modify HTML, see (the is_fragment branch is the relevant part). You can probably iterate over all links similar to here:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants