Alien-Ka
@Alien-Ka
Я девочка и не хочу платьице. Я хочу кофе и кодить

Как установить SEO-шаблон для элемента в битриксе?

Итак, у меня есть новый функционал битрикса для сеошников, задающий имена, описания, ключевые слова и прочее прямо из элемента/раздела/инфоблока по желанию самого сеошника, есть единственный во всем интернете пример задания нового шаблона:
Добавление, изменение и удаление шаблонов мета-тегов
use Bitrix\Iblock\InheritedProperty; 

//ООП  ElementTemplates или SectionTemplates или IblockTemplates )) 
$ipropTemplates = new InheritedProperty\ElementTemplates($IBLOCK_ID, $SECTION_ID, $ELEMENT_ID);

 //Установить шаблон для элемента 
$ipropTemplates->set(array(
         "MY_PROP_CODE" => "{=this.mycode}",
         "SOME_CODE" => "", //Удалить шаблон
));

и есть желание задать новый шаблон, выдающий, к примеру, сумму поля PRICE1 и PRICE2 в шаблоне {=this.sumprice}

У кого есть советы, мудрые мысли, идеи по реализации?
  • Вопрос задан
  • 10278 просмотров
Решения вопроса 1
Alien-Ka
@Alien-Ka Автор вопроса
Я девочка и не хочу платьице. Я хочу кофе и кодить
Оказалось так устанавливается некий новый шаблон текста:
$ipropTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($arResult["IBLOCK_ID"], $arResult["ID"]);
$ipropTemplates->set(array(
"MY_PROP_CODE" => 'Покупайте {=concat this.name section.name "_"} осталось всего '.$count.' штук', 
));

они доступны через запрос
$iTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($arResult["IBLOCK_ID"], $arResult["ID"]);
$templates = $iTemplates->findTemplates();


Получился вот такой массив $templates
[MY_PROP_CODE] => Array
        (
            [ID] => 29
            [CODE] => MY_PROP_CODE
            [TEMPLATE] => "Покупайте {=concat this.name section.name "_"} осталось всего 5 штук"
            [ENTITY_TYPE] => E
            [ENTITY_ID] => 21
            [INHERITED] => N
        )

    [ELEMENT_META_TITLE] => Array
        (
            [ID] => 30
            [CODE] => ELEMENT_META_TITLE
            [TEMPLATE] => Каталог {=this.Name} от магазина Одежда+ {=this.mycode}
            [ENTITY_TYPE] => E
            [ENTITY_ID] => 21
            [INHERITED] => N
        )
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@ragermes
Больше интересно как SKU meta устанавливать...
Ответ написан
Комментировать
Tomio
@Tomio
backend developer (python, php)
Еще до появления этого функционала данная проблема на одном из наших проектов была решена следующим образом:
1 - Создавался инфоблок "SEO-шаблоны", в котором собственно эти элементы-шаблоны и лежали. При добавлении нового SEO-шаблона у элемента было 3 свойства: SEO-title, SEO-Description, SEO-keywords. Туда загонялись шаблоны вида: "Купить #NAME# по цене #PRICE# по выгодным ценам в Москве" (для SEO-title, например).
2. В инфоблоке с товарами у разделов было добавлено новое пользовательское свойство "SEO-шаблон" типа "Привязка к элементам инфоблока".
3. В шаблоне детального просмотра элемента по ID раздела вытаскивались эти свойства и если они были не пустые, то уже простым str_replace("#NAME#", "$arResult["NAME"]", $seo_title) - и т.п. - формировался новый title или метатеги.
4. И благодаря отложенной функции $APPLICATION->SetPageProperty("title", $seo_title); все это чудо прописывалось на страницу.

Таким образом мы прописывали метатеги и тайтлы для товаров в разделе.
Ответ написан
Tomio
@Tomio
backend developer (python, php)
Но вопрос интересный, было бы тоже полезно узнать как в текущей версии БУСа можно расширить список SEO-шаблонов. Так как это было бы проще, чем вышеописанное.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы