Frage

Ich versuche, eine Google News-Sitemap zusätzlich zu einem normalen sitemap.xml zu bauen zu vermeiden zusätzliche numerische Zeichen in meinen URLs setzen zu müssen.

Ich habe die sitemap.xml mit Djangos contrib System bauen und es funktioniert super, aber ich habe Probleme, den Kontext zu dem (nicht überprüft) Patch Bestehen der Rahmen Aktualisierung eines news_sitemap.xml gererate.

Dies ist der Patch I integriert haben: http://code.djangoproject.com/ticket/ 10907 , aber der Zusammenhang ist nicht vorbei. Ich denke, das Problem mit dem Format ist, ich bin mit dem Objekt in meinem views.py zu bauen.

Der Code habe ich ausgeführt:

views.py

from django.template import RequestContext
from django.shortcuts import render_to_response
from basic.blog.models import Post
from pages.models import Page
from datetime import date, datetime
from django.contrib.sitemaps import Sitemap, NewsSitemap

'''Builds the sitemap.xml section for all news posts.'''
class PostSitemap(Sitemap):
    changefreq = "daily"
priority = 0.3
def items(self):
    return Post.objects.published()
def lastmod(self, obj):
    return obj.modified

'''Builds the sitemap.xml section for all main pages.'''
class PageSitemap(Sitemap):
changefreq = "daily"
priority = 0.8
def items(self):
    return Page.objects.filter(status=1)
def lastmod(self, obj):
    return obj.last_modification_date

'''Builds the news_sitemap.xml from blog module.'''
class SiteappNews(Sitemap):
def items(self):
    return Post.objects.published()
def publication_date(self, obj):
    return obj.publish

urls.py

from django.conf.urls.defaults import *
from django.contrib.sitemaps import Sitemap, FlatPageSitemap, NewsSitemap
from siteapp.views import homepage, news_homepage, qc_contact, PostSitemap, PageSitemap, SiteappNews
from basic.blog.feeds import *
from basic.blog.models import Post
from pages.models import Page

''' Enables Django Admin.'''
from django.contrib import admin
admin.autodiscover()

'''Add Feeds functionality.'''
feeds = {
'latest': BlogPostsFeed,
}

'''http://docs.djangoproject.com/en/1.0/ref/contrib/sitemaps/'''
sitemaps = {
'pagesitemap': PageSitemap,
'postsitemap': PostSitemap,
'flatpages': FlatPageSitemap,
}

news_sitemaps = {
'newssitemap': NewsSitemap,
}

urlpatterns = patterns('',
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^admin/(.*)', admin.site.root),
(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
(r'^news_sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': news_sitemaps, 'template': 'news_sitemap.xml'}),

Die Vorlage gibt nur Wrapper. Mir fehlt etwas offensichtlich ich denke, wenn es könnte ein Problem mit dem Patch angewendet werden. Hier ist der relevante Code dafür:

Innerhalb Sitemaps contrib init Py

class NewsSitemap(Sitemap):
# This limit is defined by Google. See the index documentation at
# http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=74288
limit = 1000
def get_url_info(self, item, current_site):
    url_info = super(NewsSitemap, self).get_url_info(item, current_site)
    url_info.update({
        'publication_date': self._get('publication_date', item, None),
        'keywords': self._get('keywords', item, None),
    })
    return url_info
War es hilfreich?

Lösung

Sortierte diese heraus mich nach einem wenig zu graben.

Changed die urls.py Linien an:

news_sitemaps = {
    'newssitemap': SiteappNews,
}

Und änderte den Code in views.py die entsprechenden Google News Felder aus dem benutzerdefinierten Modul zu bauen.

wird Ihre Zukunft Leser (Hallo!) Variieren, aber es wird wie etwas sein:

class SiteappNews(Sitemap):
    def items(self):
        return Post.objects.published()
    def publication_date(self, obj):
        return obj.publish
    def keywords(self, obj):
        return obj.tags

Überprüfen Sie die SQL-Felder für Ihre Modelle Unter in den richtigen Daten für 'Veröffentlichen', 'Tags', etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top