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

Как настроить автоматическое создание Кода товара


Recommended Posts

Уважаемые знатоки, пдскажите. Пробую вручную создать, чтоб при сохранении нового товара или при пустом поле "код товара", генерировался код товара, и записывался в SQL таблицу.

Пробую следущим способом: в admin/controller/catalog/product.php 

прописываю: 

$data['model'] = "777-" . $product_id;

При сохранении товара, сохраняется только "777-".
Я так думаю, изза того, что в новом товаре еще не создан и не присвоен $product_id

 

Как быть, что делать..... Спасибо

Версия ocStore 3.0.3.7

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


21 минуту назад, Alexx18 сказал:

Уважаемые знатоки, пдскажите. Пробую вручную создать, чтоб при сохранении нового товара или при пустом поле "код товара", генерировался код товара, и записывался в SQL таблицу.

Пробую следущим способом: в admin/controller/catalog/product.php 

прописываю: 


$data['model'] = "777-" . $product_id;

При сохранении товара, сохраняется только "777-".
Я так думаю, изза того, что в новом товаре еще не создан и не присвоен $product_id

 

Как быть, что делать..... Спасибо

Версия ocStore 3.0.3.7

 

если без разницы что в коде будет числа, буквы то можно так

$data['model'] = '777-' . token(5) . '-' .token(5);

 

5 - это кол-во символов

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

Если можно в название добавлять цифры и буквы то вот так

 

Открываем admin/controller/catalog/product.php и вставляем метод

protected function randStr( $len = 10 ) { 
	$arr = array_merge(range('A', 'Z'), range(0, 9), range('a', 'z'));
    shuffle($arr);
    return implode('', array_slice($arr, 0, $len));
} 

Использовать вот так

$data['model'] = '777-' . $this->randStr(5) . '-' . $this->randStr(5);

 

 

Если нужны только цифры то вставляем вот такой метод

protected function randStr( $len = 10 ) { 
	$arr = array_merge(range(0, 9), range(0, 9));
    shuffle($arr);
    return implode('', array_slice($arr, 0, $len));
} 

Использовать точно также как выше написал

  • +1 2
Надіслати
Поділитися на інших сайтах

ну ок, чтоб было уникальным и не грузить отдельными запросами. Может тогда ДАТУ текущую с временем, вставить как код товара.

Может так $data['model'] = "777-" . $data('Y-m-d H:m:s');

А нет ошибку выдает. та и одной строкой надо

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


11 минут назад, Alexx18 сказал:

ну ок, чтоб было уникальным и не грузить отдельными запросами. Может тогда ДАТУ текущую с временем, вставить как код товара.

Может так $data['model'] = "777-" . $data('Y-m-d H:m:s');

А нет ошибку выдает. та и одной строкой надо

 

data это не переменная, а функция

 

Можно вот так в формате unix

$data['model'] = '777-' . $this->randStr(5) . '-' . time();

// или можно вот так

$data['model'] = '777-' . time();

 

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

13 часов назад, Venter сказал:

 

data это не переменная, а функция

 

Можно вот так в формате unix


$data['model'] = '777-' . $this->randStr(5) . '-' . time();

// или можно вот так

$data['model'] = '777-' . time();

 

КРАСАВА   +100 в карму)))
И не надо никаких модулей, и уникальность кода гарантирована)))

 

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

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


2 часа назад, Alexx18 сказал:

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

То есть тебе надо чтоб если ты при редактировании удалил этот код то автоматом создался новый?

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

2 часа назад, Alexx18 сказал:

надо и чтоб при создании нового товара генерировался код, и если значение пустое.....

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

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

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

При новом создании все ок - код генерируется норм. А когда удаляешь значение, и сохраняешь чтоб обновилась генерация, то нет

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


50 минут назад, Alexx18 сказал:

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

При новом создании все ок - код генерируется норм. А когда удаляешь значение, и сохраняешь чтоб обновилась генерация, то нет

ну так при редактировании не будет работать как выше написано

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

Открываете модель и во функции addProduct есть product_id там и генерите модель.

Ещё editProduct и copyProduct

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

40 минут назад, buslikdrev сказал:

Открываете модель и во функции addProduct есть product_id там и генерите модель.

Ещё editProduct и copyProduct

 

вот допустим ТС при обновлении не каждую модель будет менять и если засунуть в editProduct то все равно выдаст ошибку, поскольку нужно в валидации убирать проверку на модель

на js можно написать

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

1 час назад, Alexx18 сказал:

а если условием, чтоб при сохранении если пусто, происходила генерация

 

короче, иди в контроллер admin/controller/catalog/product.php

там находишь вот такие строки в методе protected function getForm(),

эти строки примерно находятся на 1610-1612 строке

		$data['header'] = $this->load->controller('common/header');
		$data['column_left'] = $this->load->controller('common/column_left');
		$data['footer'] = $this->load->controller('common/footer');

		$this->response->setOutput($this->load->view('catalog/product_form', $data));

 

далее, можно до 

$this->response->setOutput($this->load->view('catalog/product_form', $data));

добавить

$data['rand_model'] = '777-' . time();

 

Потом идешь в шаблон admin/view/template/catalog/product_form.twig

и там вставляешь js код в самом низу, допустим перед

//--></script></div>
{{ footer }} 

 

сам код

$('#tab-data input[name=\'model\']').on('change', function() {
    if($(this).val() == '') {
		$(this).val('{{ rand_model }}');
	}
});

 

Обновляешь кеш и модификаторы!!!

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

18 часов назад, Venter сказал:

 

короче, иди в контроллер admin/controller/catalog/product.php

там находишь вот такие строки в методе protected function getForm(),

эти строки примерно находятся на 1610-1612 строке


		$data['header'] = $this->load->controller('common/header');
		$data['column_left'] = $this->load->controller('common/column_left');
		$data['footer'] = $this->load->controller('common/footer');

		$this->response->setOutput($this->load->view('catalog/product_form', $data));

 

далее, можно до 


$this->response->setOutput($this->load->view('catalog/product_form', $data));

добавить


$data['rand_model'] = '777-' . time();

 

Потом идешь в шаблон admin/view/template/catalog/product_form.twig

и там вставляешь js код в самом низу, допустим перед


//--></script></div>
{{ footer }} 

 

сам код


$('#tab-data input[name=\'model\']').on('change', function() {
    if($(this).val() == '') {
		$(this).val('{{ rand_model }}');
	}
});

 

Обновляешь кеш и модификаторы!!!

Не компилирует .... по коду Хром ошибку не выдает. 
Что-то с кодом, или же данные не могут передатся в rand_model

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


фигню ты какую то говоришь. лично тестил на версии 3.0.2, все работало, важно очистить кеш, на главную страницу админки зайди там шестиренка есть на нее жми и всё очисти, мотом модификаторы обнови. Да и вообще не ясно что куда ты вставляешь. скинь сюда свои файлы в которые вставил

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

В 27.08.2021 в 01:27, Venter сказал:

фигню ты какую то говоришь. лично тестил на версии 3.0.2, все работало, важно очистить кеш, на главную страницу админки зайди там шестиренка есть на нее жми и всё очисти, мотом модификаторы обнови. Да и вообще не ясно что куда ты вставляешь. скинь сюда свои файлы в которые вставил


Спасибо тебе огромное, все работает - это я не досмотрел ! ))))

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


  • 1 year later...

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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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