БЭМ вроде должен решать эту проблему, но я что-то похоже недопонимаю.
Допустим есть список товаров
<div class="products">
<div class="product">
<div class="product__title">Заголовок продукта</div>
<div class="product__description">Описание продукта</div>
<div class="product__btns product-btns">
<button class="product-btns__btn-buy">Купить</button>
</div>
</div>
</div>
И есть отдельный товар
<div class="product">
<div class="product__title">Заголовок продукта</div>
<div class="product__description">Описание продукта</div>
<div class="product__btns product-btns">
<button class="product-btns__btn-buy">Купить</button>
</div>
</div>
Блоки product должны кардинально различаться друг от друга, при том что они имеют одинаковую структуру. Как быть в такой ситуации?