Предыдущий следующий товар Yii2
Ссылка на предыдущий и следующий товар в Yii2 с дополнительными выборками по производителю в текущей категории.
Создаем в модели функции отвечающие за предыдущий и последующий товар.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public function item_prev($category_id, $brand_id, $item_id) { $item = Item::find()->where(['brand_id' => $brand_id, 'category_id' => $category_id])->andWhere(['<', 'id', $item_id])->status(Item::STATUS_ON)->orderBy(['id' => SORT_DESC])->limit(1)->one(); if ($item) { return new ItemObject($item); } else { return null; } } public function item_next($category_id, $brand_id, $item_id) { $item = Item::find()->where(['brand_id' => $brand_id, 'category_id' => $category_id])->andWhere(['>', 'id', $item_id])->status(Item::STATUS_ON)->orderBy(['id' => SORT_ASC])->limit(1)->one(); if ($item) { return new ItemObject($item); } else { return null; } } |
С страницы view продукта я передаю id категории, бренда и сам id текущего товара. Если, что то не нужно можно удалить или соответсвено добавить в условие.
На странице view — item.php вывод кнопок на предыдущий и следующий товар лежащий в этой же категории и под таким же брендом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <? $prev = Product::item_prev($item->category_id, $item->brand_id, $item->id); $next = Product::item_next($item->category_id, $item->brand_id, $item->id); ?> <? if (isset($prev) || isset($next)) { ?> <div class="clearfix"> <? if (isset($prev)) { ?> <a href="<?=Url::to(['/product/item', 'category' => $item->category->id, 'id' => $prev->id])?>" class="btn btn-light float-left"> <i class="fa fa-angle-double-left"></i> <?=$prev->title?></a> <? } if (isset($next)) { ?> <a href="<?=Url::to(['/product/item', 'category' => $item->category->id, 'id' => $next->id])?>" class="btn btn-light float-right"> <?=$next->title?> <i class="fa fa-angle-double-right"></i></a> <? } ?> </div> <? } ?> |
Пример вывода предыдущего и следующего товара с привязкой по производителю.
yii next prev
а зачем бренды используются ?
В категории просто более 1000 товаров и различных производителей, по-этому сделал так чтоб предыдущий следующий товар был привязан к производителю.