diff --git a/config/settings.py b/config/settings.py index 85d357c..2fbb948 100644 --- a/config/settings.py +++ b/config/settings.py @@ -37,6 +37,7 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'django.contrib.sitemaps', 'imagekit', 'django_cleanup', 'gallery' diff --git a/config/urls.py b/config/urls.py index 4cfe859..84cde86 100644 --- a/config/urls.py +++ b/config/urls.py @@ -1,10 +1,18 @@ from django.conf import settings from django.conf.urls.static import static from django.contrib import admin +from django.contrib.sitemaps.views import sitemap from django.urls import include, path from django.views.generic import RedirectView +from gallery.sitemaps import AlbumSitemap + +sitemaps = { + 'albums': AlbumSitemap, +} + urlpatterns = [ + path("sitemap.xml", sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'), path('admin/', admin.site.urls), path('favicon.ico/', RedirectView.as_view(url='/static/favicon.ico', permanent=True)), path('', include(('gallery.urls', 'gallery'), namespace='gallery')), @@ -15,3 +23,6 @@ if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + + + diff --git a/gallery/sitemaps.py b/gallery/sitemaps.py new file mode 100644 index 0000000..cf2e3a9 --- /dev/null +++ b/gallery/sitemaps.py @@ -0,0 +1,18 @@ +from django.contrib.sitemaps import Sitemap +from django.urls import reverse + +from .models import Album + + +class AlbumSitemap(Sitemap): + changefreq = "monthly" + priority = 0.8 + + def items(self): + return Album.objects.filter(is_public=True) + + def lastmod(self, obj): + return obj.album_date + + def location(self, obj): + return reverse('gallery:album_url', kwargs={'album_slug': obj.slug}) \ No newline at end of file