Maybe an observer will do the job?
E.g:
class My_Awesome_Model_Observer
{
public function syncDescriptions($observer)
{
$productId = $observer->getProduct()->getId();
$storeAEnId = 1; //store view Id for English store A
$storeBEnId = 2; //as above for store B
$storeAFrId = 2; //store A French view's id
$storeBFrId = 4; //French store B
//of course replace above with real store Ids
$descAEn = Mage::getModel('catalog/product')->setStore($storeAEnId)->load($productId)->getData('description');
// Now we check if description in store B is up-to-date with store A's, if not, if yes, we leave, if not, it is updated
if ($descAEn != Mage::getModel('catalog/product')->setStore($storeBEnId)->load($productId)->getData('description'))
{
Mage::getModel('catalog/product')->setStore($storeBEnId)
->load($productId)
->getData('description', $descAEn)
->save();
}
$shortDescAEn = Mage::getModel('catalog/product')->setStore($storeAEnId)->load($productId)->getData('short_description');
// Same check for short description
if ($shortDescAEn != Mage::getModel('catalog/product')->setStore($storeBEnId)->load($productId)->getData('short_description'))
{
Mage::getModel('catalog/product')->setStore($storeBEnId)
->load($productId)
->getData('short_description', $shortDescAEn)
->save();
}
$descAFr = Mage::getModel('catalog/product')->setStore($storeAFrId)->load($productId)->getData('description');
// same for French view
if ($descAFr != Mage::getModel('catalog/product')->setStore($storeBFrId)->load($productId)->getData('description'))
{
Mage::getModel('catalog/product')->setStore($storeBFrId)
->load($productId)
->getData('description', $descAFr)
->save();
}
$shortDescAFr = Mage::getModel('catalog/product')->setStore($storeAFrId)->load($productId)->getData('short_description');
// same for French short description
if ($shortDescAFr != Mage::getModel('catalog/product')->setStore($storeBFrId)->load($productId)->getData('short_description'))
{
Mage::getModel('catalog/product')->setStore($storeBFrId)
->load($productId)
->getData('short_description', $shortDescAFr)
->save();
}
}
}
Of course, you should then declare an observer for catalog_product_save_after
event choosing your Observers class and method in your module's config.xml
. E.g:
<global>
<events>
<catalog_product_save_after>
<observers>
<awesome_observer>
<type>singleton</type>
<class>My_Awesome_Model_Observer</class>
<method>syncDescriptions</method>
</awesome_observer>
</observers>
</catalog_product_save_after>
</events>
</global>
It is just quite basic idea for solving the problem, as I don't know which descriptions you use (you may also want to put short_description
there), but I hope it will help you creating your own solution. :)
P.S.: Beware of observers' loops.