Dmit Posted February 2, 2013 Share Posted February 2, 2013 как сделать чтоб Артикул товара был равен id товара? Link to comment Share on other sites More sharing options...
Kerm Posted February 4, 2013 Share Posted February 4, 2013 В артикул товара подгружать Id товара... Link to comment Share on other sites More sharing options...
Dmit Posted February 4, 2013 Author Share Posted February 4, 2013 так точно! именно так и надо! Вот как это реализовать? Link to comment Share on other sites More sharing options...
sors Posted February 4, 2013 Share Posted February 4, 2013 Создать overraid для класса Product и в методе add присваивать артикул Link to comment Share on other sites More sharing options...
Dmit Posted February 4, 2013 Author Share Posted February 4, 2013 не силен в программирование. Можно файлик который нужно просто заменить? Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted February 4, 2013 Share Posted February 4, 2013 Файл override/classes/Product.php должен содержать следующий код: <?php class Product extends ProductCore { public function add($autodate = true, $null_values = false) { $result = parent::add($autodate, $null_values); $this->reference = $this->id; return ($result && $this->save()); } } Если в классе есть другие методы, то их тоже нужно будет добавить Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted February 4, 2013 Share Posted February 4, 2013 Код для PS 1.5.* Link to comment Share on other sites More sharing options...
Dmit Posted February 4, 2013 Author Share Posted February 4, 2013 Код для PS 1.5.* вставил код но у товара в артикуле все пусто Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted February 4, 2013 Share Posted February 4, 2013 Артикул должен формироваться после создания нового продукта. Чтобы артикул сформировался для старых продуктов, нужно выполнить вот этот SQL-запрос: UPDATE `ps_product` SET `reference` = `id_product`; с учетом того, что префикс к престашоповским таблицам = "ps_" Link to comment Share on other sites More sharing options...
Dmit Posted February 4, 2013 Author Share Posted February 4, 2013 как в артикул добавить еще спереди нули типа 00000х Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted February 4, 2013 Share Posted February 4, 2013 Сколько всего символов должно быть в артикуле? Link to comment Share on other sites More sharing options...
Dmit Posted February 4, 2013 Author Share Posted February 4, 2013 xxxxxx (6 цифр, лидирующие нули) Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted February 4, 2013 Share Posted February 4, 2013 (edited) Файл override/classes/Product.php должен содержать следующий код: <?php class Product extends ProductCore { const REFERENCE_LENGTH = 6; public function add($autodate = true, $null_values = false) { $result = parent::add($autodate, $null_values); $this->reference = $this->id; return ($result && $this->update()); } public function update($null_values = false) { $referenceLength = self::REFERENCE_LENGTH; $reference = strlen((string)$this->reference); if ($referenceLength > $reference) { $referenceLength -= $reference; for ($i = 0; $i < $referenceLength; $i++) { $this->reference = '0' . $this->reference; } } return parent::update($null_values); } } Артикул обновится после сохранения продукта в админке или после создания нового Edited February 4, 2013 by Dzianis Yurevich (see edit history) Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted February 4, 2013 Share Posted February 4, 2013 (edited) Чтобы применить это ко всем продуктам, нужно запустить вот этот код: $products = Db::getInstance()->ExecuteS('SELECT `id_product` FROM `'._DB_PREFIX_.'product`;'); foreach ($products as $product) { $_product = new Product($product['id_product']); $_product->update(); } но только поле перезаписи файла override/classes/Product.php Edited February 4, 2013 by Dzianis Yurevich (see edit history) Link to comment Share on other sites More sharing options...
Dmit Posted February 4, 2013 Author Share Posted February 4, 2013 Чтобы применить это ко всем продуктам, нужно запустить вот этот код: $products = Db::getInstance()->ExecuteS('SELECT `id_product` FROM `'._DB_PREFIX_.'product`;'); foreach ($products as $product) { $_product = new Product($product['id_product']); $_product->update(); } но только поле перезаписи файла override/classes/Product.php этот код в mysql что то не обрабатывается Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted February 4, 2013 Share Posted February 4, 2013 это код не mysql, а php. Чтобы его выполнить создай файл в корне магазина, например myscript.php и вставь туда следующее: <?php require(dirname(__FILE__).'/config/config.inc.php'); $products = Db::getInstance()->ExecuteS('SELECT `id_product` FROM `'._DB_PREFIX_.'product`;'); foreach ($products as $product) { $_product = new Product($product['id_product']); $_product->update(); } Затем выполни скрипт перейдя по ссылке mysite.com/myscript.php после чего этот файл лучше удалить Link to comment Share on other sites More sharing options...
Dmit Posted February 4, 2013 Author Share Posted February 4, 2013 Ошибка HTTP 500 (Internal Server Error): При попытке сервера выполнить запрос возникла неожиданная ситуация. Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted February 5, 2013 Share Posted February 5, 2013 Попробуй так: <?php error_reporting(E_ALL); ini_set('display_errors', 1); require(dirname(__FILE__).'/config/config.inc.php'); echo 'Start<br>'; try { $products = Db::getInstance()->ExecuteS('SELECT `id_product` FROM `'._DB_PREFIX_.'product`;'); foreach ($products as $product) { $_product = new Product($product['id_product']); $_product->update(); } } catch (Exception $e) { echo $e->getMessage(); } echo 'Finish'; Что теперь отображается на экране? Ошибок не должно быть, если только файл не лежит в корне Link to comment Share on other sites More sharing options...
Dmit Posted February 5, 2013 Author Share Posted February 5, 2013 теперь ошибка 504 Gateway Time-out nginx/1.2.6 Link to comment Share on other sites More sharing options...
savvato Posted February 5, 2013 Share Posted February 5, 2013 добавьте этот скриптик в крон, отвал по таймауту. Или попросите хостера увеличить max_time_execution Link to comment Share on other sites More sharing options...
Dmit Posted February 5, 2013 Author Share Posted February 5, 2013 max_time_execution уже и так выставил 600 Link to comment Share on other sites More sharing options...
Kerm Posted February 5, 2013 Share Posted February 5, 2013 А не проще товары создавать импортом и при импорте и в id и в артикуле прописать одно и тоже...и не надо не каких правок файлов... Link to comment Share on other sites More sharing options...
Dmit Posted February 6, 2013 Author Share Posted February 6, 2013 А не проще товары создавать импортом и при импорте и в id и в артикуле прописать одно и тоже...и не надо не каких правок файлов... если оператор захочет добавить в ручную один товар ей нужно будет заглянуть какой же присвоется id товару Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted February 6, 2013 Share Posted February 6, 2013 А не проще товары создавать импортом и при импорте и в id и в артикуле прописать одно и тоже...и не надо не каких правок файлов... Конечно проще, только продукты не всегда получиться заливать пачками. Для создания одного продукта импорт не хочется применять.... Плюс импорт реврайтить надо... Link to comment Share on other sites More sharing options...
Kerm Posted February 6, 2013 Share Posted February 6, 2013 В смысле реврайтить надо? Там чпу ссылки автоматически создаются...или их можно указать свои в файле импорта... Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted February 6, 2013 Share Posted February 6, 2013 В смысле реврайтить надо? Там чпу ссылки автоматически создаются...или их можно указать свои в файле импорта... Сори, реврайтить не надо. Я упустил момент того, что id тоже указывается в файле импорта (для формирования Reference) Link to comment Share on other sites More sharing options...
badblock Posted February 24, 2013 Share Posted February 24, 2013 приветствую может вопрос не совсем в тему : но в бэк офисе на одном товаре несколько артиклей - скажем товар отличается по цветам при переходе в каталог товара их не видно и не выполняется поиск (если один товар - один артикуль - все ОК) - как сделать чтобы они отображались и можно в бэе офисе его было найти в поиске каталога? Link to comment Share on other sites More sharing options...
mazapura Posted February 24, 2013 Share Posted February 24, 2013 в бэк офисе на одном товаре несколько артиклей - скажем товар отличается по цветампри переходе в каталог товара их не видно "их" - товаров или артиклей? чтобы они отображались и можно в бэе офисе его было найти "они" - товр или или артикли?? "его" - товар или артикл??? уточните вопрос Link to comment Share on other sites More sharing options...
badblock Posted February 25, 2013 Share Posted February 25, 2013 пример : товар штаны - их 2 цвета и у каждого свой артикул. я делаю комбинацию и в каждый цвет забиваю нужный артикул. перехожу в каталог - вижу свой товар - но поле для артикула пустое. если зайти в карту товара и затем комбинацию товара - артикулы присутствуют. так вот вопрос, как то можно сделать или что нужно изменить, чтобы в каталоге товара, в графе артикул можно было видеть все артикулы (разновидности по цветам, размерам и т.д.) принадлежавшие этому товару? Link to comment Share on other sites More sharing options...
mazapura Posted February 25, 2013 Share Posted February 25, 2013 видимо, не делать "товар+комбинация", а делать просто "товар, размер 35, цвет красньій" - и не использовать комбинации. Link to comment Share on other sites More sharing options...
Dmit Posted March 20, 2013 Author Share Posted March 20, 2013 (edited) подскажите, пжлст, запустил скирпт чтоб проставелся артикул к уже созданному товару с шестью нулями и всем товаром присвоился одинаковый артикул, а точнее "000000". Почему то номер id товара не подставился Получить только вот как: сначала скрипт в mysql запустил: UPDATE `ps_product` SET `reference` = `id_product`; Затем запустил скрипт которые подставляет лидирующие нули. А можно как нибудь сделать чтоб при запуски скрипта в нем же сначала сразу проставлялись id и лидирующие нули? Edited March 20, 2013 by Dmit (see edit history) Link to comment Share on other sites More sharing options...
annetf Posted November 4, 2013 Share Posted November 4, 2013 (edited) Здравствуйте, воспользовалась данным методомВставила код в override/classes/Product.php И выполнила QL-запрос: UPDATE `ps_product` SET `reference` = `id_product`; Все отлично заработало, одно но в карточке товара отображается старый артикул, хотя в списке товара и в новых товарах, созданных после внедрения кода все норм, т.е. старый артикул только в старых товарах и только в карточке(product.tpl) Я проанализировала и пришла к выводу что дело в коде в списке товаров он: {$product.reference} и отображается новый артикул а в карточке: {$product->reference} Плиз, помогите как обновить артикул в карточке товара на новый? Edited November 4, 2013 by annetf (see edit history) Link to comment Share on other sites More sharing options...
savvato Posted November 4, 2013 Share Posted November 4, 2013 UPDATE `ps_product_shop` SET `reference` = `id_product`; если преста 15х Link to comment Share on other sites More sharing options...
annetf Posted November 4, 2013 Share Posted November 4, 2013 (edited) Prestashop 1.5.4 #1054 - Unknown column 'reference' in 'field list' Я так понимаю у меня отсутствует столбик 'reference', но я не уверена что он в ps_product_shop и должен быть. Если это была попытка сравнять в базе данных id с артикулом, то в ps_product у меня все в норме. Там id_product такой же как и reference. Просто при попытке открыть товар почему то сначала грузится новый артикул, а потом сразу заменяется старым. Edited November 4, 2013 by annetf (see edit history) Link to comment Share on other sites More sharing options...
annetf Posted November 4, 2013 Share Posted November 4, 2013 Помогли на prestodev. Если товары с комбинациями то необходимо не только для таблицы `ps_product`, но и для таблицы `ps_product_attribute` выполнить запрос... Link to comment Share on other sites More sharing options...
JustasW Posted July 13, 2014 Share Posted July 13, 2014 Файл override/classes/Product.php должен содержать следующий код: <?php class Product extends ProductCore { public function add($autodate = true, $null_values = false) { $result = parent::add($autodate, $null_values); $this->reference = $this->id; return ($result && $this->save()); } } Если в классе есть другие методы, то их тоже нужно будет добавить а для Prestashop 1.6 какой код будет для такой операции? Link to comment Share on other sites More sharing options...
KupueIIIKo Posted September 21, 2014 Share Posted September 21, 2014 (edited) Prestashop 1.6 примерно такая же ситуация! В БД добавил поле id_add_employee Делаю override Создаю файл product.php вставляю код Как вместо звездочек вставить id админа который добавляет продукт? Пробывал ставить значение 4! Но серавно пишется 0 в БД! <?php class Product extends ProductCore { public function add($autodate = true, $null_values = false) { $result = parent::add($autodate, $null_values); $this->id_add_employee = ****; return ($result && $this->save()); } } Edited September 21, 2014 by KupueIIIKo (see edit history) Link to comment Share on other sites More sharing options...
Vall Posted November 15, 2014 Share Posted November 15, 2014 Файл override/classes/Product.php должен содержать следующий код: <?php class Product extends ProductCore { public function add($autodate = true, $null_values = false) { $result = parent::add($autodate, $null_values); $this->reference = $this->id; return ($result && $this->save()); } } Если в классе есть другие методы, то их тоже нужно будет добавить У меня 1.5.6.1 Файла override/classes/Product.php у меня не было я его создал с приведенным выше кодом Выполнил UPDATE `ps_product` SET `reference` = `id_product`; во всех созданных товарах артикулу присвоилось id при создании новых товаров артикулу id не присваивается может в 1.5.6 нужен другой код или нужно внести изменения в другом файле? Link to comment Share on other sites More sharing options...
Guest Posted February 27, 2019 Share Posted February 27, 2019 как сделать это для 1.6? код <?php class Product extends ProductCore { public function add($autodate = true, $null_values = false) { $result = parent::add($autodate, $null_values); $this->reference = $this->id; return ($result && $this->save()); } } не работает. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now