Opened 8 years ago
Closed 4 years ago
#27395 closed New feature (fixed)
Allow generating '<link rel="alternate ... hreflang=...>" for sitemaps'
Reported by: | Hovi | Owned by: | Florian Demmer |
---|---|---|---|
Component: | contrib.sitemaps | Version: | 1.10 |
Severity: | Normal | Keywords: | |
Cc: | Hendy Irawan | Triage Stage: | Ready for checkin |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Hello,
django sitemap supports i18n field, that enables generating language-aware sitemaps, here is doc:
https://docs.djangoproject.com/en/1.10/ref/contrib/sitemaps/#django.contrib.sitemaps.Sitemap.i18n
Problem is, that it generates them just as each url separately with no relations. One of google recommendations is to mark same content in different languages using sitemap with xhtml:link element:
https://support.google.com/webmasters/answer/189077
https://support.google.com/webmasters/answer/2620865
Would be cool to add possibility to generate these tags.
Attachments (1)
Change History (22)
comment:1 by , 8 years ago
comment:2 by , 8 years ago
Both ways actually make sense (in html page and sitemap) and code generating it in both cases would be very similar, but to answer your original question - this involves changes to sitemap itself yes.
comment:3 by , 8 years ago
Summary: | Django sitemap and i18n → Allow generating '<link rel="alternate ... hreflang=...>" for sitemaps' |
---|---|
Triage Stage: | Unreviewed → Accepted |
What are those changes? Are you able to offer a patch?
comment:4 by , 8 years ago
I included simple patch to demonstrate what would require changing, by no means it's supposed to be final. There may be a little more work to avoid duplicities, but it does pretty much everything necessary.
comment:5 by , 8 years ago
Description: | modified (diff) |
---|
comment:6 by , 8 years ago
Based on Hovi
's suggestion I have created a branch (https://github.com/manikos/django/commit/5af8551eb025e561c9674032706ff0078eabe2b3) about this.
How may I proceed on this?
I would really like to see this as a built-in in Django.
Until now, I have created a custom template tag
in my project which produces Google's <link rel="alternate" hreflang="..." ...>
elements. I have submitted my sitemap to Google and it has successfully verified.
comment:7 by , 8 years ago
If you could find another sitemaps user to validate that the design makes sense, the next step would be to add tests and documentation, then send a pull request.
comment:9 by , 7 years ago
Cc: | added |
---|
comment:10 by , 7 years ago
Temporary workaround: https://github.com/barseghyanartur/django-qartez (didn't work in Django 1.11 and Python 3)
My fork has been tested working in Django 1.11 and Python 3.6: https://github.com/ceefour/django-qartez/tree/patch-1
It uses this usage pattern:
class ArticleSitemap(RelAlternateHreflangSitemap): # If you want to serve the links on HTTPS. protocol = 'https' def alternate_hreflangs(self, obj): return [('en-us', obj.alternative_object_url),] def items(self): return FooItem._default_manager.all()
comment:11 by , 7 years ago
Hello,
There is django-hreflang
that seem to do it properly. I just adapted it for django 2.0. Maybe we could integrate some or all of its functionality directly into django ?
There is a lot of way to use it, see https://bitbucket.org/mverleg/django_hreflang/src/master/
But I think if its intregrated in django is should be used like this :
Add django.(...).AddHreflangToResponse
to MIDDLEWARE_CLASSES
Then in template :
{% load hreflang %} <head> {% hreflang_tags %} </head>
Hope this help.
comment:12 by , 7 years ago
Now there are at least 3 methods to solve this problem.
I hope contrib.sitemaps is improved soon. @Tim Graham, there are now 3 sitemaps users here that need this functionality.
So the need is valid.
comment:13 by , 5 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:15 by , 5 years ago
Needs tests: | set |
---|---|
Patch needs improvement: | set |
comment:16 by , 5 years ago
Needs tests: | unset |
---|---|
Patch needs improvement: | unset |
comment:17 by , 5 years ago
Patch needs improvement: | set |
---|
From discussion on the PR: a few new attributes are suggested that control the alternates rendering. One more is needed, probably alternates
, defaulting to False
than would enable the opting-in to the new features. (Existing sitemaps would be unchanged until folks turned on the flags.)
Other than that, PR looks pretty good.
comment:18 by , 4 years ago
Patch needs improvement: | unset |
---|
Pushed more recommended changes after review by David Smith; please consider merge again :)
comment:19 by , 4 years ago
Triage Stage: | Accepted → Ready for checkin |
---|
Is the idea to add something like a template tag that generates something like:
for use on a webpage? (If so, I'm not familiar enough with sitemaps code to say whether or not it's feasible.) Or does this involve some change to the sitemap itself?