Все что описано в этой статье доступно с версии модуля SimplePars 4.8 и новее!
Обратите внимание что эта статья идет как часть статьи об Логические и Арифметические операторы в парсинге в интернет магазин и вынесена отдельно только по причине своей сложности и низкой востребованности.
IF - Очень важный оператор разветвления, благодаря нему в языках программирования можно строить разные сценарии выполнения в зависимости от данных.
По сути, сам перевод этого оператора много говорит за себя "Если".
Поскольку у нас парсер, то при помощи этого оператора мы можем посмотреть что есть в границе парсинга и в зависимости от этого использовать одну или другую границу.
Доступные операторы группы if
{if[]} - Если. Блок указания условия.
{elif[]} - Альтернативное ЕСЛИ. Проверяется в случаи если условие в блоке {if[]} не правдиво.
{else} - Иначе. Значение по умолчанию, устанавливается если {if[]} и все последующие {elif[]} не правдивы.
Обратите внимание на квадратные скобки в {if[]} и {elif[]} В них записывается условие.
Форма записи в модуле
Если в каком то поле вы хотите использовать логические операторы группы if, то поле должно начинаться с оператора {if[]} и никак иначе.
Пример
Только в таком случае SimplePars поймет что здесь есть разветвление и нужно правильно обработать это поле.
Структура записи
Запись логического оператора состоит из двух частей.
- Условие - В этой части мы записываем условие. Если условие правдиво, то значение в теле условия будет записано в товар. Если условие не правдиво, то управление передастся в блоки {elif[]} или {else}
- Тело - Значение которое попадет в товар если условие будет правдиво.
Условие - Условие может быть как одно значение, так и два значения разделенные специальными логическими операторами.
Доступные логические операторы в условии.
- {=} - Значение слева равно значению справа.
- {>} - Значение слева больше значения справа
- {<} - Значение слева меньше значения справа
Если в условии только одно значение без доп. операторов, то правдивым условием считается любое не пустое значение, и значение не равное 0 !!!
Примеры
Давайте для наглядности представим что примеры мы показываем в поле цена товара
Одно значение в условии
{if[1]}100 - В этом случае цена товара будет установлена 100, поскольку 1 это не пусто, и не равно 0. Значит условие правдиво и тело условия записано в цену товара.
{if[{gran_17}]}100 - Допустим что в границе {gran_17} пусто, а это значит что условие if не правдиво, и модуль ничего не передаст в цену. Это эквивалентно ситуации когда вы ничего не указали в поле цена товара.
Два значения с дополнительными операторами
Теперь давайте представим что у нас есть две границы парсинга, {gran_1} в ней цифра 100 И {gran_2} в ней цифра 50
{if[{gran_1}{=}{gran_2}]}100 - В данном случае мы сравниваем значение из двух границ, модуль возьмет их содержимое, а именно 100 и 50 и проверит 100 = 50 ? Ответ нет, значит условие не выполняется.
{if[{gran_1}{>}{gran_2}]}100 - По аналогии с равно, 100 > 50 ? Да, значит тело оператора будет передано в цену товара.
{if[{gran_1}{<}{gran_2}]}100 - Так же и тут 100 < 50 ? Нет, значит Тело не будет передано.
Сравнение текста
При сравнении цифр, все банально просто, но если вы будете использовать сравнение текста то учтите:
- {=} - В этом случае будет проверятся равен ли текст с левой стороны к тексту с правой стороны от оператора {=}.
- {>} и {<} - В этом случае производится Лексикографическое сравнение это отдельная история кому нужно можете загуглить что это такое, от себя рекомендую не использовать знаки больше и меньше в сравнении текста. Если вы не знаете зачем вам это.
Зачем нам {elif[]} и {else} ?
Благодаря этим операторам вы можете делать разветвление.
{elif[]} - Тоже самое что и {if[]}, Разница только в том, что {elif[]} будет проверятся только в том случаи если {if[]} не правдив. Так же {elif[]} может быть неограниченное количество, а вот {if[]} только одно и в начале.
{else} - Это что то на подобие значения по умолчанию, если {if[]} не правдив, и все {elif[]} то же не правдивы, то модуль смотрит если у вас запись {else} Если она есть, тогда модуль берет тело этого блока и записывает в товар. Аналог значения по умолчанию.
Пример.
Обратите внимание что {elif[]} может быть сколько угодно, не только один как представлено на скриншоте выше, а и два или десять.
К примеру эта запись полностью правильная и рабочая.
{if[{gran_1}{<}{gran_2}]}100{elif[{gran_1}{=}{gran_2}]}200{elif[{gran_1}{>}{gran_2}]}300{else}400
Тело условия.
А вот что может быть указано в теле условия вы можете прочитать в этой статье.
Логические и Арифметические операторы в парсинге в интернет магазин
Единственное покажу что теперь можно все это комбинировать и указывать даже такую жесть.
{if[{gran_1}{<}{gran_2}]}666{+}34{*}100{-}70000{|}0{+}12{*}10{/}2{|}100{*}12{else}777
И даже больше скажу, это теперь вполне приемлемая для модуля SimplePars запись которая будет обработана и в зависимости от ваших потребностей выбрано правильное значение и записано в поле.