Попробуйте Улучшенный Импорт Товаров

Люди как на модификаторе указать несколько условии?

if($value>"0", "В наличии", "Нет в наличии"), if($value>"0", "В наличии", "Нет в наличии"), if($value>“0”, “В наличии”, “Нет в наличии”)`

Сталкивался кто то:?

В документации есть пример, что-то подобное сделано через модификатор case.

Допустим, в файле поставщика не указано, сколько товаров есть в наличии а просто написано “Да” или “Нет”. Но CS-Cart требует, чтобы было указано определённое количество.

В этом случае вы можете добавить модификатор case($value=Да, 100, $value=Нет, 0) для столбца, где хранится информация о наличии товара. Если в столбце будет “Да”, то CS-Сart будет считать, что в наличии 100 экземпляров товара, а если “Нет”, то 0.

Ну хотел через модификатор “case” но в инструкции есть такое “Поддерживается только чётное количество параметров: 2, 4, 6, 8, и т.д.”

а в мои условия выглядят так if($value=17c276c8e723eb46aef576537e9d56d0, “Santa Fe”, “”)

Возможно, такой подойдёт:
case($value=17c276c8e723eb46aef576537e9d56d0, "Santa Fe", $value!=17c276c8e723eb46aef576537e9d56d0, "")

P.S. А возможно, и нет. Если там много разных value, то будет проблема:

case возвращает значение, соответствующее первому выражению, которое окажется истинным

Т.е. порядок проверки $value нужно будет продумать. Например, так:

case($value=X, "Text 1", $value=Y, "Text 2", $value!=X, "")

Щас же проверю

Дополнил свой ответ P.S., там информация об одном подводном камне, который заметил.

Не сработало, Выглядит это так!
Вот сам case

case($value=17c276c8e723eb46aef576537e9d56d0, "Santa Fe",$value!=7f1171a78ce0780a2142a6eb7bc4f3c8, "Matrix",$value!=b4a528955b84f584974e92d025a75d1f, "i30",$value!=795c7a7a5ec6b460ec00c5841019b9e9, "Getz")

На dev.demo у меня сработал такой:

case($value=17c276c8e723eb46aef576537e9d56d0, "Santa Fe", $value=7f1171a78ce0780a2142a6eb7bc4f3c8, "Matrix", $value=b4a528955b84f584974e92d025a75d1f, "i30", $value=795c7a7a5ec6b460ec00c5841019b9e9, "Getz", $value!=17c276c8e723eb46aef576537e9d56d0, "")

Он проходит по всем вариантам, а в конце проставляет пустое поле, если ни один из вариантов не подтвердился. Для этого я проверяю в начале соотвествие первому критерию. Если первый критерий не подошёл, проверяются все остальные по очереди (если подходят, то модификатор завершает работу), а в конце снова сравниваем с первым, но с условием !=, чтобы проставить "".

Есть подозрение, что проблема в длине модификатора.

думаю да! Можно ли как то изменить это:?
Ну это еще только модели автомобилей) допустим есть еще категории которые хотель бы в модификаторе таким же способом указатЬ!

Пробовал до 5 значении! работает! но у меня больше 200 значении! Хотелось бы увеличить чтобы все заработало! Как это сделать?

Изучили проблему с разработчиком, а потом я проверил у себя на тестовой установке. Зайдите в файл app/addons/advanced_import/Tygh/Addons/AdvancedImport/Modifiers/Parsers/SinglePassModifierParser.php и найдите там строку:

$safe_threshold = 1000;

Замените 1000 на такое количество символов, которого вам хватит. Я заменил на 2000, и модификатор, который раньше выдавал ошибку, стал работать.

1 лайк

Поставил 50 000) Так как на моделях авто у меня 40 000 символов! Работает! Терь можно импортнуть спокойно файлы YML) 28 000 товаров

1 лайк

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

В XML-файле указаны размеры в ** американском цифровом обозначении**, например размер обуви 8,5.
В пресете полю Размер назначается Опция. После импорта товара на карточке товара появляется Опция (выпадающий список выбора размера) в которой вместо размера 8,5 оказываются два размера - 8 и 5. Получается, что скрипт считает запятую разделителем разных размеров.

Как победить этот эффект? Можно ли как-то обойти эту неприятность применив модификатор?

Сейчас действительно только через модификатор или вручную/автоматически перед импртом вне CS-Cart.

Несколько вариантов одной опции передаются так, как описано здесь: https://www.cs-cart.ru/docs/4.9.x/user_guide/manage_products/import_export/fields_format.html#id2. Т.е. да, разделителем там служит запятая

Модификатор может убрать из столбца все запятые, заменив их на точки: replace(",", '.', $value). Но так как я не видел ваш файл, то трудно сказать, не сломается ли при этом что-то ещё.

Документация по модификатором находится прямо на странице импорта, на вкладке “Соответствие полей”. Там есть кнопка “Список модификаторов”. Возможно, вы найдёте ещё что-то полезное.

Вероятно, проблема также решится в новых вариациях, основанных на характеристиках (запланированы в 4.10.1 на вторую половину весны). Каждую характеристику, существующую в магазине, уже можно импортировать в отдельном столбце.

А как добавить - replace(“,”, ‘.’, $value),
если уже вставлен другой модификатор - concat(‘Размер: S[’, $value, ‘]’)


Два модификатора подряд разве можно?

P.S. Закинуть файл посмотреть?

@ikoshkin
Скажите, как с помощью модификатора заменить в брендах сразу два символа &ароs; и &аmр; или больше символов, ведь модификатор позволяет только три параметра.
Вот пример правильного написания брендов - Jack’s Square и Atributika&Club, такие они в файле, но после импорта получается Jack&ароs;s Square и Atributika&аmр;Club. В данном файле так начертаны два бренда с разными символами, тогда как же подменить у обеих?

На один столбец можно использовать только один модификатор. Поэтому пока в тех случаях, которые вы описываете, я вижу такие варианты:

  1. Если где-то нужно 2 модификатора или вложенные модификаторы, то автоматически вносить эти правки вне CS-Cart ещё до импорта. Тут понадобится помощь разработчика, но ему не обязательно будет даже разбираться в коде CS-Cart (т.е. должно выйти дешевле).

  2. Обратиться в Help Desk по поводу апострофа и &. Они изучат, и если это баг на нашей стороне, то кредитов не возьмут и передадут программистам, чтобы исправили. Если же это не баг, то посоветуют, как решить проблему или к кому обратиться.

  3. Дождаться выхода 4.10.1. Мы планируем включить туда новые вариации, основанные на характеристиках, т.е. в concat(‘Размер: S[’, $value, ‘]’) (да и вообще в импорте опций) необходимость должна отпасть.

replace(("& apos;","& amp;"),("’","&"),$value)
Попробуйте так, если модификатор использует функцию str_replace. Смысл: Первое значение из входного массива заменяется на первое значение из выходного, второе на второе, третье на третье, итд.
PS: Пробелы после амперсанда мои, их не надо вам, чтобы отобразилось правильно добавил

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

apostrof

Конечно же распознавание и замена всех этих бяк должно быть заложено в скрипт импорта. Просто разработчики очень поверхностно подошли к решению. Как говорится - “Было гладко на бумаге, да забыли про овраги”.