diff --git a/fet2020/fet2020/settings.py b/fet2020/fet2020/settings.py index cd01424c..3d5eae0d 100644 --- a/fet2020/fet2020/settings.py +++ b/fet2020/fet2020/settings.py @@ -66,6 +66,7 @@ INSTALLED_APPS = [ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + "django.contrib.sitemaps", "taggit", "ckeditor", "ckeditor_uploader", diff --git a/fet2020/fet2020/sitemaps.py b/fet2020/fet2020/sitemaps.py new file mode 100644 index 00000000..e76e6507 --- /dev/null +++ b/fet2020/fet2020/sitemaps.py @@ -0,0 +1,19 @@ +from django.contrib.sitemaps import Sitemap +from posts.models import Post + + +class PostSitemap(Sitemap): + changefreq = "daily" + priority = 1 + + def items(self): + return Post.objects.filter(is_hidden=False) + + def lastmod(self, obj): + return obj.date_modified + + def location(self, obj): + return f"/posts/{obj.slug}" + + +sitemaps = {"posts": PostSitemap()} diff --git a/fet2020/fet2020/urls.py b/fet2020/fet2020/urls.py index 8e1c6653..eebbe1ef 100644 --- a/fet2020/fet2020/urls.py +++ b/fet2020/fet2020/urls.py @@ -3,6 +3,7 @@ from django.urls import path, include from django.conf.urls.static import static from django.conf import settings from django.views.generic import RedirectView +from django.contrib.sitemaps.views import sitemap from . import views from posts.viewsets import PostViewSet from members.urls import member_urlpatterns, jobs_urlpatterns @@ -13,7 +14,7 @@ from members.viewsets import ( JobMemberViewSet, ) from rest_framework import routers - +from .sitemaps import sitemaps router = routers.DefaultRouter() router.register(r"posts", PostViewSet) router.register(r"members", MemberViewSet) @@ -36,4 +37,5 @@ urlpatterns = [ path("member/", include(member_urlpatterns), name="member"), path("blackboard/", include("blackboard.urls"), name="blackboard"), path("tasks/", include("tasks.urls"), name="tasks"), + path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap') ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)