Placing custom blocks

So I want to place custom blocks like doors, trapdoors, slabs, stairs, etc. Iv worked it out and it should be easy enough to determine state change of the blocks and update the model holding entity to match.

The problem that I am trying to work out is putting the block into the world. Because the blocks I am trying to place are very dependent on how its placed I would like to use the actual desired block (i.e. place a door because it acts like a door) but how could I determine where it is so I can summon an entity?

Continue to help post