MalishBob Posted January 21, 2020 Report Share Posted January 21, 2020 (edited) Хочу написать скрипт для перебора всех товаров на сайте и редактирования у них названий. Как перебирать товары вроде понял. А как установить новое значение для названия у товара не смог. Вот мой овнокод: <?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)); //Применить новое название для товара // как это можно сделать? } } Подскажите люди добрые как можно это сделать. Edited January 21, 2020 by MalishBob Quote Link to post Share on other sites
simpla24 Posted January 21, 2020 Report Share Posted January 21, 2020 (edited) Попробуйте: $simpla->products->update_product($product->id, array("name"=>$new_product_name)); Edited January 21, 2020 by fancy-studio Quote Link to post Share on other sites
Solution mishanya Posted January 21, 2020 Solution Report Share Posted January 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, ''); Quote Link to post Share on other sites
MalishBob Posted January 22, 2020 Author Report Share Posted January 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, ''); Благодарю) Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.