既存の画像と同じ名前の製品画像を Magento にアップロードすると、Magento の通常の動作では、新しいファイル名の末尾に「_1」が追加されます。したがって、「myFile.png」という名前の画像があり、同じ名前の同じ製品に 2 番目の画像をアップロードすると、Magento はその名前を「myFile_1.png」に変更します。この名前変更を排除し、同じ名前のファイルで既存のファイルを置き換えたいと考えています。
関連するコントローラーは app/code/core/Mage/Adminhtml/controllers/Catalog/Product/GalleryController.php で見つけたと思います。
public function uploadAction()
{
try {
$uploader = new Mage_Core_Model_File_Uploader('image');
$uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
$uploader->addValidateCallback('catalog_product_image',
Mage::helper('catalog/image'), 'validateUploadFile');
$uploader->setAllowRenameFiles(true);
$uploader->setFilesDispersion(true);
$result = $uploader->save(
Mage::getSingleton('catalog/product_media_config')->getBaseTmpMediaPath()
);
Mage::dispatchEvent('catalog_product_gallery_upload_image_after', array(
'result' => $result,
'action' => $this
));
/**
* Workaround for prototype 1.7 methods "isJSON", "evalJSON" on Windows OS
*/
$result['tmp_name'] = str_replace(DS, "/", $result['tmp_name']);
$result['path'] = str_replace(DS, "/", $result['path']);
$result['url'] = Mage::getSingleton('catalog/product_media_config')->getTmpMediaUrl($result['file']);
$result['file'] = $result['file'] . '.tmp';
$result['cookie'] = array(
'name' => session_name(),
'value' => $this->_getSession()->getSessionId(),
'lifetime' => $this->_getSession()->getCookieLifetime(),
'path' => $this->_getSession()->getCookiePath(),
'domain' => $this->_getSession()->getCookieDomain()
);
} catch (Exception $e) {
$result = array(
'error' => $e->getMessage(),
'errorcode' => $e->getCode());
}
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
}
setAllowedRenameFiles() を false にしようとしました。私もコメントアウトしてみました。しかし、これらのどちらも望ましい結果をもたらさないようです。
Magento が同じ名前の既存のファイルを上書きできるようにする方法について何か考えはありますか?