Показ дописів із міткою sitemap. Показати всі дописи
Показ дописів із міткою sitemap. Показати всі дописи
Зміна xml шаблону Sitemap в Django
Захотілось додати CSS в XML-файл Sitemap'у по типу WordPress'івського.
Йдемо в /usr/lib/python2.7/site-packages/django/contrib/sitemaps/templates/ (в Fedora такий шлях) і копіюємо sitemap.xml в свій template каталог проекту. Робимо потрібні зміни в ньому і маємо щастя.
Django Sitemap клас для Articles
### sitemap.py
from articles.models import Article
class ArticlesListSitemap(Sitemap):
changefreq = "weekly"
priority = 0.9
def lastmod(self, obj):
return obj.publish_date
def location(self, obj):
d = obj.publish_date.strftime("%Y")
return '/articles/' + d + '/' + obj.slug + '/'
def items(self):
return Article.objects.filter(is_active=True)
Django Sitemap з пустим items
Теж погано документована фіча.
Треба додати елемент в sitemap, але без прив'язки до моделі. В даному випадку це розділ "Контакти" з моделлю, але мені не потрібна індексація схованих даних.
Рішення
sitemap.py
urls.py
Треба додати елемент в sitemap, але без прив'язки до моделі. В даному випадку це розділ "Контакти" з моделлю, але мені не потрібна індексація схованих даних.
Рішення
sitemap.py
from django.contrib.sitemaps import Sitemap
class ContactsSitemap(Sitemap):
changefreq = "weekly"
priority = 0.5
def lastmod(self, obj):
return datetime.datetime.now()
def location(self, obj):
return '/contact/'
def items(self):
return [self]
urls.py
sitemaps = {
#'flatpages': MyFlatPageSitemap,
'contact': ContactsSitemap,
}
Django FlatPageSitemap priority і changefreq
по замовчуванні FlatPageSitemap генерить лише loc, а priority і changefreq треба прописувати самому. Причому, в документації про це нічого немає, або я сліпий. Гугл теж дуже скупо описує. Танці з бубном 10 хв. і рішення знайдено.
sitemap.py
urls.py
sitemap.py
from django.contrib.sitemaps import FlatPageSitemap
class MyFlatPageSitemap(FlatPageSitemap):
def priority(self, item):
if 'about' in str(item.get_absolute_url).lower():
return 0.8
if 'clients' in str(item.get_absolute_url).lower():
return 0.3
if 'services' in str(item.get_absolute_url).lower():
return 0.8
else:
return 0.2
def changefreq(self, obj):
return "weekly"
urls.py
from django.contrib.sitemaps import FlatPageSitemap, GenericSitemap
from sitemap import *
sitemaps = {
#'flatpages': FlatPageSitemap,
'flatpages': MyFlatPageSitemap,
}
urlpatterns = patterns('',
(r'^sitemap\.xml', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
)
Підписатися на:
Дописи (Atom)