Actually, for your back button you can probably just use the return macro, which does the same thing.
As for preventing re-triggering code, I just created a JavaScript function that told me whether I got there from my inventory screen or not. So put this in your JavaScript section:
window.Fresh = function () {
return (lastVisited("Menu") != 1);
};
Then you can just wrap any code in your passage that you only want executed once inside "<<if Fresh()>>...<</if>>".
As for adding links to the StoryCaption or whatever mid-story, the easiest way to do this is to have the display of the link controlled by some variable, and only show those links when that variable is set to "true".
Hope that helps!