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.sessions',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
|
'django.contrib.sitemaps', # Sitemap
|
||||||
'typograph', # Основное приложение типографа
|
'typograph', # Основное приложение типографа
|
||||||
'blog', # Приложение для блога и страниц
|
'blog', # Приложение для блога и страниц
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -2,19 +2,26 @@ from django.contrib import admin
|
|||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from blog import views as blog_views # Импортируем views из приложения blog
|
from django.contrib.sitemaps.views import sitemap # Импортируем view для sitemap
|
||||||
from blog.models import PostType # Для использования в корневом urls.py
|
from blog import views as blog_views
|
||||||
|
from blog.sitemaps import PostSitemap # Импортируем наш класс Sitemap
|
||||||
|
|
||||||
|
# Словарь с картами сайта
|
||||||
|
sitemaps = {
|
||||||
|
'posts': PostSitemap,
|
||||||
|
}
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('adm-in/', admin.site.urls),
|
path('adm-in/', admin.site.urls),
|
||||||
path('', include('typograph.urls')), # Основное приложение типографа
|
path('', include('typograph.urls')),
|
||||||
|
|
||||||
# Блог
|
# Блог
|
||||||
path('blog/', include('blog.urls')),
|
path('blog/', include('blog.urls')),
|
||||||
|
|
||||||
# Статические страницы (ловушка в самом конце, чтобы не перехватывать другие URL)
|
# Sitemap.xml
|
||||||
# Исключаем слаги, которые могут конфликтовать с другими URL-ами
|
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
|
||||||
# Например, 'admin', 'blog', 'static', 'media'
|
|
||||||
|
# Статические страницы (ловушка в самом конце)
|
||||||
path('<slug:slug>/', blog_views.page_detail, name='page_detail'),
|
path('<slug:slug>/', blog_views.page_detail, name='page_detail'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user