Чтобы создать «сложную» клавиатуру с использованием `InlineKeyboardBuilder` в библиотеке aiogram и отобразить товары по два на строку, а кнопки "Оформить заказ" и "Назад" на отдельных строках в конце, вам нужно немного изменить вашу функцию. Вот обновлённая версия вашего кода:
```python
async def create_catalog(tg_id: int):
check = await *Функция которая проверяет наличие товара и возвращает список с товарами в наличии()
basket = await *Функция которая проверяет корзину пользователя и возвращает список с товарами в корзине(tg_id=tg_id)
kb = InlineKeyboardBuilder()
if not check:
kb.add(InlineKeyboardButton(text='⚠️ В настоящее время наш магазин пуст', callback_data='none'))
else:
for i in check:
quantity_products = 0
for b in basket:
if b == i:
quantity_products += 1
if quantity_products == 0:
kb.add(InlineKeyboardButton(text=f'{i.category} - {i.price}₽', callback_data=f'{i.category}'))
else:
kb.add(InlineKeyboardButton(text=f'{i.category} - {i.price}₽ [{quantity_products}]', callback_data=f'{i.category}'))
# Корректировка клавиатуры, чтобы два товара располагались на одной строке
kb.adjust(2)
# Добавление кнопки «Оформить заказ» на отдельной строке
kb.add(InlineKeyboardButton(text='🛒 Оформить заказ', callback_data='buy'))
# Добавление кнопки «Назад» на отдельной строке
kb.add(InlineKeyboardButton(text='↩️ Назад', callback_data='go_menu'))
return kb.as_markup()
```
### Объяснение изменений:
1. **`kb.adjust(2)`**: Эта строка настроит клавиатуру, чтобы два товара отображались на одной строке.
2. **Добавление кнопок "Оформить заказ" и "Назад"**: После добавления всех товаров вы сразу добавляете кнопку "Оформить заказ", а затем кнопку "Назад". Это обеспечит, что они будут расположены на отдельных строках внизу клавиатуры.
3. **Объединение логики добавления товаров**: Весь процесс добавления кнопок для товаров остался без изменений, кроме настройки их отображения.
Таким образом, вся клавиатура будет выглядеть согласно вашим требованиям.