Фильтры обработки тегов

Материал из Alytics Wiki
Версия от 18:16, 15 января 2016; Elizabeth (обсуждение | вклад) (Оператор if в генерации шаблонов)

Перейти к: навигация, поиск

Фильтры обработки тегов помогут вам улучшить качество сгенерированных объявлений. Фильтры позволяют массово вносить изменения в содержимое тегов xml-файла и минимизировать ручные корректировки:

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

Чтобы применить фильтр к тегу, просто добавьте его через разделитель внутри тега, вот так: <name|capfirst>

Обратите внимание, что для использования символов < и > в параметрах фильтров или в тексте вне тега их обязательно нужно экранировать обратным слешем. Также, при использовании обратных слешей в параметрах фильтров, их тоже нужно экранировать обратным слешем. Например: <name|cut:"\<"> или <name|cut:"\\">

Возможные фильтры

Изменение регистра символа, слова, группы слов

Фильтр Описание Пример
capfirst Первая буква в первом слове тега становится заглавной <name> содержит: телефон samsung 32gb

<name|capfirst> выведет: Телефон samsung 32gb

lower Привести все слова к нижнему регистру <name> содержит: Телефон SAMSUNG 32GB

<name|lower> выведет: телефон samsung 32gb

upper Привести все слова к верхнему регистру <name> содержит: Телефон SAMSUNG 32GB

<name|upper> выведет: ТЕЛЕФОН SAMSUNG 32GB

words_case_capfirst_with:"X" Сделать первую букву заглавной в словах, которые содержат заданные символы. Обратите внимание: регистр символов имеет значение. <name> содержит: super sony1 vaio без порта909 доставка

<name|words_case_capfirst_with:"т"> сделает с заглавной буквы только слова содержащие т: super sony1 vaio без Порта909 Доставка <name|words_case_capfirst_with:"ony"> сделает с заглавной буквы только слова содержащие ony: super Sony1 vaio без порта909 доставка

words_case_capfirst:"X" Позволяет автоматически выбрать слова, которые необходимо написать с заглавной буквы. Можно выбрать либо только слова на русском("R"), либо только слова на английском("E"), либо слово с заданным порядковым номером ("5") Если слово содержит смесь английских и русских букв или смесь букв и цифр, то у него не будет изменен регистр, если в качестве критерия выбран язык words_case_capfirst:"3"> сделает заглавной букву только у третьего слова по порядку: super sony1 Vaio без порта909 доставка

<name|words_case_capfirst:"E"> сделает заглавными буквы только у английских слов: Super sony1 Vaio без порта909 доставка <name|words_case_capfirst:"R"> сделает заглавными буквы только у русских слов: super sony1 vaio Без порта909 Доставка <name|words_case_capfirst:"1E"> сделает заглавной букву только у первого английского слова: Super sony1 vaio без порта909 доставка <name|words_case_capfirst:"2R"> сделает заглавной букву только у второго русского слова: super sony1 vaio без порта909 Доставка Если вам необходимо сделать заглавную букву сразу у двух слов с учетом их порядка, то указывайте два фильтра подряд: <name|words_case_capfirst:"2"|words_case_capfirst:"3">

words_case_upper:"X" Позволяет автоматически выбрать слова, которые необходимо перевести в верхний регистр. Можно выбрать либо только слова на русском("R"), либо только слова на английском("E"), либо слово с заданным порядковым номером("5") Если слово содержит смесь английских и русских букв или смесь букв и цифр, то у него не будет изменен регистр, если в качестве критерия выбран язык <name> содержит: super sony1 vaio без порта909 доставка

<name|words_case_upper:"3"> сделает верхним регистром только третье слово по порядку: super sony1 VAIO без порта909 доставка <name|words_case_upper:"E"> сделает верхним регистром только английские слова: SUPER sony1 VAIO без порта909 доставка <name|words_case_upper:"R"> сделает верхним регистром только русские слова: super sony1 vaio БЕЗ порта909 ДОСТАВКА <name|words_case_upper:"1E"> сделает верхним регистром только первое английское слово: SUPER sony1 vaio без порта909 доставка <name|words_case_upper:"2R"> сделает верхним регистром только второе русское слово: super sony1 vaio без порта909 ДОСТАВКА Если вам необходимо изменить регистр сразу у двух слов с учетом их порядка, то указывайте два фильтра подряд: <name|words_case_upper:"2"|words_case_upper:"3">

words_case_lower:"X" Позволяет автоматически выбрать слова, которые необходимо перевести в нижний регистр. Можно выбрать либо только слова на русском("R"), либо только слова на английском("E"), либо слово с заданным порядковым номером("5") Если слово содержит смесь английских и русских букв или смесь букв и цифр, то у него не будет изменен регистр, если в качестве критерия выбран язык <name> содержит: SUPER SONY1 VAIO БЕЗ ПОРТА909 ДОСТАВКА

<name|words_case_lower:"3"> сделает нижним регистром только третье слово по порядку: SUPER SONY1 vaio БЕЗ ПОРТА909 ДОСТАВКА <name|words_case_lower:"E"> сделает нижним регистром только английские слова: super SONY1 vaio БЕЗ ПОРТА909 ДОСТАВКА <name|words_case_lower:"R"> сделает нижним регистром только русские слова: SUPER SONY1 VAIO без ПОРТА909 доставка <name|words_case_lower:"1E"> сделает нижним регистром только первое английское слово: super SONY1 VAIO БЕЗ ПОРТА909 ДОСТАВКА <name|words_case_lower:"2R"> сделает нижним регистром только второе русское слово: SUPER SONY1 VAIO БЕЗ ПОРТА909 доставка Если вам необходимо изменить регистр сразу у двух слов с учетом их порядка, то указывайте два фильтра подряд: <name|words_case_lower:"2"|words_case_lower:"3">

words_case_swap:"X" Позволяет автоматически выбрать слова, регистр которых необходимо инвертировать. Можно выбрать либо только слова на русском("R"), либо только слова на английском("E"), либо слово с заданным порядковым номером("5") Если слово содержит смесь английских и русских букв или смесь букв и цифр, то у него не будет изменен регистр, если в качестве критерия выбран язык <name> содержит: Super Sony1 Vaio Без Порта909 Доставка

<name|words_case_swap:"3"> инвертирует регистр только у третьего слова по порядку: Super Sony1 vAIO Без Порта909 Доставка <name|words_case_swap:"E"> инвертирует регистр только у английских слов: sUPER Sony1 vAIO Без Порта909 Доставка <name|words_case_swap:"R"> инвертирует регистр только у русских слов: Super Sony1 Vaio бЕЗ Порта909 дОСТАВКА <name|words_case_swap:"1E"> инвертирует регистр только у первого английского слова: sUPER Sony1 Vaio Без Порта909 Доставка <name|words_case_swap:"2R"> инвертирует регистр только у второго русского слова: Super Sony1 Vaio Без Порта909 дОСТАВКА Если вам необходимо инвертировать регистр сразу у двух слов с учетом их порядка, то указывайте два фильтра подряд: <name|words_case_swap:"2"|words_case_swap:"3">

words_case_upper_with:"X" Привести слова к верхнему регистру, если они содержат заданные символы. Обратите внимание: регистр символов имеет значение <name> содержит: super sony1 vaio без порта909 доставка

<name|words_case_upper_with:"s"> сделает верхний регистр только у слов содержащих s: SUPER SONY1 vaio без порта909 доставка <name|words_case_upper_with:"дос"> сделает верхний регистр только у слов содержащих дос: super sony1 vaio без порта909 ДОСТАВКА

words_case_lower_with:"X" Привести слова к нижнему регистру, если они содержат заданные символы. Обратите внимание: регистр символов имеет значение. <name> содержит: SUPER SONY1 VAIO БЕЗ ПОРТА909 ДОСТАВКА

<name|words_case_lower_with:"S"> сделает нижний регистр только у слов содержащих S: super sony1 VAIO БЕЗ ПОРТА909 ДОСТАВКА <name|words_case_lower_with:"ДОС"> сделает нижний регистр только у слов содержащих ДОС: SUPER SONY1 VAIO БЕЗ ПОРТА909 доставка

words_case_swap_with:"X" Инвертировать регистр слов, если они содержат заданные символы. Обратите внимание: регистр символов имеет значение. <name> содержит: super Sony1 Vaio Без Порта909 Доставка

<name|words_case_swap_with:"S"> инвертирует регистр только у слов содержащих большую S: super sONY1 Vaio Без Порта909 Доставка <name|words_case_swap_with:"Дос"> инвертирует регистр только у слов содержащих Дос: super Sony1 Vaio Без Порта909 дОСТАВКА

Вырезать пробел, символ или группу символов

Фильтр Описание Пример
cut_rus_words Вырезать все русские слова из тега. Обратите внимание, что если слово содержит смесь русских символов и нерусских, то оно не будет вырезано. Также, если слово содержит смесь русских символов и цифр, то оно не будет вырезано <name> содержит: color ПФР yellow ФФdarck

<name|cut_rus_words> выведет: color yellow ФФdarck

cut_eng_words Вырезать все английские слова из тега. Обратите внимание, что если слово содержит смесь английских символов и неанглийских, то оно не будет вырезано. Также, если слово содержит смесь английских символов и цифр, то оно не будет вырезано <name> содержит: color ПФР yellow ФФdarck

<name|cut_eng_words> выведет: ПФР ФФdarck

cut_digits Вырезать все цифры <name> содержит: Samsung HD32GB 1301 RUS

<name|cut_digits> выведет: Samsung HDGB RUS

cut_bracketed Удалить все, что заключено в скобках вместе со скобками.
Обратите внимание, что скобками является все, что заключено в (), [], {}, <>
<name> содержит: samsung 32gb (темно черный арт-1821)

<name|cut_bracketed> выведет: samsung 32gb

cut_service Удалить все символы -&:+/\№ <name> содержит: samsung 32gb №32&100

<name|cut_service> выведет: samsung 32gb 32100

cut_word:"X" Вырезать указанное слово или словосочетание. Если вы хотите вырезать более чем одно слово/словосочетание, то указаывайте фильтр cut_word столько раз, сколько слов/словосочетаний хотите вырезать <name> содержит: телефон samsung 32gb темно черный

Чтобы удалить слово "темно", укажите конструкцию <name|cut_word:"темно">, результат: Телефон samsung 32gb черный
Чтобы удалить словосочеатние "темно черный", укажите конструкцию <name|cut_word:"темно черный">, результат: Телефон samsung 32gb
Чтобы удалить слово "Телефон" и "темно", укажите конструкцию <name|cut_word:"темно"|cut_word:"телефон">, результат: samsung 32gb черный

cut_behind_word:"X" Вырезать все слова после указанного слова или словосочетания <name> содержит: мобильный телефон слайдер samsung 32gb темно черный

<name|cut_behind_word:"samsung"> выведет: мобильный телефон слайдер samsung

cut_before_word:"X" Вырезать все слова перед указанным словом или словосочетанием <name> содержит: мобильный телефон слайдер samsung 32gb темно черный

<name|cut_before_word:"слайдер"> выведет: слайдер samsung 32gb темно черный

cut_words_shorter:"X" Вырезать все слова, длина которых меньше или равна X. Обратите внимание, словами считаются также наборы из цифр, знаков препинания и спецсимволов <name> содержит: samsung hd 32gb 18 white

<name|cut_words_shorter:"2"> выведет: samsung 32gb white

trunc_first_words:"X" Вырезать все слова кроме первых X слов <name> содержит: samsung 32gb темно черный арт-1821

<name|trunc_first_words:"2"> выведет: samsung 32gb

trunc_last_words:"X" Вырезать все слова, кроме последних Х слов <name> содержит: новый мобильный телефон слайдер samsung 32gb

<name|trunc_last_words:"2"> выведет: samsung 32gb

cut_first_words:"X" Вырезать X первых слов <name> содержит: новый мобильный телефон слайдер samsung 32gb

<name|cut_first_words:"4"> выведет: samsung 32gb

cut_last_words:"X" Вырезать X последних слов <name> содержит: samsung 32gb темно черный арт-1821

<name|cut_last_words:"3"> выведет: samsung 32gb

cut_first_signs:"X" Вырезать X первых символов <name> содержит: samsung 32gb

<name|cut_first_signs:"3"> выведет: sung 32gb

cut_word_number:"X"cut_last_signs:"X" Вырезать X последних символов <name> содержит: samsung 32gb

<name|cut_last_signs:"2"> выведет: samsung 32

cut_word_number:"X"cut_word_number:"X" Вырезать слова выбранного порядкового номера (с начала или с конца фразы) <name> содержит: телефон samsung 32gb wifi

<name|cut_word_number:"2"> вырежет второе слово с начала и выведет: телефон 32gb wifi <name|cut_word_number:"-2"> вырежет второе слово с конца и выведет: телефон samsung wifi

cut_words_length:"X" Вырезать все слова, длина которых или больше, или меньше, или равна заданному значению <name> содержит: 123 1234 12345 123456 1234567

<name|cut_words_length:"5"> вырежет слова, длина которых равна 5, и выведет: 123 1234 123456 1234567 <name|cut_words_length:"le5"> вырежет слова, длина которых меньше или равна 5, и выведет: 123456 1234567 <name|cut_words_length:"lt5"> вырежет слова, длина которых меньше 5, и выведет: 12345 123456 1234567 <name|cut_words_length:"ge5"> вырежет слова, длина которых больше или равна 5, и выведет: 123 1234 <name|cut_words_length:"gt5"> вырежет слова, длина которых больше 5, и выведет: 123 1234 12345

unsplit_alpha_numeric Вырезать пробелы между буквами и цифрами <name> содержит: FV 9915 EL MK 12

<name|unsplit_alpha_numeric> выведет: FV9915EL MK12

cut:"X" Вырезать указанный символ или группу символов. Если вы хотите вырезать более чем один символ/группу символов, то указывайте фильтр cut столько раз, сколько символов/групп символов хотите вырезать <name> содержит: samsung 32gb темно черный арт-1821

<name|cut:"-"|cut:"gb"> выведет: samsung 32 темно черный арт1821

cut_behind_sign:"X" Вырезать все после указанного одиночного символа. <name> содержит: samsung hd 32gb-18 white

<name|cut_behind_sign:"b"> выведет: samsung hd 32gb

Фильтры замены и условий

Фильтр Описание Пример
replace:"X" Заменить в содержимом тега все вхождения символа или группы символов. Обратите внимание: фильтр не учитывает регистры, "условие1" и "УСЛОВИЕ1" считаются одинаковыми. <name> содержит: Samsung 32gb

<name|replace:"samsung||Apple"> выведет: Apple 32gb

inner_replace:"X" Заменить текст между двумя наборами символов <name> содержит: sony vaio 32gb wifi

<name|inner_replace:"sony||32gb|| ваио "> выведет: sony ваио 32gb wifi

inner:"X" Оставить только текст между двумя наборами символов <name> содержит: sony vaio 32gb wifi

<name|inner:"sony||32"> выведет: vaio <name|inner:"vaio||"> оставить все от vaio до конца: 32gb wifi

<name> содержит: AA, text, BB other <name|inner:",||,"> выведет: text

condition_map:"X" Заменить содержимое тега на новое значение, если содержимое тега соответствует выбранному цифровому диапазону. Подходит только для тегов, содержащих цифровое значение. Обратите внимание: вы можете в качестве условия задать несколько цифровых диапазонов. Пример 1. Задача: Если значение тега <delivery> меньше "100", то вместо тега <delivery> ставить "Дешевая доставка". Если значение тега <delivery> больше или равно "100", то вместо тега <delivery> ставить "Дорогая доставка".

<delivery> содержит: 50
<delivery|condition_map:"Дешевая доставка||100||Дорогая доставка">
выведет: Дешевая доставка
<delivery> содержит: 150
<delivery|condition_map:"Дешевая доставка||100||Дорогая доставка">
выведет: Дорогая доставка

Пример 2. Задача: Если значение тега <delivery> меньше "100", то вместо тега <delivery> ставить "Дешевая доставка". Если значение тега <delivery> больше или равно "100" и меньше "300", то вместо тега <delivery> ставить "Средняя доставка". Если значение тега <delivery> больше или равно "300", то вместо тега <delivery> ставить "Дорогая доставка". <delivery> содержит: 200
<delivery|condition_map:"Дешевая доставка||100||Средняя доставка||300||Дорогая доставка">
выведет: Средняя доставка

replace_map:"X" Заменить содержимое тега на новое значение, если содержимое тега соответствует заданному условию. Обратите внимание: вы можете задать несколько условий подряд. Например: "условие1||значение1||условие2||значение2||условие3||значение3".
Обратите внимание: фильтр учитывает регистры, "условие1" и "УСЛОВИЕ1" считаются разными.
Пример 1. Задача: Если значение тега <delivery> равно "Доставка 350р", то вместо тега <delivery> ставить "Платная доставка".

<delivery> содержит: Доставка 350р <delivery|replace_map:"Доставка 350р||Платная доставка">
выведет: Платная доставка
<delivery> содержит: Нет доставки <delivery|replace_map:"350||Платная доставка">
выведет: Нет доставки

Пример 2. Задача: Если значение тега <delivery> равно "Доставка 0р", то вместо тега <delivery> ставить "Бесплатная доставка". Если значение тега <delivery> равно "Доставка 350р", то вместо тега <delivery> ставить "Платная доставка". Если значение тега <delivery> равно "Нет доставки", то вместо тега <delivery> ставить "Самовывоз". <delivery> содержит: Нет доставки
<delivery|replace_map:"Доставка 350р||Платная доставка||Доставка 0р||Бесплатная доставка||Нет доставки||Самовывоз">
выведет: Самовывоз

default:"X" Установить значение по умолчанию. Если значение тега пустое или тег не задан, будет использовано значение по умолчанию Тег <name> пустой

<name|default:"Мобильный телефон"> выведет: Мобильный телефон

Добавить синонимы, транслит, пробел, символ или группу символов

Фильтр Описание Пример
split_alpha_numeric Вставить пробел между буквами и цифрами <name> содержит: FV9915E12

<name|split_alpha_numeric> выведет: FV 9915 E 12

translit Перевести все русские слова транслитом на английский <name> содержит: Для транслитерации Text

<name|translit> напишет русские слова английскими символами и выведет: Dlya transliteratsii Text

untranslit Перевести все английские слова транслитом на русский <name> содержит: Dlya transliteratsii Текст

<name|untranslit> напишет английские слова русскими символами и выведет: Для транслитерации Текст

synonyms Добавлять синонимичные ключевые фразы, если в теге встречаются слова из списков синонимов. Обратите внимание: данный фильтр может быть применен только на индивидуальном уровне ключевых фраз. <name> содержит: Apple iphone 6 В списках синонимов указаны синонимы: Apple - Эппл, Аппл

<name|synonyms> выведет три ключевые фразы: Apple iphone 6, Эппл iphone 6, Аппл iphone 6

Оператор if в генерации шаблонов

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

Для настройки оператора if в тегах можно использовать следующие условия:

1. Точное соответствие тега значению параметра

<%if тег (без угловых скобок) == значение (в кавычках) %>
  • Если значение тега соответствует условиям, то будет выводиться Строка 1. Задаётся сразу между угловыми скобками <%if%> и <%else%>.
  • Если значение тега не соответствует условиям, то будет выводиться Строка 2. Задаётся сразу после <%else%>.

Не забудьте закрыть оператор с помощью <%endif%>.

Пример

Вы хотите указать в своих объявлениях скидку только на товары со строго определённой ценой.

Для этого, при помощи оператора if указываем следующие условия:

<%if price == "990" %> Скидка <sales_notes>% на <name>!<%else%>Более 20000 для детей и взрослых<%endif%>

Оператор if - равно.png


2. Сравнение значения тега с условиями параметра

<%if тег (без угловых скобок)|to_int знак сравнения значение %>
  • Если значение тега входит в область условия оператора, то будет выводиться Строка 1. Задаётся сразу между угловых скобок <%if%> и <%else%>.
  • Если значение тега не входит в область условия оператора, то будет выводиться Строка 2. Задаётся сразу после <%else%>.

Не забудьте закрыть оператор с помощью <%endif%>.

Пример

Вы хотите указать в своих объявлениях скидку на товары, но только на те, у которых стоимость дороже порогового значения.

Для этого, при помощи оператора if указываем следующие условия:

<%if price|to_int <= 990 %>Более 20000 для детей и взрослых<%else%>Скидка <sales_notes>% на <name>!<%endif%>

Для всех товаров со стоимостью дороже 990 рублей будет выводиться информация о скидке товара.

Оператор if - сравнение.png


Использование нескольких фильтров

Вы можете одновременно использовать в теге несколько фильтров.

Примеры применения фильтров

Пример 1

Вы хотите использовать название товара в заголовке объявления. Название передается в теге <name>, но с маленькой буквы: samsung 32

Применим конструкцию <name|capfirst>


Фильтры тегов 1.png


В заголовке объявления будет первое слово с большой буквы: Samsung 32gb


Фильтры тегов 2.png


Пример 2

Вы хотите в качестве ключевых слов использовать названия моделей. У вас названия моделей вместе с артикулами передаются в теге <model> и выглядят так:

Пылесос lg 1281 Артикул 23879

Пылесос samsung H-18 Артикул 99348

Пылесос indesit KLD Артикул 34722

Очевидно, что вам хочется использовать в ключевых словах названия моделей без артикулов. Чтобы этого добиться, в шаблонах ключевых слов укажите тег с фильтром Cut_behind_word:"X", который позволяет вырезать слово Артикул и все, что после него:

<model|Cut_behind_word:"Артикул">


Фильтры тегов 3.png


В результате в ключевых словах у вас будет следующее:

Пылесос lg 1281

Пылесос samsung H-18

Пылесос indesit KLD


Фильтры тегов 4.png


Могу ли я применить сразу несколько фильтров?

Можете! Рассмотрим на нашем "примере с Артикулами"

Пример 3

В теге <model> указываются названия моделей с артикулами:

Пылесос lg 1281 Артикул 23879

Пылесос samsung H-18 Артикул 99348

Пылесос indesit KLD Артикул 34722

Предположим, что мы хотим использовать названия товаров в заголовках объявлений, но без Артикула и без первого слова Пылесос. А также хотим, чтобы первое слово в заголовках начиналось с большой буквы. Для решения этой задачи применяем последовательно три фильтра:

Cut_behind_word:"Артикул" - Вырезать все слова после слова Артикул

Cut_first_words:"1"- Вырезать первое слово

Capfirst - Сделать первую букву заглавной.

В шаблоне заголовка объявления это будет выглядеть так:

<model|Cut_behind_word:"Артикул"|Cut_first_words:"1"|Capfirst>


Фильтры тегов 5.png


В результате обработки мы получим следующие заголовки объявлений:

Lg 1281

Samsung H-18

Indesit KLD


Фильтры тегов 6.png