add: все для sitemaps.xml + robots.txt
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
"""
|
||||
Карты сайта (Sitemaps) для поисковой индексации HypnoSVG.
|
||||
"""
|
||||
from django.contrib.sitemaps import Sitemap
|
||||
from django.urls import reverse
|
||||
|
||||
from .models import TbHypn0Item
|
||||
|
||||
|
||||
class StaticViewSitemap(Sitemap):
|
||||
"""
|
||||
Карта сайта для ключевых страниц и разделов интерфейса.
|
||||
"""
|
||||
changefreq = "daily"
|
||||
|
||||
def items(self):
|
||||
return [
|
||||
("hypn0_site:index", 1.0, "daily"),
|
||||
("hypn0_site:gallery_archive", 0.9, "daily"),
|
||||
]
|
||||
|
||||
def location(self, item):
|
||||
return reverse(item[0])
|
||||
|
||||
def priority(self, item):
|
||||
return item[1]
|
||||
|
||||
def changefreq(self, item):
|
||||
return item[2]
|
||||
|
||||
|
||||
class GalleryItemSitemap(Sitemap):
|
||||
"""
|
||||
Карта сайта для публичных гипно-картин галереи сообщества.
|
||||
"""
|
||||
changefreq = "weekly"
|
||||
|
||||
def items(self):
|
||||
# Включаем только публичные картины, исключая подозрительные/заблокированные
|
||||
return (
|
||||
TbHypn0Item.objects.filter(is_public=True)
|
||||
.exclude(i_level__in=[TbHypn0Item.Level.SHAMED, TbHypn0Item.Level.SUSPICIOUS])
|
||||
.order_by("-d_created_at")
|
||||
)
|
||||
|
||||
def lastmod(self, obj: TbHypn0Item):
|
||||
return obj.d_created_at
|
||||
|
||||
def priority(self, obj: TbHypn0Item):
|
||||
# Динамический приоритет в зависимости от уровня признания в психо-матрице
|
||||
if obj.i_level == TbHypn0Item.Level.IMMORTAL:
|
||||
return 0.9
|
||||
elif obj.i_level == TbHypn0Item.Level.LEVEL_2:
|
||||
return 0.8
|
||||
elif obj.i_level == TbHypn0Item.Level.LEVEL_1:
|
||||
return 0.7
|
||||
return 0.6
|
||||
|
||||
def location(self, obj: TbHypn0Item):
|
||||
return obj.get_absolute_url()
|
||||
|
||||
|
||||
sitemaps = {
|
||||
"static": StaticViewSitemap,
|
||||
"gallery": GalleryItemSitemap,
|
||||
}
|
||||
Reference in New Issue
Block a user