sitemap.xml и использование Slug при формировании URL
This commit is contained in:
@@ -40,6 +40,7 @@ urlpatterns = [
|
|||||||
url(r'^aboutcadpoint.html/(?P<content_id>\d*)-\S*$', views.redirect_item),
|
url(r'^aboutcadpoint.html/(?P<content_id>\d*)-\S*$', views.redirect_item),
|
||||||
|
|
||||||
url(r'^item/(?P<content_id>\d*)-\S*$', views.show_item),
|
url(r'^item/(?P<content_id>\d*)-\S*$', views.show_item),
|
||||||
|
url(r'^sitemap.xml$', views.sitemap),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
<div class="col-12 col-md-9">
|
<div class="col-12 col-md-9">
|
||||||
{% for i in LENTA %}<div class="row default-list">
|
{% for i in LENTA %}<div class="row default-list">
|
||||||
<div class="col-md-4 d-none d-md-block{% if forloop.counter|divisibleby:2 %} order-last{% endif %}">
|
<div class="col-md-4 d-none d-md-block{% if forloop.counter|divisibleby:2 %} order-last{% endif %}">
|
||||||
<a href="/item/{{ i.id }}-{{ i.szContentHead|safe_html_ss|slug_ru:'50' }}?p={{ PAGE_OF_LIST }}&n={{ forloop.counter }}">{% if i.imgContentPreview is None %}
|
<a href="/item/{{ i.id }}-{{ i.szContentSlug }}?p={{ PAGE_OF_LIST }}&n={{ forloop.counter }}">{% if i.imgContentPreview is None %}
|
||||||
<img src="{% static 'img/og-cadpoint-default.png' %}"
|
<img src="{% static 'img/og-cadpoint-default.png' %}"
|
||||||
alt="{{ i.szContentHead|safe_html_ss }}"
|
alt="{{ i.szContentHead|safe_html_ss }}"
|
||||||
title="{{ i.szContentHead|safe_html_ss }}" />{% else %}
|
title="{{ i.szContentHead|safe_html_ss }}" />{% else %}
|
||||||
@@ -65,10 +65,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-md-8">
|
<div class="col-12 col-md-8">
|
||||||
<time datetime="{{ i.tdContentPublishUp|date:'Y-m-d' }}">{{ i.tdContentPublishUp|date:'d E Y' }} <small>({{ i.tdContentPublishUp|date:'l'|lower }})</small></time>
|
<time datetime="{{ i.tdContentPublishUp|date:'Y-m-d' }}">{{ i.tdContentPublishUp|date:'d E Y' }} <small>({{ i.tdContentPublishUp|date:'l'|lower }})</small></time>
|
||||||
<h3><a href="/item/{{ i.id }}-{{ i.szContentHead|safe_html_ss|slug_ru:"50" }}?p={{ PAGE_OF_LIST }}&n={{ forloop.counter }}">{{ i.szContentHead|safe }}</a></h3>
|
<h3><a href="/item/{{ i.id }}-{{ i.szContentSlug }}?p={{ PAGE_OF_LIST }}&n={{ forloop.counter }}">{{ i.szContentHead|safe }}</a></h3>
|
||||||
<nav class="sm-tags">{% for t in i.tags.all%}<a href="/tag_{{ t.slug|lower }}"><i class="bi bi-tag"></i> {{ t.name }}</a>   {% endfor %}</nav>
|
<nav class="sm-tags">{% for t in i.tags.all%}<a href="/tag_{{ t.slug|lower }}"><i class="bi bi-tag"></i> {{ t.name|lower }}</a>   {% endfor %}</nav>
|
||||||
{{ i.szContentIntro|safe }}
|
{{ i.szContentIntro|safe }}
|
||||||
<p class="next"><a href="/item/{{ i.id }}-{{ i.szContentHead|safe_html_ss|slug_ru:'50' }}?p={{ PAGE_OF_LIST }}&n={{ forloop.counter }}">Читать дальше →</a></p>
|
<p class="next"><a href="/item/{{ i.id }}-{{ i.szContentSlug }}?p={{ PAGE_OF_LIST }}&n={{ forloop.counter }}">Читать дальше →</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>{% endfor %}{% if LENTA %}{# НАВИГАЦИЯ ПО СТРАНИЦАМ СО СПИСКАМИ КОНТЕНТА ИЗ ПРОИЗВОЛЬНОЙ КАТЕГОРИИ: НАЧАЛО #}
|
</div>{% endfor %}{% if LENTA %}{# НАВИГАЦИЯ ПО СТРАНИЦАМ СО СПИСКАМИ КОНТЕНТА ИЗ ПРОИЗВОЛЬНОЙ КАТЕГОРИИ: НАЧАЛО #}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -94,8 +94,6 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
</div>{# НАВИГАЦИЯ ПО СТРАНИЦАМ СО СПИСКАМИ КОНТЕНТА ИЗ ПРОИЗВОЛЬНОЙ КАТЕГОРИИ: КОНЕЦ #}{% endif %}
|
</div>{# НАВИГАЦИЯ ПО СТРАНИЦАМ СО СПИСКАМИ КОНТЕНТА ИЗ ПРОИЗВОЛЬНОЙ КАТЕГОРИИ: КОНЕЦ #}{% endif %}
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{#<!-- БОКОВАЯ НАВИГАЦИЯ: НАЧАЛО-->#}<nav class="col order-last order-md-first l-menu">
|
{#<!-- БОКОВАЯ НАВИГАЦИЯ: НАЧАЛО-->#}<nav class="col order-last order-md-first l-menu">
|
||||||
<h6>Теги текущей страницы:</h6>
|
<h6>Теги текущей страницы:</h6>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<meta property="og:locale" content="ru_RU" />{% comment %} Естественный язык страницы.{% endcomment %}
|
<meta property="og:locale" content="ru_RU" />{% comment %} Естественный язык страницы.{% endcomment %}
|
||||||
<meta property="og:type" content="website" />{% comment %} Тип контента, которым вы делитесь,
|
<meta property="og:type" content="website" />{% comment %} Тип контента, которым вы делитесь,
|
||||||
например website, article, или video.movie{% endcomment %}
|
например website, article, или video.movie{% endcomment %}
|
||||||
<meta property="og:url" content="https://cadpoint.ru/item/{{ ITEM.id }}-{{ ITEM.szContentHead|safe_html_ss|slug_ru:'50' }}" />{% comment %} Канонический URL страницы.
|
<meta property="og:url" content="https://cadpoint.ru/item/{{ ITEM.id }}-{{ ITEM.szContentSlug }}" />{% comment %} Канонический URL страницы.
|
||||||
Обязательное свойство для допустимых страниц Open Graph.{% endcomment %}
|
Обязательное свойство для допустимых страниц Open Graph.{% endcomment %}
|
||||||
<meta name="twitter:card" content="summary_large_image" />{% comment %} определяет, как будут выглядеть
|
<meta name="twitter:card" content="summary_large_image" />{% comment %} определяет, как будут выглядеть
|
||||||
карточки при публикации в Twitter. Есть два варианта для веб-сайтов: summary
|
карточки при публикации в Twitter. Есть два варианта для веб-сайтов: summary
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
<!--- ТИТУЛ --->
|
<!--- ТИТУЛ --->
|
||||||
{% block Title %}{{ ITEM.szContentHead|safe_html_ss }}{% endblock %}
|
{% block Title %}{{ ITEM.szContentHead|safe_html_ss }}{% endblock %}
|
||||||
{% block canonical %}https://cadpoint.ru/item/{{ ITEM.id }}-{{ ITEM.szContentHead|safe_html_ss|slug_ru:'50' }}{% endblock %}
|
{% block canonical %}https://cadpoint.ru/item/{{ ITEM.id }}-{{ ITEM.szContentSlug }}{% endblock %}
|
||||||
{% block Description %}CADpoint: {% if ITEM.szContentDescription %}{{ ITEM.szContentDescription }}{% else %}{{ ITEM.szContentHead|safe_html_ss }}{% endif %}{% endblock %}
|
{% block Description %}CADpoint: {% if ITEM.szContentDescription %}{{ ITEM.szContentDescription }}{% else %}{{ ITEM.szContentHead|safe_html_ss }}{% endif %}{% endblock %}
|
||||||
{% block Keywords %}cadpoint, {% for t in ITEM.tags.all %}{{ t.name }}, {% endfor %}{{ ITEM.szContentKeywords }}, новости{% endblock %}
|
{% block Keywords %}cadpoint, {% for t in ITEM.tags.all %}{{ t.name }}, {% endfor %}{{ ITEM.szContentKeywords }}, новости{% endblock %}
|
||||||
{% block Date4Meta %}{{ ITEM.tdContentPublishUp|date:'Y-m-d H:i:s' }}{% endblock %}"
|
{% block Date4Meta %}{{ ITEM.tdContentPublishUp|date:'Y-m-d H:i:s' }}{% endblock %}"
|
||||||
@@ -63,10 +63,10 @@
|
|||||||
{#<!-- БОКОВАЯ НАВИГАЦИЯ: НАЧАЛО-->#}<nav class="col order-last order-md-first">
|
{#<!-- БОКОВАЯ НАВИГАЦИЯ: НАЧАЛО-->#}<nav class="col order-last order-md-first">
|
||||||
<div></div>{% for i in ITEMS_BEFORE reversed %}{% if i.id != ITEM.id %}<div>
|
<div></div>{% for i in ITEMS_BEFORE reversed %}{% if i.id != ITEM.id %}<div>
|
||||||
<time datetime="{{ i.tdContentPublishUp|date:'Y-m-d' }}">{{ i.tdContentPublishUp|date:'d E Y' }}</time>
|
<time datetime="{{ i.tdContentPublishUp|date:'Y-m-d' }}">{{ i.tdContentPublishUp|date:'d E Y' }}</time>
|
||||||
<p><i class="bi bi-newspaper"></i> <a href="/item/{{ i.id }}-{{ i.szContentHead|safe_html_ss|slug_ru:'50' }}{% if PER_PAGE %}?p={{ i.pp }}&n={{ i.nn }}{% endif %}">{{ i.szContentHead|safe }}</a></p>
|
<p><i class="bi bi-newspaper"></i> <a href="/item/{{ i.id }}-{{ i.szContentSlug }}{% if PER_PAGE %}?p={{ i.pp }}&n={{ i.nn }}{% endif %}">{{ i.szContentHead|safe }}</a></p>
|
||||||
</div>{% endif %}{% endfor %}{% for i in ITEMS_AFTER %}{% if i.id != ITEM.id %}<div>
|
</div>{% endif %}{% endfor %}{% for i in ITEMS_AFTER %}{% if i.id != ITEM.id %}<div>
|
||||||
<time datetime="{{ i.tdContentPublishUp|date:'Y-m-d' }}">{{ i.tdContentPublishUp|date:'d E Y' }}</time>
|
<time datetime="{{ i.tdContentPublishUp|date:'Y-m-d' }}">{{ i.tdContentPublishUp|date:'d E Y' }}</time>
|
||||||
<p><i class="bi bi-newspaper"></i> <a href="/item/{{ i.id }}-{{ i.szContentHead|safe_html_ss|slug_ru:'50' }}{% if PER_PAGE %}?p={{ i.pp }}&n={{ i.nn }}{% endif %}">{{ i.szContentHead|safe }}</a></p>
|
<p><i class="bi bi-newspaper"></i> <a href="/item/{{ i.id }}-{{ i.szContentSlug }}{% if PER_PAGE %}?p={{ i.pp }}&n={{ i.nn }}{% endif %}">{{ i.szContentHead|safe }}</a></p>
|
||||||
</div>{% else %}<div class="active">
|
</div>{% else %}<div class="active">
|
||||||
<time datetime="{{ ITEM.tdContentPublishUp|date:'Y-m-d' }}">{{ ITEM.tdContentPublishUp|date:'d E Y' }}</time>
|
<time datetime="{{ ITEM.tdContentPublishUp|date:'Y-m-d' }}">{{ ITEM.tdContentPublishUp|date:'d E Y' }}</time>
|
||||||
<p><i class="bi bi-newspaper"></i> {{ ITEM.szContentHead|safe }}</p>
|
<p><i class="bi bi-newspaper"></i> {{ ITEM.szContentHead|safe }}</p>
|
||||||
@@ -76,10 +76,10 @@
|
|||||||
{# <!-- НИЖНЯЯ НАВИГАЦИЯ-ПАДЖИНАТОР ПО НОВОСТЯМ: НАЧАЛО--> #}{% if PER_PAGE %}
|
{# <!-- НИЖНЯЯ НАВИГАЦИЯ-ПАДЖИНАТОР ПО НОВОСТЯМ: НАЧАЛО--> #}{% if PER_PAGE %}
|
||||||
<nav class="row" aria-label="Навигация по контенту">
|
<nav class="row" aria-label="Навигация по контенту">
|
||||||
<ul class="col offset-md-3 pagination px-1">{% if ITEMS_BEFORE.0.id %}
|
<ul class="col offset-md-3 pagination px-1">{% if ITEMS_BEFORE.0.id %}
|
||||||
<li class="page-item"><a class="page-link" href="/item/{{ ITEMS_BEFORE.0.id }}-{{ ITEMS_BEFORE.0.szContentHead|safe_html_ss|slug_ru:'50' }}?p={{ ITEMS_BEFORE.0.pp }}&n={{ ITEMS_BEFORE.0.nn }}"><i class="bi bi-arrow-left" title="Предыдущая"></i></a></li>{% else %}<li class="page-item disabled"><a class="page-link" href="#"><i class="bi bi-arrow-left" title="Предыдущая"></i></a></li>{% endif %}
|
<li class="page-item"><a class="page-link" href="/item/{{ ITEMS_BEFORE.0.id }}-{{ ITEMS_BEFORE.0.szContentSlug }}?p={{ ITEMS_BEFORE.0.pp }}&n={{ ITEMS_BEFORE.0.nn }}"><i class="bi bi-arrow-left" title="Предыдущая"></i></a></li>{% else %}<li class="page-item disabled"><a class="page-link" href="#"><i class="bi bi-arrow-left" title="Предыдущая"></i></a></li>{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="col pagination justify-content-end px-0">{% if ITEMS_AFTER|length <= 1 %}
|
<ul class="col pagination justify-content-end px-0">{% if ITEMS_AFTER|length <= 1 %}
|
||||||
<li class="page-item disabled"><a class="page-link" href="#"><i class="bi bi-arrow-right" title="Следующая"></i></a></li>{% else %}<li class="page-item"><a class="page-link" href="/item/{{ ITEMS_AFTER.1.id }}-{{ ITEMS_AFTER.1.szContentHead|safe_html_ss|slug_ru:'50' }}?p={{ ITEMS_AFTER.1.pp }}&n={{ ITEMS_AFTER.1.nn }}"><i class="bi bi-arrow-right" title="Следующая"></i></a></li>{% endif %}
|
<li class="page-item disabled"><a class="page-link" href="#"><i class="bi bi-arrow-right" title="Следующая"></i></a></li>{% else %}<li class="page-item"><a class="page-link" href="/item/{{ ITEMS_AFTER.1.id }}-{{ ITEMS_AFTER.1.szContentSlug }}?p={{ ITEMS_AFTER.1.pp }}&n={{ ITEMS_AFTER.1.nn }}"><i class="bi bi-arrow-right" title="Следующая"></i></a></li>{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</nav>{# <!-- НИЖНЯЯ НАВИГАЦИЯ-ПАДЖИНАТОР ПО НОВОСТЯМ: КОНЕЦ--> #}{% endif %}
|
</nav>{# <!-- НИЖНЯЯ НАВИГАЦИЯ-ПАДЖИНАТОР ПО НОВОСТЯМ: КОНЕЦ--> #}{% endif %}
|
||||||
</div>{#<!-- POINT-СРАНИЦА: КОНЕЦ -->#}
|
</div>{#<!-- POINT-СРАНИЦА: КОНЕЦ -->#}
|
||||||
|
|||||||
5
cadpoint/templates/sitemap.jinja2
Normal file
5
cadpoint/templates/sitemap.jinja2
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{% load static %}{% load thumbnail %}{% load slug_ru %}<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<url><loc>https://cadpoint.ru/</loc><priority>1</priority></url>{% for I in ITEMS %}
|
||||||
|
<url><loc>https://cadpoint.ru/item/{{ I.id }}-{{ I.szContentSlug }}</loc><priority>1</priority></url>{% endfor %}
|
||||||
|
</urlset>
|
||||||
@@ -169,3 +169,14 @@ def show_item(request,
|
|||||||
return render(request, template, to_template)
|
return render(request, template, to_template)
|
||||||
except (ValueError, AttributeError, TbContent.DoesNotExist, TbContent.MultipleObjectsReturned):
|
except (ValueError, AttributeError, TbContent.DoesNotExist, TbContent.MultipleObjectsReturned):
|
||||||
raise Http404("Контента с таким id не существует")
|
raise Http404("Контента с таким id не существует")
|
||||||
|
|
||||||
|
|
||||||
|
def sitemap(request):
|
||||||
|
template = "sitemap.jinja2" # шаблон
|
||||||
|
q_items = TbContent.objects.filter(
|
||||||
|
Q(tdContentPublishDown__isnull=True) | Q(tdContentPublishDown__gt=timezone.now()),
|
||||||
|
Q(bContentPublish=True)).order_by("-tdContentPublishUp", "id").all()
|
||||||
|
to_template = {"ITEMS": q_items}
|
||||||
|
print(q_items)
|
||||||
|
response = render(request, template, to_template)
|
||||||
|
return response
|
||||||
|
|||||||
Reference in New Issue
Block a user