Перейти к содержанию
Официальный форум поддержки Simpla

Индивидуальные URL при добавлении товара.


Рекомендуемые сообщения

Всем привет!

 

Столкнулся с проблемой. Много товаров с одним названием. Есть ли решение как подставлять в url товара _id?

 

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

Ссылка на сообщение
Поделиться на другие сайты

в 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';
        }

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

Ссылка на сообщение
Поделиться на другие сайты

 

в api/Products.php в функции add_product есть код 

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

 

ну добавьте вы $product['id'] к примеру

Ссылка на сообщение
Поделиться на другие сайты

ну добавьте вы $product['id'] к примеру

не совсем понял. выводит сообщение, что товар с этим адресом уже есть. я так понимаю, что до исполнения этой функции дело просто не доходит. ошибаюсь? можно подробнее, что вы имеете ввиду?

Ссылка на сообщение
Поделиться на другие сайты

Хочется, чтобы товар открывался по 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

Изменено пользователем Maksclub
Ссылка на сообщение
Поделиться на другие сайты

Для того чтоб срабатывал код

 

// Если есть товар с таким 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));
            //}

 

Ссылка на сообщение
Поделиться на другие сайты

Шикарное решение, но мне хотелось бы без правки базы

 

То же самое можно получить если  в api/Products.php в функции add_product после (или вместо)

 

        if(empty($product['url']))

        {

...............

        }

 

вставить

 

        if(empty($product['url']))

        {

            $product['url'] = $product['id'];

        }

 

 

Аналогично в функции update_product.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...