interyes Опубликовано 24 марта, 2018 Жалоба Поделиться Опубликовано 24 марта, 2018 Всем привет! Столкнулся с проблемой. Много товаров с одним названием. Есть ли решение как подставлять в url товара _id? Пробовал через product.tpl при создании подставляет, а при обновлении подставляет снова. итог tovar_2_2 и так далее до бесконечности. Цитата Ссылка на сообщение Поделиться на другие сайты
interyes Опубликовано 24 марта, 2018 Автор Жалоба Поделиться Опубликовано 24 марта, 2018 в api/Products.php в функции add_product есть код // Если есть товар с таким URL, добавляем к нему число while($this->get_product((string)$product['url'])) { if(preg_match('/(.+)_([0-9]+)$/', $product['url'], $parts)) $product['url'] = $parts[1].'_'.($parts[2]+1); else $product['url'] = $product['url'].'_2'; }Никак не могу понять как заставить его работать при ручном добавлении товара Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 24 марта, 2018 Жалоба Поделиться Опубликовано 24 марта, 2018 в api/Products.php в функции add_product есть код Никак не могу понять как заставить его работать при ручном добавлении товара ну добавьте вы $product['id'] к примеру Цитата Ссылка на сообщение Поделиться на другие сайты
interyes Опубликовано 24 марта, 2018 Автор Жалоба Поделиться Опубликовано 24 марта, 2018 ну добавьте вы $product['id'] к примеруне совсем понял. выводит сообщение, что товар с этим адресом уже есть. я так понимаю, что до исполнения этой функции дело просто не доходит. ошибаюсь? можно подробнее, что вы имеете ввиду? Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 24 марта, 2018 Жалоба Поделиться Опубликовано 24 марта, 2018 А подскажите, как выводить в url не $product->url, а $product->id.Хочу видеть url товара вида site.ru/product/10/ Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 24 марта, 2018 Жалоба Поделиться Опубликовано 24 марта, 2018 update s_products set url=id Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 25 марта, 2018 Жалоба Поделиться Опубликовано 25 марта, 2018 update s_products set url=idШикарное решение, но мне хотелось бы без правки базы Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 25 марта, 2018 Жалоба Поделиться Опубликовано 25 марта, 2018 Хочется, чтобы товар открывался по id, например, site.ru/index.php?module=ProductView&id=894 Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 25 марта, 2018 Жалоба Поделиться Опубликовано 25 марта, 2018 (изменено) Хочется, чтобы товар открывался по id, например, site.ru/index.php?module=ProductView&id=894 1. Нужно в настройках сервера заменить product_url на id в строке /index.php?module=ProductView.....2. В /view/ProductView заменить: $product_url = $this->request->get('product_url', 'string'); на $product_id = $this->request->get('id', 'integer'); 3. В этом же файле: $product = $this->products->get_product((string)$product_url);на$product = $this->products->get_product((int)$product_id); После этого товар должен открыться по пути: /products/{id} Ну и во всех местах, где в шаблоне и админке url подставляется нужно заменить на id Изменено 25 марта, 2018 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
interyes Опубликовано 25 марта, 2018 Автор Жалоба Поделиться Опубликовано 25 марта, 2018 Для того чтоб срабатывал код // Если есть товар с таким URL, добавляем к нему число while($this->get_product((string)$product['url'])) { if(preg_match('/(.+)_([0-9]+)$/', $product['url'], $parts)) $product['url'] = $parts[1].'_'.($parts[2]+1); else $product['url'] = $product['url'].'_2'; } Нужно в ProductAdmin.php закоментировать код который выводит сообщение об ошибке // Не допустить одинаковые URL разделов. //elseif(($p = $this->products->get_product($product->url)) && $p->id!=$product->id) //{ //$this->design->assign('message_error', 'url_exists'); //if(!empty($product->id)) // $images = $this->products->get_images(array('product_id'=>$product->id)); //} Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 25 марта, 2018 Жалоба Поделиться Опубликовано 25 марта, 2018 Шикарное решение, но мне хотелось бы без правки базы То же самое можно получить если в api/Products.php в функции add_product после (или вместо) if(empty($product['url'])) {............... } вставить if(empty($product['url'])) { $product['url'] = $product['id']; } Аналогично в функции update_product. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.