How to Determine Cache Tag for a Block in Magento

blockscache

I have a block that uses addLink to create a checkout link in the header, to get the URL it uses a custom function $helper->getCheckoutUrl() ($helper being a utility helper created by someone else) which does a condition check to return what URL we need for the checkout link, the conditions are

If Rewrite Checkout links are enabled
    return result from parent::getCheckoutUrl();
else if Precheckout is Available
    return result from Mage::getUrl('precheckout', array('_secure'=>true));
otherwise return result from Mage::getUrl('onestepcheckout', array('_secure'=>true));

to determine if Precheckout is avaliable we use these checks

if items in cart = 0 and user is a guest and module is enabled
    if minimum order limit set and cart total > minimum order limit
        return true
    else if minimum order limit is not set
        return true
otherwise return false

Effectively what we are doing is that if the user is a guest and meets the conditions to go into the checkout we want to redirect them to a pre-checkout page where we ask for either their email, to make an account or to log into their own account

while testing I noticed that the URL is getting cached, as such if I’m a guest and had an item in my cart then go to a page (say a category or CMS), the checkout link in the header is our pre-checkout link however when I remove the item, and return to the page I was once on it retains how pre-checkout link yet if I got to a page that hasn't been visited (as such hasn't been cached) it's the correct link, pages with the pre-checkout link only change if we wipe out the cache (not just a refresh of every cache though the backend)

Now I want to look up what cache tag is set for the block that calls the addLink

Best Answer

You get the cache tags with $blockObject->getData('cache_tags')
But what you search for is the cache_key, because you should change this to match your different cases. (every case gets a different cache key, so they dont overlap anymore)

The Aoe_TemplateHints could also get handy, but they dont show cache_key,cache_tags yet, but if you add them, this could get even better :)

http://www.magentocommerce.com/wiki/5_-_modules_and_development/block_cache_and_html_ouput

https://github.com/fbrnc/Aoe_TemplateHints

Related Topic