mod: SEO-теги и JSON-LD (chema.org)

This commit is contained in:
2026-05-11 18:29:10 +03:00
parent c62fbceaaf
commit 0efc12fe7a
2 changed files with 157 additions and 24 deletions

View File

@@ -85,15 +85,19 @@ def blog_list_posts(request: HttpRequest, page: str = "0") -> HttpResponse:
'NAME1': post.kBlogAuthorUser.kDjangoUser.first_name,
'NAME2': post.kBlogAuthorUser.kDjangoUser.last_name,
'PUB_DAT': post.dPostDataBegin,
'MOD_DAT': post.dPostDataModify,
'HEADER': post.sPostHeader,
'HEADER_D': safe_html_spec_symbols(post.sPostHeader),
'HEADER_T': sanitize_slug(post.sPostHeader).lower(),
'HEADER_T': sanitize_slug(post.sPostHeader),
'POST_ID': post.id,
'USER_STATUS': post.kBlogAuthorUser.get_sUserStatus_display(),
'USER_AVATAR': post.kBlogAuthorUser.sUserAvatarImg,
'USER_TITLE': post.kBlogAuthorUser.sUserJobTitle,
'USER_FROM_ID_OFFICE': post.kBlogAuthorUser.kMerchantOffice,
'CONTENT_CUT': post.sPostContent})
'CONTENT_CUT': post.sPostContent,
'META_DESC': post.sMetaDescription,
'META_KW': post.sMetaKeywords,
'IMG_BLOG': post.sImgForBlogSocial})
# ищем CUT в тексте блога
i_cut1 = post.sPostContent.lower().find(u"<cut")
if i_cut1 != -1:
@@ -107,14 +111,37 @@ def blog_list_posts(request: HttpRequest, page: str = "0") -> HttpResponse:
dim_blogposts[i].update({'CUT_TEXT': u"Читать дальше →"})
else:
# Проверка на случай если нет "cut" и текст не длинный... нужна ли кнопка "читать дальше"?
if len(post.sPostContent) < 4096:
if len(post.sPostContent) < 2048:
dim_blogposts[i].update({'CUT_TEXT': u"NONE"})
else:
dim_blogposts[i].update({'CUT_TEXT': u"Читать дальше →"})
i += 1
# Формируем SEO-данные для мета-тегов страницы
# Ключевые слова для B2B блога (компании-поставщик и их клиенты)
combined_keywords = u"oknardia, окнардия, блог, поставщики окон, производители, установщики, компании"
first_post_image = ""
if dim_blogposts:
# Объединяем META_KW из нескольких первых постов
collected_keywords = []
for post_dict in dim_blogposts[:3]: # из первых 3 постов
if post_dict.get('META_KW'):
# Берем только часть keywords без фиксированного префикса (чтобы не повторять)
kw_parts = post_dict['META_KW'].split(", ")
if len(kw_parts) > 4: # пропускаем первые 4 (фиксированный префикс)
collected_keywords.extend(kw_parts[4:])
if collected_keywords:
combined_keywords = u"oknardia, окнардия, блог, поставщики окон, производители, установщики, " + ", ".join(collected_keywords[:5])
# Берем изображение первого поста для og:image
if dim_blogposts[0].get('IMG_BLOG'):
first_post_image = f"/media/{dim_blogposts[0]['IMG_BLOG']}"
to_template.update({'DIM_BLOGPOST': dim_blogposts,
'META_DATA_PUB': q[0].dPostDataBegin,
'META_DATA_MODIFY': q[0].dPostDataModify,
'META_KEYWORDS': combined_keywords,
'META_IMAGE': first_post_image,
'PAGE_BACK': page,
'ticks': float(time()-time_start)})
return render(request, template, to_template)