Перейти к содержанию
Официальный форум поддержки Simpla

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


Перейти к решению Решено mishanya,

Рекомендуемые сообщения

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

 

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

 

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

<?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));

		//Применить новое название для товара
		// как это можно сделать?
		
	}
}

Подскажите люди добрые как можно это сделать.

Изменено пользователем MalishBob
Ссылка на сообщение
Поделиться на другие сайты

Попробуйте:

 

$simpla->products->update_product($product->id, array("name"=>$new_product_name));
Изменено пользователем fancy-studio
Ссылка на сообщение
Поделиться на другие сайты
  • Решение

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

 

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, '');
Ссылка на сообщение
Поделиться на другие сайты

Попробуйте:

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

 

 

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

 

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

Благодарю) 

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...