Внедрение микроразметки через HTML блок

Микроразметка представляет собой специальный код, добавляемый к странице для улучшения представления страницы в поисковиках и мессенджерах. 

Есть несколько разных схем микроразметки. 

Идея в том, чтобы спрятать нюансы микроразметки в HTML блоке и затем просто вызывать его на разных страницах. 

SQL процедура для HTML блока microdata:

CREATE PROCEDURE [dbo].[block_microData_get]
	@code nvarchar(128),
	@itemID nvarchar(256),
	@parameters ExtendedDictionaryParameter readonly,  
	@res nvarchar(max) output
AS
BEGIN
	declare @title nvarchar(max) = (select value2 from @parameters where [key]='title')
    declare @img nvarchar(max) = (select value2 from @parameters where [key]='img')
    declare @thumb nvarchar(max) = (select value2 from @parameters where [key]='thumb')
    declare @desc nvarchar(max) = (select value2 from @parameters where [key]='desc')
    declare @url nvarchar(max) = (select value2 from @parameters where [key]='url')
    declare @date nvarchar(max) = (select value2 from @parameters where [key]='date')
    
    declare @personName nvarchar(max) = isnull((select value2 from @parameters where [key]='date'), '---')
    declare @personUrl nvarchar(max) = isnull((select value2 from @parameters where [key]='date'), '---')
    declare @siteName nvarchar(max) = (select value2 from @parameters where [key]='')
    declare @siteUrl nvarchar(max) = (select value2 from @parameters where [key]='')
    declare @siteLogo nvarchar(max) = (select value2 from @parameters where [key]='')
    
    
    
    -- извлекаем блок по умолчанию
	declare @s  nvarchar(max) = ''
	declare @domain nvarchar(256) = dbo.as_setting('domain', '')
    select @s = '
 <section itemscope itemtype="https://schema.org/Article">
	<meta itemprop="headline" content="'+isnull(@title, '')+'" >
    '+iif(len(@img)>0, '<meta itemprop="image" content="'+@img+'">', '')+'
	'+iif(len(@thumb)>0, '<meta itemprop="thumbnailUrl" content="'+@thumb+'">', '')+'
	
	<div itemprop="description" style="display:none;">
		'+isnull(dbo.seo_processSeoDesc(@desc), '')+'
	</div>
	<time itemprop="datePublished" datetime="'+isnull(@date , '')+'"></time>
	<div itemprop="author" itemscope itemtype="https://schema.org/Person">
            <meta itemprop="name" content="'+isnull(@personName, '')+'">
            <meta itemprop="url" content="'+isnull(@personUrl, '')+'">            
    </div>
	<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
		<div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
			<meta itemprop="url" content="'+isnull(@siteLogo, '')+'">
		</div>
		<meta itemprop="name" content="Falcon Space">
		<meta itemprop="url" content="'+isnull(@siteUrl, '')+'">
	</div>
	<meta itemprop="dateModified" content="'+isnull(@date , '')+'" />
	<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="'+isnull(@url, '')+'" />
</section>
    
<script type="application/ld+json">
{
	"@context": "https://schema.org/",
	"@type": "Article",
	"headline": "'+isnull(@title, 'noname')+'",
	"image": "'+isnull(@img, '')+'",
	"thumbnailUrl": "'+isnull(@thumb, '')+'",
	"description": "'+dbo.seo_processSeoDesc(dbo.as_stripHTML(isnull(@desc,'')))+'",
	"author": {
			"@type": "Person",
			"name": "'+isnull(@personName, '')+'", 
            "url": "'+isnull(@personUrl, '')+'"
	},
	"publisher": {
		"@type": "Organization",
		"name": "'+isnull(@siteName, '')+'",
		"url": "'+isnull(@siteUrl, '')+'",
		"logo": {
			"@type": "ImageObject",
			"url": "'+isnull(@siteLogo, '')+'"
		}
	},
	"datepublished": "'+isnull(@date , '')+'",
	"datemodified": "'+isnull(@date , '')+'",
	"mainEntityOfPage": {
		"@type": "WebPage",
		"@id": "'+lower(@url)+'"
	}
}
</script>

<meta name="og:title" content="'+isnull(@title, '')+'" />
<meta name="og:description" content="'+dbo.seo_processSeoDesc([dbo].[as_stripHTML](isnull(@desc, '')))+'" />
<meta name="og:url" content="'+lower(@url)+'" />
<meta name="og:site_name" content="'+isnull(@siteName, '')+'" />
<meta name="og:locale" content="ru_RU" />
<meta name="og:type" content="website" />
<meta property="og:image" content="'+isnull(@img, '')+'" />
    '
    
	set @res = @s
END

 

Сам HTML блок может быть вызван либо на странице (вставка через sp параметр в тело страницы) либо на ленде. 

Пример для процедуры ленда: 

declare @m nvarchar(max) = '', @p1 ExtendedDictionaryParameter
insert into @p1 ([Key], value2)
select 'title', 'Платформа Falcon Space. Cоздание сайта по шагам' 
    union select 'img', 'https://falconspace.ru/uploads/rs/landImages/26/discuss.svg'
    union select 'thumb', 'https://falconspace.ru/uploads/rs/landImages/26/discuss.svg'
    union select 'desc', 'Как ведется работа в проекте разработки/сопровождения сайта на Falcon space. Порядок взаимодействия и выполнения работ.'
    union select 'url', 'https://falconspace.ru/how-develop-project'
    union select 'date', '2025-01-06'
exec [dbo].[as_block] @code ='microData', @itemID ='', @parameters = @p1, @res =@m OUTPUT    
   
set @res = replace(@s, '{microdata}', @m)

А в секции ленда указывается разметка {microdata} (она будет заменена на генерируемую микроразметку.)

В итоге микроразметка будет добавлена в код страницы (3 схемы): 

Подробнее про микроразметку см. на странице про SEO возможности в разделе Микроразметка. 

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Планируете делать веб-проект?
Сайт использует Cookie. Правила конфиденциальности OK