Поченил карту сайта
This commit is contained in:
parent
2f2d49a274
commit
2ad660ab0f
@ -3,6 +3,9 @@ from django.urls import reverse
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from taggit.managers import TaggableManager
|
from taggit.managers import TaggableManager
|
||||||
|
from django.utils.html import strip_tags
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
User = get_user_model()
|
User = get_user_model()
|
||||||
|
|
||||||
@ -67,8 +70,8 @@ class Article(models.Model):
|
|||||||
def get_seo_description(self):
|
def get_seo_description(self):
|
||||||
if self.meta_description:
|
if self.meta_description:
|
||||||
return self.meta_description
|
return self.meta_description
|
||||||
clean = self.content[:160].replace("\n", " ").strip()
|
clean = re.sub(r'\s+', ' ', strip_tags(self.content)).strip()
|
||||||
return f"{clean}..."
|
return clean[:157] + '…' if len(clean) > 160 else clean
|
||||||
|
|
||||||
class Comment(models.Model):
|
class Comment(models.Model):
|
||||||
"""Комментарий к статье"""
|
"""Комментарий к статье"""
|
||||||
|
|||||||
@ -1,31 +1,27 @@
|
|||||||
from django.contrib.sitemaps import Sitemap
|
from django.contrib.sitemaps import Sitemap
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from .models import Home, Solution, Competence, Recall
|
|
||||||
|
|
||||||
class StaticViewSitemap(Sitemap):
|
from blog.models import Article
|
||||||
|
from .models import Solution, Competence, Recall
|
||||||
|
|
||||||
|
|
||||||
|
class HttpsSitemap(Sitemap):
|
||||||
|
"""Base class that forces https on all sitemap URLs."""
|
||||||
|
protocol = 'https'
|
||||||
|
|
||||||
|
|
||||||
|
class StaticViewSitemap(HttpsSitemap):
|
||||||
priority = 1.0
|
priority = 1.0
|
||||||
changefreq = 'monthly'
|
changefreq = 'monthly'
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
return ['home', 'about', 'solution', 'ability', 'recall']
|
return ['home', 'about', 'solution', 'blog:article_list', 'recall']
|
||||||
|
|
||||||
def location(self, item):
|
def location(self, item):
|
||||||
return reverse(item)
|
return reverse(item)
|
||||||
|
|
||||||
class HomeSitemap(Sitemap):
|
|
||||||
changefreq = 'weekly'
|
|
||||||
priority = 1.0
|
|
||||||
|
|
||||||
def items(self):
|
class SolutionSitemap(HttpsSitemap):
|
||||||
return Home.objects.filter(is_published=True)
|
|
||||||
|
|
||||||
def lastmod(self, obj):
|
|
||||||
return obj.time_update
|
|
||||||
|
|
||||||
# УБИРАЕМ метод location - используем default
|
|
||||||
# Django автоматически сгенерирует правильные URL
|
|
||||||
|
|
||||||
class SolutionSitemap(Sitemap):
|
|
||||||
changefreq = 'weekly'
|
changefreq = 'weekly'
|
||||||
priority = 0.9
|
priority = 0.9
|
||||||
|
|
||||||
@ -35,7 +31,8 @@ class SolutionSitemap(Sitemap):
|
|||||||
def lastmod(self, obj):
|
def lastmod(self, obj):
|
||||||
return obj.time_update
|
return obj.time_update
|
||||||
|
|
||||||
class CompetenceSitemap(Sitemap):
|
|
||||||
|
class CompetenceSitemap(HttpsSitemap):
|
||||||
changefreq = 'monthly'
|
changefreq = 'monthly'
|
||||||
priority = 0.8
|
priority = 0.8
|
||||||
|
|
||||||
@ -45,7 +42,8 @@ class CompetenceSitemap(Sitemap):
|
|||||||
def lastmod(self, obj):
|
def lastmod(self, obj):
|
||||||
return obj.time_update
|
return obj.time_update
|
||||||
|
|
||||||
class RecallSitemap(Sitemap):
|
|
||||||
|
class RecallSitemap(HttpsSitemap):
|
||||||
changefreq = 'monthly'
|
changefreq = 'monthly'
|
||||||
priority = 0.7
|
priority = 0.7
|
||||||
|
|
||||||
@ -55,10 +53,23 @@ class RecallSitemap(Sitemap):
|
|||||||
def lastmod(self, obj):
|
def lastmod(self, obj):
|
||||||
return obj.time_update
|
return obj.time_update
|
||||||
|
|
||||||
|
|
||||||
|
class BlogSitemap(HttpsSitemap):
|
||||||
|
changefreq = 'weekly'
|
||||||
|
priority = 0.9
|
||||||
|
|
||||||
|
def items(self):
|
||||||
|
return Article.objects.filter(is_published=True).select_related('category')
|
||||||
|
|
||||||
|
def lastmod(self, obj):
|
||||||
|
return obj.time_update
|
||||||
|
|
||||||
|
|
||||||
# Упрощаем sitemaps - убираем HomeSitemap если он дублирует главную
|
# Упрощаем sitemaps - убираем HomeSitemap если он дублирует главную
|
||||||
sitemaps = {
|
sitemaps = {
|
||||||
'static': StaticViewSitemap,
|
'static': StaticViewSitemap,
|
||||||
'solutions': SolutionSitemap,
|
'solutions': SolutionSitemap,
|
||||||
'competence': CompetenceSitemap,
|
'blog': BlogSitemap,
|
||||||
|
# 'competence': CompetenceSitemap,
|
||||||
'recall': RecallSitemap,
|
'recall': RecallSitemap,
|
||||||
}
|
}
|
||||||
@ -23,8 +23,7 @@ urlpatterns = [
|
|||||||
path('callback/', callback_request, name='callback'),
|
path('callback/', callback_request, name='callback'),
|
||||||
path('admin/statistics/', statistics_view, name='statistics'),
|
path('admin/statistics/', statistics_view, name='statistics'),
|
||||||
# Sitemap
|
# Sitemap
|
||||||
path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
|
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
|
||||||
name='django.contrib.sitemaps.views.sitemap'),
|
|
||||||
path('robots.txt', robots_txt, name='robots'),
|
path('robots.txt', robots_txt, name='robots'),
|
||||||
path('login/', auth_views.LoginView.as_view(template_name='programmer/login.html'), name='login'),
|
path('login/', auth_views.LoginView.as_view(template_name='programmer/login.html'), name='login'),
|
||||||
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
|
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user