Это неплохая идея, в своих старых проектах я тоже делал такие вещи. Позже я обнаружил, что компонентный способ создания контента html намного эффективнее. Сегодня я бы предпочел использовать систему шаблонов с поддержкой блоков (компонентов), чтобы вы могли легко передавать переменные компонентам и легко рисовать их в шаблоне. Кроме того, хранение компонентов в их собственных файлах делает проект более устойчивым.
Если бы вы использовали, например, систему шаблонов Latte в php, это выглядело бы так:
Определение шаблона (это будет например Card.latte)
{define card, $name, $collapsed}
<h3>{$name}</h3>
...
{/define}
Использование (например: ProductDetail.latte):
{include card, 'John Doe', true}