Битрикс мета теги и SEO вкладка в новых версиях

Вы наверняка сталкивались с ситуацией, когда в битриксе мета теги выставляются непонятно как. Если раньше было лишь API и настройки компонентов, то сейчас появилась SEO вкладка.

Как можно поставить сео настройки в битрикси

SEO вкладка это конечно хорошо. Формулы, наследования у разделов и элементов, и много чего хорошего она принесла. Но у нее есть минус — очень часто её нельзя перекрыть, даже если писать код в component_epilog.php.

Сначала приведу код, который вы явно сможете улучшить, т.к. он уже утратил свою актуальность, а затем расскажу где вы можете найти «вывод мета свойств» в шаблоне (ведь разработчики запихивают код куда ни попадя).

<?
if ($arResult["VARIABLES"]["SECTION_ID"] > 0) {

	$my_sections = CIBlockSection::GetList (
		Array("ID" => "ASC"),
		Array("IBLOCK_ID" => 38, "ACTIVE" => "Y", "ID" => $arResult["VARIABLES"]["SECTION_ID"]),
		false,
		Array('ID', 'NAME', 'UF_TITLE', 'UF_KEYWORD', 'UF_DESCR')
	);
	if ($ar_fields = $my_sections->GetNext()) {
		if ($ar_fields['UF_TITLE'] != false) {
			global $myTitle;
			$myTitle = $ar_fields['UF_TITLE'];
		}
		if ($ar_fields['UF_KEYWORD'] != false) {
			global $myKeyw;
			$myKeyw = $ar_fields['UF_KEYWORD'];
		}
		if ($ar_fields['UF_DESCR'] != false) {
			global $myDescr;
			$myDescr = $ar_fields['UF_DESCR'];
		}
	}
}
?>

Код который привел выше, записываем в section.php если говорить про компонент каталога. Перед этим вам необходимо создать 3 свойства у раздела — ‘UF_TITLE’, ‘UF_KEYWORD’, ‘UF_DESCR’, всё, естественно в строках.

По факту мы записываем в глобальный массив наши значения если они есть.

Во втором шаге, будем использовать файл init.php, и событие OnEpilog:

<?
AddEventHandler('main', 'OnEpilog', 'SeoSetup');
function SeoSetup(){
        // title
        if ($GLOBALS['myTitle']) {
            $APPLICATION->SetPageProperty('title', $GLOBALS['myTitle']);
            if(strlen($arSeo['PROPERTY_TITLE_VALUE'])>0) $APPLICATION->SetTitle($arSeo['PROPERTY_TITLE_VALUE']);
        } 
        elseif(!empty($arSeo)){
            if(strlen($arSeo['PROPERTY_BROWSER_TITLE_VALUE'])>0) $APPLICATION->SetPageProperty('title',$arSeo['PROPERTY_BROWSER_TITLE_VALUE']);
            if(strlen($arSeo['PROPERTY_TITLE_VALUE'])>0) $APPLICATION->SetTitle($arSeo['PROPERTY_TITLE_VALUE']);
        }
        // descr
        if ($GLOBALS['myDescr']) {
            $APPLICATION->SetPageProperty('description', $GLOBALS['myDescr']);
        } 
        elseif(!empty($arSeo)){
            if(strlen($arSeo['PROPERTY_DESCRIPTION_VALUE'])>0) $APPLICATION->SetPageProperty('description',$arSeo['PROPERTY_DESCRIPTION_VALUE']);
        }
        // keyword
        if ($GLOBALS['myKeyw']) {
            $APPLICATION->SetPageProperty('keywords', $GLOBALS['myKeyw']);
        } 
        elseif(!empty($arSeo)){
            if(strlen($arSeo['PROPERTY_KEYWORDS_VALUE'])>0) $APPLICATION->SetPageProperty('keywords',$arSeo['PROPERTY_KEYWORDS_VALUE']);
        }

        // OLD
        /*if(!empty($arSeo)){
            if(strlen($arSeo['PROPERTY_KEYWORDS_VALUE'])>0) $APPLICATION->SetPageProperty('keywords',$arSeo['PROPERTY_KEYWORDS_VALUE']);
            if(strlen($arSeo['PROPERTY_DESCRIPTION_VALUE'])>0) $APPLICATION->SetPageProperty('description',$arSeo['PROPERTY_DESCRIPTION_VALUE']);
            if(strlen($arSeo['PROPERTY_BROWSER_TITLE_VALUE'])>0) $APPLICATION->SetPageProperty('title',$arSeo['PROPERTY_BROWSER_TITLE_VALUE']);
            if(strlen($arSeo['PROPERTY_TITLE_VALUE'])>0) $APPLICATION->SetTitle($arSeo['PROPERTY_TITLE_VALUE']);
        }*/
}

Приведенный код работает на шаблона от ребят из АСПРО. Вы можете удалить всё лишнее и тогда у вас получится:

<?
AddEventHandler('main', 'OnEpilog', 'SeoSetup');
function SeoSetup(){
        // title
        if ($GLOBALS['myTitle']) {
            $APPLICATION->SetPageProperty('title', $GLOBALS['myTitle']);
            $APPLICATION->SetTitle($GLOBALS['myTitle']);
        } 
        // descr
        if ($GLOBALS['myDescr']) {
            $APPLICATION->SetPageProperty('description', $GLOBALS['myDescr']);
        } 
        // keyword
        if ($GLOBALS['myKeyw']) {
            $APPLICATION->SetPageProperty('keywords', $GLOBALS['myKeyw']);
        } 

}

По каким правилам настраивать далее, это уже вам решать, тут уже кому как удобнее, и кто решает какой из способов правильный. Ясно одно — новые обновления с SEO вкладкой добавили гораздо больше вариантов по работе с мета тегами. Хорошо это или плохо покажет время 🙂 .

Как и обещал, оставлю небольшой список мест, где могут хранится ваши мета теги:
1. В коде самого шаблона — template.php, component_epilog.php или result_modifier.php
2. в header.php шаблона, который находится в папке bitrix/templates/ либо же в local/templates
3. в footer.php шаблона, который находится в папке bitrix/templates/ либо же в local/templates
4. в init.php, который находится в папке bitrix/php_interface/ либо же в local/php_interface
5. в каком-то отдельном файле, который либо подключается самым последним в шаблоне компонента, либо же в самом шаблоне

6. другой вариант 🙂

Если у вас возникли сложности связанные с настройкой мета тегов, или вы хотите улучшить SEO на вашем сайте, обращайтесь ко мне за помощью

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *