I have a lot of recurring purchases( groceries, office supplies, etc ) or infrequent/one-time items as well. I feel it would be better to put any shopping list of more than 3 items and also recurring items into a list management application. For now, I am using Grocery Gadget on my iPhone, though I have Grocery IQ as well. These apps have the added benefit of tallying up the cost + taxes so that you can project costs ahead of time.
My idea is to create a task called 'do groceries, or 'do online shopping', at which point I would get the items in the appropriate lists in the shopping application.
The implementation would be application for Grocery Gadget I plan I putting all of my items into a single list, and then select the stores that I wish to go to (which filters items by store ). This produces a list of items that I need that are available in those stores.
For online items, I plan on having a store called "Internet" which means any online store. Specific online stores would start with "INTER" so that I can select them quickly and then do my online shopping.
From a GTD perspective, this separates the action of "buying" from the list of items that I actually need to buy. I think that this is a good delineation.
I could schedule these tasks to repeat a week from last completion date, and if the list is empty, then I can check it as done and check again in a week.