That sounds like slots and overwriting default slot markup would be the solution, but hard so say without code.