You can try this one ... create an extension with this code:
app/etc/modules/My_Module.xml
<?xml version="1.0"?>
<config>
<modules>
<My_Module>
<active>true</active>
<codePool>local</codePool>
</My_Module>
</modules>
</config>
app/code/local/My/Module/etc/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<My_Module>
<version>0.0.1</version>
</My_Module>
</modules>
<global>
<models>
<my_module>
<class>My_Module_Model</class>
</my_module>
</models>
</global>
<frontend>
<events>
<catalog_controller_product_view>
<observers>
<add_category_to_breadcrumbs>
<class>my_module/observer</class>
<method>addCategoryToBreadcrumbs</method>
</add_category_to_breadcrumbs>
</observers>
</catalog_controller_product_view>
</events>
</frontend>
</config>
app/code/local/My/Module/Model/Observer.php
class My_Module_Model_Observer extends Mage_Core_Model_Observer
{
public function addCategoryToBreadcrumbs(Varien_Event_Observer $observer)
{
if (Mage::registry('current_category')) {
return;
}
$product = $observer->getProduct();
$product->setDoNotUseCategoryId(false);
$categoryIds = $product->getCategoryIds();
if (count($categoryIds)) {
$categories = Mage::getModel('catalog/category')->getCollection()
->addAttributeToFilter('entity_id', $categoryIds)
->addAttributeToFilter('is_active', 1);
$categories->getSelect()->order('level DESC')->limit(1);
Mage::register('current_category', $categories->getFirstItem());
}
}
}