Situs web yang saya kelola mengharuskan harga memiliki 5 desimal. Saya pergi ke depan dan memodifikasi setidaknya selusin file / tabel sekaligus untuk dapat mencapai ini. Tapi (karena selalu ada tapi) sepertinya ada masalah dengannya catalog_product_flat_X
.
Mari saya jelaskan: untuk harga di bagian depan, sebagian besar waktu, itu datang ke panggilan Mage_Catalog_Model_Product->getPrice()
, yang, seperti yang saya mengerti, akan mencari harga di tabel datar (jika Anda memiliki tabel datar diaktifkan). Masalahnya adalah dengan pengindeksan ulang data.
Jika flat table saya memiliki harga dengan format DECIMAL(12,5)
, menekan tautan "Reindex" pada baris "Reindex flat data" akan ALTER
menjadi flat table dan mengembalikannya DECIMAL(12,4)
.
Setelah mencari cukup banyak waktu, saya datang dengan fungsi
app/code/core/Mage/Catalog/Model/Resource/Product/Flat/Indexer.php
yang disebut prepareFlatTable($storeId)
. Fungsi ini kemudian memanggil convertOldColumnDefinition($column)
setiap kolom tabel datar (dalam hal ini).
Akhirnya, ketika melihat fungsi ini di
app/code/core/Mage/Catalog/Model/Resource/Helper/Abstract.php
dalamnya tampaknya akan mengubah setiap decimal
dan numeric
seperti itu:
case 'decimal':
case 'numeric':
$length = $proposedLength;
$type = Varien_Db_Ddl_Table::TYPE_DECIMAL;
break;
di mana $proposedLength
adalah hasil dari ini:
$definition = trim($column['type']);
if (!preg_match('/([^(]*)(\\((.*)\\))?/', $definition, $matches)) {
throw Mage::exception(
'Mage_Core',
Mage::helper('core')->__("Wrong old style column type definition: {$definition}.")
);
}
$proposedLength = (isset($matches[3]) && strlen($matches[3])) ? $matches[3] : null;
Saya tidak begitu mengerti apa yang sedang terjadi di sini, saya akan meletakkan sesuatu yang dikodekan di sana tetapi saya tidak ingin mengganggu proses normal semua pengindeks.
Adakah yang bisa memberi tahu saya tentang masalah ini dan menawarkan saya solusi?
app/code/core/Mage/Catalog/Model/Resource/Helper/Abstract.php
file? Saya memiliki masalah yang sama dan saya tidak dapat menemukan solusi