Mr.Arsi
Новичок
У меня есть код который добавляет товары , в данный момент работает все хорошо, но есть одно не как не могу составить условие обновлять товары в указанной категории.Сами категории я устанавливаю в профайле. Помогите плиз а то у меня скора клавиатура стереться (
вот сама функция обновления товара
вот сама функция обновления товара
PHP:
public function insert_products()
{
// Если в таблице product у колонки sku отсутствует индекс - добавляем
$this->check_index('product', 'sku', 1);
// Первое. Обновляем существующие товарные позиции
// Обновляем только наличие и цену
$this->db->query('UPDATE '.DB_PREFIX.'product AS p SET p.`quantity`=0');
$this->db->query('
UPDATE '.DB_PREFIX.'product AS t1, '.$this->tmp_tbl_name.' AS t2
SET t1.`price` = t2.price_new,
t1.`quantity` = t2.in_stock,
t1.`date_modified` = NOW(),
t1.`status` = 1
WHERE t1.sku = t2.sku AND t1.manufacturer_id = t2.manufacturer;
');
// Второе. Если во временной таблице есть позиции, которых нет в основной
// добавляем их.
$this->db->query('
INSERT INTO '.DB_PREFIX.'product (`model`, `sku`, `upc`, `ean`, `jan`, `isbn`, `mpn`, `location`, `quantity`, `stock_status_id`, `image`, `manufacturer_id`, `shipping`, `price`, `tax_class_id`, `date_available`, `status`, `date_added`)
SELECT `sku`, `sku`, "", "", "", "", "", "", `in_stock`, '.(int)$this->config->get('config_stock_status_id').', "no_image.jpg", `manufacturer`, 1, `price_new`, 0, NOW(), 1, NOW() FROM
(SELECT
t1.`sku`,
t1.`in_stock`,
t1.`manufacturer`,
t1.`price_new`
FROM '.$this->tmp_tbl_name.' AS t1
LEFT JOIN '.DB_PREFIX.'product AS t2
ON t1.sku = t2.sku AND t1.manufacturer = t2.manufacturer_id
WHERE t2.sku IS NULL) AS subtable
');
// Третье. Если во временной таблице есть позиции, которых нет в основной
// добавляем описание к ним
$languages = $this->cache->get('language');
if (empty($languages)) {
$this->load->model('localisation/language');
$languages = $this->model_localisation_language->getLanguages();
}
foreach ($languages as $language)
{
$this->db->query('
INSERT IGNORE INTO '.DB_PREFIX.'product_description (`product_id`, `language_id`, `name`) SELECT * FROM (
SELECT
t1.product_id,
'. (int) $language['language_id'].',
CONCAT(t3.descr) AS `name`
FROM '.DB_PREFIX.'product AS t1
LEFT JOIN '.DB_PREFIX.'product_description AS t2
ON t2.product_id = t1.product_id
INNER JOIN '.$this->tmp_tbl_name.' AS t3
ON t3.sku = t1.sku AND t3.manufacturer = t1.manufacturer_id
INNER JOIN '.DB_PREFIX.'manufacturer AS t4 ON t4.manufacturer_id=t1.manufacturer_id
WHERE t2.product_id IS NULL OR t2.language_id <> '. (int) $language['language_id'].'
) AS subtable
');
}
$this->db->query('TRUNCATE TABLE '.DB_PREFIX.'product_to_store');
$config = $this->cache->get('current_profile');
$stores = $config['product_store'];
if (empty($stores)) {
$stores = array(0);
}
foreach ($stores as $store)
{
$this->db->query('INSERT IGNORE INTO '.DB_PREFIX.'product_to_store SELECT product_id, '.$store.' FROM '.DB_PREFIX.'product');
}
// Добавляем категории
$this->db->query('INSERT IGNORE INTO '.DB_PREFIX.'product_to_category
SELECT p.product_id, ttp.category, ttp.category
FROM '.DB_PREFIX.'product p INNER
JOIN '.$this->tmp_tbl_name.' ttp ON ttp.sku=p.sku');
// SEO url
$this->db->query('DELETE FROM '.DB_PREFIX.'url_alias WHERE `query` LIKE "product_id%"');
$this->db->query('
INSERT INTO '.DB_PREFIX.'url_alias (`query`, `keyword`)
SELECT
CONCAT("product_id=", t1.product_id) AS `query`,
LOWER(CONCAT(t1.product_id, "-", t2.`name`, "-", t1.sku)) AS `keyword`
FROM '.DB_PREFIX.'product AS t1
INNER JOIN '.DB_PREFIX.'manufacturer AS t2 USING (manufacturer_id)
');
$this->cache->delete('product');
}
вот откуда берутся данные профайла
/**
* Получение доступных профайлов
* @param string $group имя группы
* @return array имя_профайла => array(значения_полей)
*/
public function get_profiles($group)
{
$settings = $this->model_setting_setting->getSetting($group);
$data = array();
foreach ($settings as $k => $v)
{
$v = unserialize($v);
$data[$k] = $v['profile_name'];
}
return $data;
}
Последнее редактирование модератором: