Правила Цен Каталога Содержат Условие


Мне нужно сделать скидку на несколько продуктов, в которых артикулы содержат "1513437", например
артикул1=1513437_01
артикул2=1513437_02
и т. Д.
Поэтому я установил новое условие установки правил как

Артикул содержит 1513437

Но это не работает.

Кто-нибудь может помочь?

РЕДАКТИРОВАТЬ

Версия Magento 1.9.2.2

При выключенном плоском режиме он работает.

При включенном плоском режиме он не работает.

Если я использую "содержать" состояние этих продуктов не влияет.

Если я использую условие "не содержит", это повлияет на этот продукт.

Если я использую условие "содержать" в идеальном соответствии, оно работает.

Поэтому я думаю, что проблема в том, что sql-запрос использует LIKE вместо %LIKE%, когда включен плоский режим

Author: krybbio, 2016-01-15

4 answers

Таким образом, проблема заключается в getOperatorCondition() в app/code/core/Mage/Rule/Model/Resource/Rule/Condition/SqlBuilder.php

            case '!{}':
            if (preg_match('/^.*(category_id)$/', $field) && is_array($value)) {
                $selectOperator = ' IN (?)';
            } else {
                $selectOperator = ' LIKE ?';
            }
            if (substr($operator, 0, 1) == '!') {
                $selectOperator = ' NOT' . $selectOperator;
            }
            break;

В строке 67

Чтобы решить эту проблему, вы можете взломать ядро файла, изменив его на %, КАК%, или просто добавить % в таком состоянии, как:

Артикул содержит %1513437%

 2
Author: krybbio, 2016-01-20 10:34:22

Является Применено правило цены каталога , для этого, пожалуйста, откройте правило цены и нажмите Сохранить и применить кнопку. Его работа для меня см. Ниже снимок экрана. enter image description here enter image description here


Я решил эту проблему и восстановился в своем магазине magento. Я попробовал следующие шаги, которые сработали для меня.

Шаг 1: Сделайте вас Правилом цены каталога статусом Неактивным и выполните действие Сохранить и применить .

Шаг 2: Отключена Категория Плоского каталога & Продукт Плоского каталога опция в Система > Конфигурация > КАТАЛОГ > Каталог > Интерфейс

Шаг 3: Теперь измените статус правила цены каталога на Активный и нажал на кнопку Сохранить и применить .

Шаг 4: Теперь включена Категория плоского каталога & Плоский каталог Продукт и очищенный кэш и переиндексированные Плоские данные продукта & Категория Квартира Данные

Надеюсь, этот трюк сработает для вас!

 1
Author: Jayesh Patel, 2016-01-15 11:32:13

Я улучшил код, предоставленный krybbio, потому что он не работал должным образом для меня.

В моем случае я сделал следующие замены:

Первая строка 96, которую я заменил:

foreach ($value as $v) {
    $results[] = $this->_adapter->quoteInto("{$field}{$selectOperator}", $v);
}

С помощью:

foreach ($value as $v) {
    if (in_array($operator, array("{}", "!{}"))) {
        $v = "%".$v."%";
    }
    $results[] = $this->_adapter->quoteInto("{$field}{$selectOperator}", $v);
}

Затем строку 114 я заменил:

} else {
    $result = $this->_adapter->quoteInto("{$field}{$selectOperator}", $value);
}

С помощью:

} else {
    if (in_array($operator, array("{}", "!{}"))) {
        $value = "%".$value."%";
    }
    $result = $this->_adapter->quoteInto("{$field}{$selectOperator}", $value);
}
 1
Author: Raphael at Digital Pianism, 2016-10-21 10:55:57

Попробуйте выполнить следующие действия:

1/ Отключен плоский режим -> Создать правила цен каталога -> сохранить и применить правила -> проверьте внешний интерфейс, чтобы убедиться, что правило применяется

2/ Включен плоский режим -> проверьте внешний интерфейс и проверьте таблицы "catalogrule_product" и "catalogrule_product_price", затем сообщите, если что-то все еще не так

Надеюсь, это поможет

 0
Author: JoeNguyen, 2016-01-15 09:21:53