Фильтры обработки тегов
Фильтры обработки тегов помогут вам улучшить качество сгенерированных объявлений. Фильтры позволяют массово вносить изменения в содержимое тегов 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_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 черный |
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_last_signs:"X" | Вырезать X последних символов | <name> содержит: samsung 32gb
<name|cut_last_signs:"2"> выведет: samsung 32 |
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 |
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 |
replace_map:"X" | Заменить содержимое тега на новое значение, если содержимое тега соответствует заданному условию. Обратите внимание: вы можете задать несколько условий подряд. Например: "условие1||значение1||условие2||значение2||условие3||значение3". Обратите внимание: фильтр учитывает регистры, "условие1" и "УСЛОВИЕ1" считаются разными. |
Пример 1. Задача: Если значение тега <delivery> равно "Доставка 350р", то вместо тега <delivery> ставить "Платная доставка".
<delivery> содержит: Доставка 350р <delivery|replace_map:"Доставка 350р||Платная доставка">
Пример 2. Задача: Если значение тега <delivery> равно "Доставка 0р", то вместо тега <delivery> ставить "Бесплатная доставка". Если значение тега <delivery> равно "Доставка 350р", то вместо тега <delivery> ставить "Платная доставка". Если значение тега <delivery> равно "Нет доставки", то вместо тега <delivery> ставить "Самовывоз".
<delivery> содержит: Нет доставки
|
condition_map:"X" | Заменить содержимое тега на новое значение, если содержимое тега соответствует выбранному цифровому диапазону. Подходит только для тегов, содержащих цифровое значение. Обратите внимание: вы можете в качестве условия задать несколько цифровых диапазонов. | Пример 1. Задача: Если значение тега <delivery> меньше "100", то вместо тега <delivery> ставить "Дешевая доставка". Если значение тега <delivery> больше или равно "100", то вместо тега <delivery> ставить "Дорогая доставка".
<delivery> содержит: 50
Пример 2. Задача: Если значение тега <delivery> меньше "100", то вместо тега <delivery> ставить "Дешевая доставка". Если значение тега <delivery> больше или равно "100" и меньше "300", то вместо тега <delivery> ставить "Средняя доставка". Если значение тега <delivery> больше или равно "300", то вместо тега <delivery> ставить "Дорогая доставка".
<delivery> содержит: 200
|
split_alpha_numeric | Вставить пробел между буквами и цифрами | <name> содержит: FV9915E12
<name|split_alpha_numeric> выведет: FV 9915 E 12 |
unsplit_alpha_numeric | Вырезать пробелы между буквами и цифрами | <name> содержит: FV 9915 EL MK 12
<name|unsplit_alpha_numeric> выведет: FV9915EL MK12 |
default:"X" | Установить значение по умолчанию. Если значение тега пустое или тег не задан, будет использовано значение по умолчанию | Тег <name> пустой
<name|default:"Мобильный телефон"> выведет: Мобильный телефон |
translit | Перевести все русские слова транслитом на английский | <name> содержит: Для транслитерации Text
<name|translit> напишет русские слова английскими символами и выведет: Dlya transliteratsii Text |
untranslit | Перевести все английские слова транслитом на русский | <name> содержит: Dlya transliteratsii Текст
<name|untranslit> напишет английские слова русскими символами и выведет: Для транслитерации Текст |
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 |
Оператор if в генерации шаблонов
С помощью фильтров обработки тегов система может создавать текст объявления и ключевой фразы либо по одному шаблону, либо по другому, в зависимости от заданных условий для тега.
Для настройки оператора if в тегах можно использовать следующие условия:
1. Точное соответствие тега значению параметра
<%if тег (без угловых скобок) == значение (в кавычках) %>
- Если значение тега соответствует условиям, то будет выводиться Строка 1. Задаётся сразу между угловыми скобками <%if%> и <%else%>.
- Если значение тега не соответствует условиям, то будет выводиться Строка 2. Задаётся сразу после <%else%>.
Не забудьте закрыть оператор с помощью <%endif%>.
Пример
Вы хотите указать в своих объявлениях скидку только на товары со строго определённой ценой.
Для этого, при помощи оператора if указываем следующие условия:
<%if price == "990" %> Скидка <sales_notes>% на <name>!<%else%>Более 20000 для детей и взрослых<%endif%>
2. Сравнение значения тега с условиями параметра
<%if тег (без угловых скобок)|to_int знак сравнения значение %>
- Если значение тега входит в область условия оператора, то будет выводиться Строка 1. Задаётся сразу между угловых скобок <%if%> и <%else%>.
- Если значение тега не входит в область условия оператора, то будет выводиться Строка 2. Задаётся сразу после <%else%>.
Не забудьте закрыть оператор с помощью <%endif%>.
Пример
Вы хотите указать в своих объявлениях скидку на товары, но только на те, у которых стоимость дороже порогового значения.
Для этого, при помощи оператора if указываем следующие условия:
<%if price|to_int <= 990 %>Более 20000 для детей и взрослых<%else%>Скидка <sales_notes>% на <name>!<%endif%>
Для всех товаров со стоимостью дороже 990 рублей будет выводиться информация о скидке товара.
Примеры применения фильтров
Пример 1
Вы хотите использовать название товара в заголовке объявления. Название передается в теге <name>, но с маленькой буквы: samsung 32
Применим конструкцию <name|capfirst>
В заголовке объявления будет первое слово с большой буквы: Samsung 32gb
Пример 2
Вы хотите в качестве ключевых слов использовать названия моделей. У вас названия моделей вместе с артикулами передаются в теге <model> и выглядят так:
Пылесос lg 1281 Артикул 23879
Пылесос samsung H-18 Артикул 99348
Пылесос indesit KLD Артикул 34722
Очевидно, что вам хочется использовать в ключевых словах названия моделей без артикулов. Чтобы этого добиться, в шаблонах ключевых слов укажите тег с фильтром Cut_behind_word:"X", который позволяет вырезать слово Артикул и все, что после него:
<model|Cut_behind_word:"Артикул">
В результате в ключевых словах у вас будет следующее:
Пылесос lg 1281
Пылесос samsung H-18
Пылесос indesit KLD
Могу ли я применить сразу несколько фильтров?
Можете! Рассмотрим на нашем "примере с Артикулами"
Пример 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>
В результате обработки мы получим следующие заголовки объявлений:
Lg 1281
Samsung H-18
Indesit KLD