Люди как на модификаторе указать несколько условии?
if($value>"0", "В наличии", "Нет в наличии"), if($value>"0", "В наличии", "Нет в наличии")
, if($value>“0”, “В наличии”, “Нет в наличии”)`
Сталкивался кто то:?
Люди как на модификаторе указать несколько условии?
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, и модификатор, который раньше выдавал ошибку, стал работать.
Поставил 50 000) Так как на моделях авто у меня 40 000 символов! Работает! Терь можно импортнуть спокойно файлы YML) 28 000 товаров
если перевалит за 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. В данном файле так начертаны два бренда с разными символами, тогда как же подменить у обеих?
На один столбец можно использовать только один модификатор. Поэтому пока в тех случаях, которые вы описываете, я вижу такие варианты:
Если где-то нужно 2 модификатора или вложенные модификаторы, то автоматически вносить эти правки вне CS-Cart ещё до импорта. Тут понадобится помощь разработчика, но ему не обязательно будет даже разбираться в коде CS-Cart (т.е. должно выйти дешевле).
Обратиться в Help Desk по поводу апострофа и &. Они изучат, и если это баг на нашей стороне, то кредитов не возьмут и передадут программистам, чтобы исправили. Если же это не баг, то посоветуют, как решить проблему или к кому обратиться.
Дождаться выхода 4.10.1. Мы планируем включить туда новые вариации, основанные на характеристиках, т.е. в concat(‘Размер: S[’, $value, ‘]’) (да и вообще в импорте опций) необходимость должна отпасть.
replace(("& apos;","& amp;"),("’","&"),$value)
Попробуйте так, если модификатор использует функцию str_replace. Смысл: Первое значение из входного массива заменяется на первое значение из выходного, второе на второе, третье на третье, итд.
PS: Пробелы после амперсанда мои, их не надо вам, чтобы отобразилось правильно добавил
Спасибо, попробую.
Хочу заметить, что Апостроф может быть разным, в зависимости от того, откуда взят материал или как создан вручную в редакторе сайта. Например он может быть как одиночная кавычка в английской раскладке или как запятая созданная с помощью сочетания горячих клавиш. В таком случае Апостроф даже выглядят по разному.
Конечно же распознавание и замена всех этих бяк должно быть заложено в скрипт импорта. Просто разработчики очень поверхностно подошли к решению. Как говорится - “Было гладко на бумаге, да забыли про овраги”.