From 05d77e7c05ee2652056aee3b9de92f581d6532b3 Mon Sep 17 00:00:00 2001 From: Sam Collins Date: Wed, 1 Mar 2017 00:58:58 +0000 Subject: [PATCH] Added blog sitemap --- config/settings/common.py | 3 ++- config/urls.py | 10 +++++++++- mhackspace/blog/sitemaps.py | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 mhackspace/blog/sitemaps.py diff --git a/config/settings/common.py b/config/settings/common.py index 9472a88..dd0e0da 100644 --- a/config/settings/common.py +++ b/config/settings/common.py @@ -28,7 +28,7 @@ DJANGO_APPS = ( 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', - 'whitenoise.runserver_nostatic', + 'django.contrib.sitemaps', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django.contrib.admin', @@ -41,6 +41,7 @@ THIRD_PARTY_APPS = ( 'allauth.socialaccount.providers.google', # registration 'allauth.socialaccount.providers.github', # registration 'allauth.socialaccount.providers.facebook', # registration + 'whitenoise.runserver_nostatic', 'stdimage', 'rest_framework', 'draceditor', diff --git a/config/urls.py b/config/urls.py index 176f287..98db6ca 100644 --- a/config/urls.py +++ b/config/urls.py @@ -8,6 +8,7 @@ from django.contrib import admin from django.views.generic import TemplateView from django.views import defaults as default_views from django.contrib.auth import views as auth_views +from django.contrib.sitemaps.views import sitemap from rest_framework.routers import DefaultRouter from mhackspace.contact.views import contact @@ -17,6 +18,7 @@ from mhackspace.base.feeds import LatestEntriesFeed from mhackspace.blog.feeds import BlogFeed, BlogCategoryFeed from mhackspace.base.views import markdown_uploader from mhackspace.blog.views import blog, PostViewSet, CategoryViewSet +from mhackspace.blog.sitemaps import PostSitemap, CategorySitemap from mhackspace.feeds.views import FeedViewSet, ArticleViewSet router = DefaultRouter() @@ -25,6 +27,11 @@ router.register(r'categories', CategoryViewSet) router.register(r'feeds', FeedViewSet) router.register(r'articles', ArticleViewSet) +sitemaps = { + 'posts': PostSitemap, + 'category': CategorySitemap, +} + urlpatterns = [ url(r'^$', TemplateView.as_view(template_name='pages/home.html'), name='home'), url(r'^about/$', TemplateView.as_view(template_name='pages/about.html'), name='about'), @@ -44,7 +51,8 @@ urlpatterns = [ url(r'^blog/(?P[0-9A-Za-z_\-]+)/$', blog, name='blog-item'), url(r'^blog/category/(?P[0-9A-Za-z_\-]+)/$', blog, name='blog-category'), url(r'^blog/category/(?P[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category-feed'), - + url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, + name='django.contrib.sitemaps.views.sitemap'), # need to be logged in for these urls url(r'^members/$', MemberListView.as_view(), name='members'), diff --git a/mhackspace/blog/sitemaps.py b/mhackspace/blog/sitemaps.py new file mode 100644 index 0000000..00c25ed --- /dev/null +++ b/mhackspace/blog/sitemaps.py @@ -0,0 +1,19 @@ +from django.contrib.sitemaps import Sitemap +from mhackspace.blog.models import Category, Post + +class PostSitemap(Sitemap): + changefreq = "monthly" + priority = 0.5 + + def items(self): + return Post.objects.filter(active=True, members_only=False) + + def lastmod(self, obj): + return obj.published_date + +class CategorySitemap(Sitemap): + changefreq = "monthly" + priority = 0.7 + + def items(self): + return Category.objects.all()