2009-08-19 10 views
0

通常のsitemap.xmlに加えて、Googleニュースサイトマップを構築して、URLに数字を追加する必要がないようにしています。Django GoogleニュースSitemap.xml

Djangoのcontribシステムを使用してsitemap.xmlを構築しましたが、うまくいきましたが、news_sitemap.xmlを生成するためにフレームワークを更新する(未確認の)パッチにコンテキストを渡すことができません。

これは私が統合したパッチです:http://code.djangoproject.com/ticket/10907ですが、文脈は合格していません。私は問題が私のviews.pyでオブジェクトを構築するために使用しているフォーマットであると思います。

私が実行しているコード:

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'}), 

テンプレート出力単なるラッパー。明らかに私が思っているものはありませんが、パッチが適用されている問題があるかもしれません。

サイトマップのcontribの内少し掘削した後、このいずれかを整理の.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 

答えて

1

自分自身を初期化:ここではそのための関連するコードです。

はにurls.pyラインを変更:

news_sitemaps = { 
    'newssitemap': SiteappNews, 
} 

とカスタムモジュールから関連するGoogleニュースのフィールドを構築するためにviews.py内のコードを変更しました。

ユアーズ(!ハロー)将来のリーダーを異なりますが、それは何かのようになります:

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 

は、「タグ」「公開」の正しいデータにサブにあなたのモデルのためのあなたのSQLフィールドをチェックし、

関連する問題