Перейти к содержимому


Фото
- - - - -

Перебор названий всех товаров на сайте для их редактирования

simpla products product variants sku

Best Answer mishanya , 22.01.2020 - 01:51

если вам нужно просто удалить из названия артикул, сделайте просто запрос в базу и не стройте огород

 

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, '');
Go to the full post


  • Please log in to reply
3 replies to this topic

#1 MalishBob

MalishBob
  • Пользователь
  • 4 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:оттуда

Posted 21.01.2020 - 18:53

Хочу написать скрипт для перебора всех товаров на сайте и редактирования у них  названий.

 

Как перебирать товары вроде понял. А как установить новое значение для названия у товара не смог.

 

Вот мой овнокод:

<?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 by MalishBob, 21.01.2020 - 18:58.


#2 fancy-studio

fancy-studio
  • Пользователь
  • 91 сообщений
  • Дизайн, Программирование, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда::)

Posted 21.01.2020 - 18:59

Попробуйте:

$simpla->products->update_product($product->id, array("name"=>$new_product_name));

Edited by fancy-studio, 21.01.2020 - 19:00.


#3 mishanya

mishanya
  • Фрилансер
  • 2 575 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Posted 22.01.2020 - 01:51   Best Answer

если вам нужно просто удалить из названия артикул, сделайте просто запрос в базу и не стройте огород

 

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, '');


#4 MalishBob

MalishBob
  • Пользователь
  • 4 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:оттуда

Posted 22.01.2020 - 09:22

Попробуйте:

Спасибо большое! Теперь буду знать) Наверное, действительно, лучше прямым запросом как пишет Мишаня, так быстрей отработает скрипт. 



если вам нужно просто удалить из названия артикул, сделайте просто запрос в базу и не стройте огород

 

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, '');

Благодарю) 







Also tagged with one or more of these keywords: simpla, products, product, variants, sku

0 user(s) are reading this topic

0 пользователей, 0 гостей, 0 скрытых