Генерация слага для товара

Ко мне поступил заказ на разработку интернет-магазина.
Вариантов реализации — великое множество. Для WordPress плагин Woocommerce, Magento( не самый легковесный вариант ), Prestashop и другие движки для разработанные данной цели.
Но стандартно разработанные не могли удовлетворить «капризности» заказчика.
И в условиях была информация, что товаров будет порядка 100к записей, плюс к этому ежедневный импорт из прайсов несколько раз в день.
Поэтому я смело отмел все стандарты, и решил разработать продукт на Laravel.
Помимо, прочих «хотелок», нужно было реализовать ЧПУ (человеко-понятные урлы) для товара. Т.е. генерировать слаг.
Что здесь сложного спросите вы?
Ничего особенного, кроме того, что этот слаг должен состоять из бренда, модели, размерностей и параметров, которые очень схожи между собой и будущий слаг не будет уникальным, а значит ничего хорошего из этой затеи не выйдет. Ведь прописывая таблицу товара в поле slug такое неуникальное значение, можно найти не тот товар, который нужен, а первый попавшийся.
Выход я нашел следующим способом: составил слаг вида бренд-модель-параметр1-параметр2-ID.
Где ID — это уникальный код товара в таблице.

Таким образом ссылка на страницу товара выглядела

<a href="{{$item->brandname}}-{{$item->modelname}}-{{$item->p1}}-{{$item->p2}}-p{{$item->id}}">Бренд Модель параметры</a>

.

Маршрут самый заурядный

Route::get('/items/{id?}', ['uses' => 'ItemController@getSingle']);

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

preg_match("/[0-9]+$/", $r->id, $output_array);

где $output_array[0] — и будет ID нашего товара и уже этот ID после всех проверок, мы можем использовать как нам нужно.

На этом все.
Спасибо за внимание!


Notice: compact(): Undefined variable: limits in /var/www/sergey.worker201/data/www/softobzor.com.ua/wp-includes/class-wp-comment-query.php on line 853

Notice: compact(): Undefined variable: groupby in /var/www/sergey.worker201/data/www/softobzor.com.ua/wp-includes/class-wp-comment-query.php on line 853

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *