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
Would be cool to add possibility to generate these tags.
--
Ticket URL: <https://code.djangoproject.com/ticket/27395>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* status: new => assigned
* needs_better_patch: => 0
* owner: nobody => wsterzik
* needs_tests: => 0
* needs_docs: => 0
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:1>
* owner: wsterzik => (none)
* status: assigned => new
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:2>
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Comment:
Is the idea to add something like a template tag that generates something
like:
{{{
<link rel="alternate"
hreflang="fr"
href="https://docs.djangoproject.com/fr/1.10/ref/">
....
<link rel="alternate"
hreflang="el"
href="https://docs.djangoproject.com/el/1.10/ref/">
<link rel="alternate"
hreflang="x-default"
href="https://docs.djangoproject.com/en/1.10/ref/">
<link rel="alternate"
hreflang="en"
href="https://docs
.djangoproject.com/en/1.10/ref/">
}}}
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?
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:1>
Comment (by Hovi):
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.
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:2>
* stage: Unreviewed => Accepted
Comment:
What are those changes? Are you able to offer a patch?
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:3>
* Attachment "sitemap_hreflang.diff" added.
Patch
Comment (by Hovi):
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.
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:4>
Old description:
> 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
>
> Would be cool to add possibility to generate these tags.
New description:
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.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:5>
* Attachment "sitemap_hreflang.diff" added.
Path
Comment (by Nick Mavrakis):
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.
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:6>
Comment (by Tim Graham):
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.
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:7>
Comment (by Hendy Irawan):
+1 for this :) I also need such functionality
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:8>
* cc: Hendy Irawan (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:9>
Comment (by Hendy Irawan):
Temporary workaround: https://github.com/barseghyanartur/django-qartez
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()
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:10>
Comment (by Pierre Sassoulas):
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.
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:11>
Comment (by Hendy Irawan):
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.
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:12>
* owner: nobody => Florian Demmer
* status: new => assigned
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:13>
* has_patch: 0 => 1
Comment:
[https://github.com/django/django/pull/11937 PR]
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:14>
* needs_better_patch: 0 => 1
* needs_tests: 0 => 1
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:15>
* needs_better_patch: 1 => 0
* needs_tests: 1 => 0
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:16>
* needs_better_patch: 0 => 1
Comment:
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.
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:17>
* needs_better_patch: 1 => 0
Comment:
Pushed more recommended changes after review by David Smith; please
consider merge again :)
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:18>
* stage: Accepted => Ready for checkin
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:19>
Comment (by Carlton Gibson <carlton@…>):
In [changeset:"50e1ccbbea4c6f8e14a186149dd757483f0f0da5" 50e1ccbb]:
{{{
#!CommitTicketReference repository=""
revision="50e1ccbbea4c6f8e14a186149dd757483f0f0da5"
Refs #27395 -- Added XML namespace declaration to sitemap template.
As per Google recommendations:
https://support.google.com/webmasters/answer/189077?hl=en
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:20>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"16218c20606d8cd89c5393970c83da04598a3e04" 16218c20]:
{{{
#!CommitTicketReference repository=""
revision="16218c20606d8cd89c5393970c83da04598a3e04"
Fixed #27395 -- Added sitemap 'alternates' generation.
Updated the sitemap generator and default template to optionally
include link elements with hreflang attribute to alternate language
URLs.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/27395#comment:21>