MalishBob Опубликовано 21 января, 2020 Жалоба Поделиться Опубликовано 21 января, 2020 (изменено) Хочу написать скрипт для перебора всех товаров на сайте и редактирования у них названий. Как перебирать товары вроде понял. А как установить новое значение для названия у товара не смог. Вот мой овнокод: <?php require_once('/var/www/site.ru/api/Simpla.php'); $simpla = new Simpla(); $filter = array(); // Ограничение по количеству вывода товаров. // Товаров на сайте более 400к и перебрать в цикле все не получается из-за 502 ошибки (вероятно в апачи стоит ограничение по времени выполнения скрипта) // поэтому временно поставил лимит в 1000 товаров $filter['limit'] = 1000; foreach ($simpla->products->get_products($filter) as $product) { $variants = $simpla->variants->get_variants(array('product_id'=>$product->id)); $product_sku = $variants[0]->sku; //артикул товара $product_name = $product->name; //название товара // Проверяем, если название содержит артикул (sku), то удаляем его if(strpos($product_name, $product_sku) !== false) { //Новое название без артикула $new_product_name = trim(str_replace($product_sku, '', $product_name)); //Применить новое название для товара // как это можно сделать? } } Подскажите люди добрые как можно это сделать. Изменено 21 января, 2020 пользователем MalishBob Цитата Ссылка на сообщение Поделиться на другие сайты
simpla24 Опубликовано 21 января, 2020 Жалоба Поделиться Опубликовано 21 января, 2020 (изменено) Попробуйте: $simpla->products->update_product($product->id, array("name"=>$new_product_name)); Изменено 21 января, 2020 пользователем fancy-studio Цитата Ссылка на сообщение Поделиться на другие сайты
Решение mishanya Опубликовано 21 января, 2020 Решение Жалоба Поделиться Опубликовано 21 января, 2020 если вам нужно просто удалить из названия артикул, сделайте просто запрос в базу и не стройте огород UPDATE s_products p INNER JOIN s_variants v on p.id = v.product_id AND v.position=(SELECT MIN(position) FROM s_variants WHERE product_id=p.id LIMIT 1) SET p.name = REPLACE(p.name, v.sku, ''); Цитата Ссылка на сообщение Поделиться на другие сайты
MalishBob Опубликовано 22 января, 2020 Автор Жалоба Поделиться Опубликовано 22 января, 2020 Попробуйте:Спасибо большое! Теперь буду знать) Наверное, действительно, лучше прямым запросом как пишет Мишаня, так быстрей отработает скрипт. если вам нужно просто удалить из названия артикул, сделайте просто запрос в базу и не стройте огород UPDATE s_products p INNER JOIN s_variants v on p.id = v.product_id AND v.position=(SELECT MIN(position) FROM s_variants WHERE product_id=p.id LIMIT 1) SET p.name = REPLACE(p.name, v.sku, ''); Благодарю) Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.