add: динамическое создание sitemap.xml
This commit is contained in:
14
etpgrf_site/blog/sitemaps.py
Normal file
14
etpgrf_site/blog/sitemaps.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from django.contrib.sitemaps import Sitemap
|
||||
from .models import Post
|
||||
|
||||
class PostSitemap(Sitemap):
|
||||
changefreq = "weekly" # Как часто меняются страницы
|
||||
priority = 0.9 # Приоритет (от 0.0 до 1.0)
|
||||
|
||||
def items(self):
|
||||
"""Возвращает все опубликованные посты и страницы."""
|
||||
return Post.objects.filter(is_published=True)
|
||||
|
||||
def lastmod(self, obj):
|
||||
"""Возвращает дату последнего изменения."""
|
||||
return obj.published_at # Или можно добавить поле updated_at
|
||||
@@ -34,6 +34,7 @@ INSTALLED_APPS = [
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'django.contrib.sitemaps', # Sitemap
|
||||
'typograph', # Основное приложение типографа
|
||||
'blog', # Приложение для блога и страниц
|
||||
]
|
||||
|
||||
@@ -2,19 +2,26 @@ from django.contrib import admin
|
||||
from django.urls import path, include
|
||||
from django.conf import settings
|
||||
from django.conf.urls.static import static
|
||||
from blog import views as blog_views # Импортируем views из приложения blog
|
||||
from blog.models import PostType # Для использования в корневом urls.py
|
||||
from django.contrib.sitemaps.views import sitemap # Импортируем view для sitemap
|
||||
from blog import views as blog_views
|
||||
from blog.sitemaps import PostSitemap # Импортируем наш класс Sitemap
|
||||
|
||||
# Словарь с картами сайта
|
||||
sitemaps = {
|
||||
'posts': PostSitemap,
|
||||
}
|
||||
|
||||
urlpatterns = [
|
||||
path('adm-in/', admin.site.urls),
|
||||
path('', include('typograph.urls')), # Основное приложение типографа
|
||||
path('', include('typograph.urls')),
|
||||
|
||||
# Блог
|
||||
path('blog/', include('blog.urls')),
|
||||
|
||||
# Статические страницы (ловушка в самом конце, чтобы не перехватывать другие URL)
|
||||
# Исключаем слаги, которые могут конфликтовать с другими URL-ами
|
||||
# Например, 'admin', 'blog', 'static', 'media'
|
||||
# Sitemap.xml
|
||||
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
|
||||
|
||||
# Статические страницы (ловушка в самом конце)
|
||||
path('<slug:slug>/', blog_views.page_detail, name='page_detail'),
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user