What is the best way to fix these displaced tiles?
The best and proper repair (short of addressing what's under them by ripping the whole thing out) is to chisel out the old thinset (might as well get the broken tile behind) and use new thinset, probably with a polymer admixture (liquid instead of water) as well as polymer modified thinset (the dry part), since the area has evidently been less than ideal for tile staying put, so more flex in the mortar is better.
Wait the proper time (tyically 24-48 hours) without traffic, grout between the tiles, wait more time (typically 24-48 minimum again), and ideally limit or avoid traffic for as long as is practical up to a couple of weeks.
For quick &amp; dirty repairs in a similar situation I've used polyurethane construction adhesive. It's not best, but it beats a loose tile if you need it done quickly.