You need to put the tag inside a table cell.
(Actually, what you need to do is to ditch the table layout and join the 21st century, but we'll leave that to one side for the moment)
If you had typed some random text at the point where you put <a name="shop"></a>, it would have appeared above the table, because that's what happens to text between the start <table> and end </table> but isn't in a content-containing element, ie a <td> or <th>. It's exactly the same with the anchor - because it isn't legally placed inside a table cell, it bobs up to sit on top of the table.
Of course, it's much better to put id="shop" on the element you want to jump to rather than messing around with named anchors anyway, and that would solve the problem even more easily.
A couple of other tips:
1. You don't need any of those
class="lpage"s, you can achieve the effect better with child selectors.
2. Take out
http://www.greensmoothie.com from every link, it's completely unnecessary.
3. Only use a title attribute on a link when it adds something extra. If all you're doing is repeating the text that is visible (or at most adding some filler like "Click here to...") then there's no point in having the title there, it just adds complications.