Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Копирование атрибутов с одного товара на другой


krashman

Recommended Posts

Существует ли модуль, чтобы можно было быстро в админке скопировать атрибуты с одного товара в другой?

Например, заходишь в товар, вкладка атрибуты и тут поле "скопировать с товара" - вводим названием, выбираем из выпадающего списка товар с которого надо скопировать, нажимаем кнопку скопировать и вуаля.

Надіслати
Поділитися на інших сайтах


И.. в чем проблема?

1. инпут с автокомплитом и кнопка копировать
2. аякс запрос getAttr(product_id)
3 js метод - insertAttr

20$

Надіслати
Поділитися на інших сайтах

Поставьте батч эдитор)

Закроет вам почти все потребности в массовом редактирование товаров

 

Я когда нашёл этот модуль, неделю считал себя полным дол»»ебом, потому что все, что я делал 3 месяца, можно было сделать за 3 часа))) 

 

 

Надіслати
Поділитися на інших сайтах


2 минуты назад, zlob сказал:

Поставьте батч эдитор)

 

батч эдитором не сделать то что хочется

 

там делов на минут 15-20

Надіслати
Поділитися на інших сайтах

10 минут назад, spectre сказал:

там делов на минут 15-20

Делайте!
как сделаете - только честно скажете сколько это заняло времени..

зы, я конечно могу запрос набросать и это займет 10 минут (работающий запрос)
Так что у вас в запасе есть еще 5-10 минут чтобы нарисовать форму и скрипт

Надіслати
Поділитися на інших сайтах

4 минуты назад, chukcha сказал:

Делайте!
как сделаете - только честно скажете сколько это заняло времени..

зы, я конечно могу запрос набросать и это займет 10 минут (работающий запрос)
Так что у вас в запасе есть еще 5-10 минут чтобы нарисовать форму и скрипт

 

а денег заплатит кто-то? :)

Надіслати
Поділитися на інших сайтах

1 минуту назад, chukcha сказал:

тыжпрограммист  - тебе делов на 15-20 минут. За что деньги?

 

А я говорил что яжпрограммист и сделаю бесплатно чтобы доказать что это делается за 20 минут?)) Я оцениваю этот функционал рублей в 700 если кодом, и в 1000 если модом, кому нужно будет - купит

Надіслати
Поділитися на інших сайтах

10 минут назад, spectre сказал:

А я говорил что яжпрограммист и сделаю бесплатно чтобы доказать что это делается за 20 минут?))

Не...
1. Омечаем точку старта, здесь
2. Через 20 минут я получаю код
После получения кода - я оплачиваю.

3. Если условия по времени не выполнены - вы оплачиваете . в пользу форума.

Надіслати
Поділитися на інших сайтах

1 минуту назад, chukcha сказал:

Не...
1. Омечаем точку старта, здесь
2. Через 20 минут я получаю код
После получения кода - я оплачиваю.

3. Если условия по времени не выполнены - вы оплачиваете . в пользу форума.

 

Я не играю в споры )

Надіслати
Поділитися на інших сайтах

13 минут назад, spectre сказал:

Я не играю в споры )

А где спор?
Это было ваше утверждение
И в ответ мое предложение, в том числе с оплатой.

 

 

14 минут назад, zlob сказал:

Стойте парни, дайте я модуль придумаю, на который вы поспорите и оплатите!

Вас здесь не стояло. А, даже если я оплачу, то вам эта работа все равно обойдется в оплату моих расходов.. Халявы не будет

Надіслати
Поділитися на інших сайтах

3 минуты назад, spectre сказал:

я не буду доказывать вам свою крутость

Ну так вас за язык никто не тянул

15-20 минут - ваши слова?
Я готов оплатить.
Я оплачу.



 

Надіслати
Поділитися на інших сайтах

17 минут назад, chukcha сказал:

Ну так вас за язык никто не тянул

15-20 минут - ваши слова?
Я готов оплатить.
Я оплачу.



 

 

Вы хотите сказать что написать подобный контроллер

 

public function copyattr() {
			
		if (isset($this->request->post['product_id_from'])) $product_id_from = $this->request->post['product_id_from'];
		
		if (isset($this->request->post['product_id_to'])) $product_id_to = $this->request->post['product_id_to'];
		
	if (isset($product_id_from) && isset($product_id_to)) {
		$this->load->model('catalog/product');


		if (isset($product_id_from) && $product_id_from>0) {
			
			$this->model_catalog_product->copyAttrs($product_id_from, $product_id_to);
			
		}
	}
}

и подобную модель

 

	public function copyAttrs($product_id_from, $product_id_to) {
				
			$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '" . (int)$product_id_from . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "'");

			if ($query->num_rows) {
			
			$data = array();

			$data = $query->row;

			$data = array_merge($data, array('product_attribute' => $this->getProductAttr($product_id_from)));
			
			$this->editAttrProduct($product_id_to, $data);
		}
		
	}
	
	public function getProductAttr($product_id) {
		$product_attribute_data = array();

		$product_attribute_query = $this->db->query("SELECT attribute_id FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "'  GROUP BY attribute_id");

		foreach ($product_attribute_query->rows as $product_attribute) {
			$product_attribute_description_data = array();

			$product_attribute_description_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id = '" . (int)$product_attribute['attribute_id'] . "'");

			foreach ($product_attribute_description_query->rows as $product_attribute_description) {
				$product_attribute_description_data[$product_attribute_description['language_id']] = array('text' => $product_attribute_description['text']);
			}

			$product_attribute_data[] = array(
				'attribute_id'                  => $product_attribute['attribute_id'],
				'product_attribute_description' => $product_attribute_description_data
			);
		}

		return $product_attribute_data;
	}
	
	public function editAttrProduct($product_id, $data) {
		
		
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "'");

		if (!empty($data['product_attribute'])) {
			foreach ($data['product_attribute'] as $product_attribute) {
				if ($product_attribute['attribute_id']) {
					$this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id = '" . (int)$product_attribute['attribute_id'] . "'");

					foreach ($product_attribute['product_attribute_description'] as $language_id => $product_attribute_description) {				
						$this->db->query("INSERT INTO " . DB_PREFIX . "product_attribute SET product_id = '" . (int)$product_id . "', attribute_id = '" . (int)$product_attribute['attribute_id'] . "', language_id = '" . (int)$language_id . "', text = '" .  $this->db->escape($product_attribute_description['text']) . "'");
					}
				}
			}
		}
		$this->cache->delete('product');
	}

занимает больше 10 минут? и за 10 минут нельзя написать аякс-запрос с формочкой?

 

$('.copyattr').click(function (){
var from = $('input[name=\"from\"]').val();
var to = '<?php echo $this->request->get['product_id'];?>';


if(from>0 && to>0){
  
$.ajax({
   type: "POST",     
   url: "index.php?route=catalog/product/copyAttr&token=<?php echo $token; ?>",                           
   data: "product_id_from="+from+"&product_id_to="+to,   	   
   success: function(call) { 
   console.log('ok');
	}
})
 } else {
 console.log('error');
 } 
})

код кнопочки приводить не буду

 

 

код не тестил но должно работать :)

Змінено користувачем spectre
Надіслати
Поділитися на інших сайтах

должно != работает

1. Вы копируете уже в существующий, а если новый?
2. "Мясо" нарисовать и оттестировать, так чтоб работало - ДА! Это не 15 минут.

Ну а над таким кодом

33 минуты назад, spectre сказал:

if (isset($product_id_from) && $product_id_from>0) {

я завис
 

 

36 минут назад, spectre сказал:

код кнопочки приводить не буду

да-да, это вообще секундное дело.

Вот из таких мелочей ваши 15-20 минут медленно превращаются, в медленно превращаются...(с)
 

Надіслати
Поділитися на інших сайтах

2 минуты назад, chukcha сказал:

да-да, это вообще секундное дело.

Вот из таких мелочей ваши 15-20 минут медленно превращаются, в медленно превращаются...(с)
 

 

ну так скопипастить поле с автокомплитом - какие проблемы?  максимум за полчаса с тестом можно же вложиться? можно, практически весь код в движке уже есть, я именно это и хотел сказать

 

Надіслати
Поділитися на інших сайтах

16 минут назад, spectre сказал:

максимум за полчаса с тестом можно же вложиться?

Что ж вы ставки понижаете?
Уже полчаса..

 

Надіслати
Поділитися на інших сайтах

1 минуту назад, chukcha сказал:

Что ж вы ставки понижаете?
Уже полчаса..

 

не цепляйтесь к словам, каждый работает как умеет и так быстро как может, вы же сами знаете что программирование трудно оценить по времени, не надо стоять с секундомером и говорить, ага, вот не 20 минут, а полчаса, вот балаболы, а я же говорил что это титанический труд, но меня никто не слушал

 

Если я просчитаюсь с оценкой времени и денег - это только моя личная проблема и недооцененное задание, за которое я сам же поплачусь рублем ибо никогда не завышаю указанный первоначально ценник, а времени потрачу больше чем планировал, у всех же бывали моменты когда за 10 баксов надо потратить 3 дня а казалось фигней

 

 

Надіслати
Поділитися на інших сайтах

5 минут назад, spectre сказал:

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

Вы не понимаете?

Дело не в 15-20 минутах, и не в получасе, и даже не двух-трех

Дело в словах..
Если кто-то сказал, что это 10-15 минут - значит здесь думать не надо, и за это можно не платить
Тем не менее вы сами сказали - 700-1000
Многие, в том числе я, оценивают время-затраты на решение, а не трудоемкость - и получается, что у вас час 2800-4000р, т.е. от 30$

А может считать по количеству строк? (подход индокода)

Так вот.. Средняя статистика говорит
(данные ~1980 -1995 годов)
Программист выдает готового и оттестированного своего кода
от 7 строк в день
Сегодня это чуть больше - до 10.

@krashman Так что там по задаче?
 

Надіслати
Поділитися на інших сайтах

6 минут назад, chukcha сказал:

Дело в словах..
Если кто-то сказал, что это 10-15 минут - значит здесь думать не надо, и за это можно не платить
Тем не менее вы сами сказали - 700-1000
Многие, в том числе я, оценивают время-затраты на решение, а не трудоемкость - и получается, что у вас час 2800-4000р, т.е. от 30$

 

все правильно, я решаю какие-то определенные проблемы, если человека устраивают сроки-стоимость - мы работаем, если не устраивают - не работаем, все просто

 

Если я сделаю такую задачу за час - этот час будет стоит 1000, если сделаю за 20 минут - час не будет стоить 3000, я сэкономлю себе 40 минут времени, которое, как мне кажется немного более ценный ресурс, т.е. этот час будет стоить 1000 + какое-то количество времени

 

я не понимаю в чем вы хотите меня упрекнуть и чем задеть

Надіслати
Поділитися на інших сайтах

3 минуты назад, spectre сказал:

я не понимаю в чем вы хотите меня упрекнуть и чем задеть


Т.е. за 2 часа переписки вы так и не поняли?
Печалько.

Не бросайтесь словами, и не разбрасывайтесь временем.

Иначе..
Я печатаю со скоростью 500 знаков в минуту, но такая бредятина получается. (с)

Надіслати
Поділитися на інших сайтах

6 минут назад, chukcha сказал:

Т.е. за 2 часа переписки вы так и не поняли?
Печалько.

 

Я вас понял, теперь с людьми даже разговаривать меньше чем за 50 баксов не буду :)

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.