В общем, бутстрап 3 имеет свои неприятные особенности, выравнивание колонок - одна из них. Он написан на флоатах (в отличии от 4 версии) и единственное, что может помочь - это, пожалуй, динамиечское присвоение классов через js или на бэке. Это неприятный костыль, но флоатам нельзя просто так взять и напсиать: эй ты держись в середке.
В чем суть: вам нужен js который при загрузке страницы будет считать количество загруженных элементов в каталоге. Если число кратно 3 - все огонь. Если остатаются 2 элемента, то предпоследнему элементу присваивается класс col-*-offset-2
, если остается 1 элемент, то последнему элементу - col-*-offset-4
. Офсеты добавляют margin слева любой колонке, имитируя нахождение n-го количества колонок слева от него.
Вместо звездочки * - брейкпоинт (зависит от вашей сетки). По семантике работают как обычные колонки.
Второй вариант: делать не через оффсеты, а через изменение класса колонки.
Т.е. в случае двух элементов - col-*-6
, в случае 1 - col-*-12