Catatan: Jika Anda telah mengedit produk dengan kode PHP, kemudian mengindeks ulang mereka di admin setelahnya, simpan waktu Anda untuk mencoba mencari tahu mengapa mereka tidak muncul seperti saya di bawah ini ...
Saya berputar-putar mencoba untuk mencari tahu bagaimana is_salable
diatur untuk suatu produk, dan dengan demikian mencari tahu mengapa produk saya sekarang ditampilkan.
Hanya ada satu tempat dalam kode yang dapat saya temukan yang mengaturnya:
$salable = $this->isAvailable();
tapi saya tidak bisa mengetahui bagaimana atau dari mana mendapatkan ini dari, karena ketika saya mengikutinya isAvailable
sepertinya berputar kembali ....
/app/code/core/Mage/Catalog/Model/Product.php
public function isSalable()
{
Mage::dispatchEvent('catalog_product_is_salable_before', array(
'product' => $this
));
$salable = $this->isAvailable();
$object = new Varien_Object(array(
'product' => $this,
'is_salable' => $salable
));
Mage::dispatchEvent('catalog_product_is_salable_after', array(
'product' => $this,
'salable' => $object
));
return $object->getIsSalable();
}
mengikuti $ this-> isAvailable () dari sini ada beberapa baris:
**public function isAvailable()
{
return $this->getTypeInstance(true)->isSalable($this);
}**
ini kemudian memanggil app / code / core / Mage / Katalog / Model / Produk / Jenis / Configurable.php isSalable
public function isSalable($product = null)
{
$salable = parent::isSalable($product);
if ($salable !== false) {
$salable = false;
if (!is_null($product)) {
$this->setStoreFilter($product->getStoreId(), $product);
}
foreach ($this->getUsedProducts(null, $product) as $child) {
if ($child->isSalable()) {
$salable = true;
break;
}
}
}
return $salable;
}
yang memanggil induk: /app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php's isalable:
public function isSalable($product = null)
{
$salable = $this->getProduct($product)->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_ENABLED;
if ($salable && $this->getProduct($product)->hasData('is_salable')) {
$salable = $this->getProduct($product)->getData('is_salable');
}
elseif ($salable && $this->isComposite()) {
$salable = null;
}
return (boolean) (int) $salable;
}
yang mana panggilan data get / get pada nilai is_saleable?!? Apakah saya melacaknya dengan benar? Dari mana nilai ini berasal?
Saya mengeluarkan grep rekursif pada instalasi saya untuk is_salable, pasti ini akan menunjukkan baris mana pun yang sudah diatur tetapi saya tidak langsung melihat:
grep -r is_salable *
app/code/core/Mage/CatalogInventory/Model/Stock/Status.php: $object = new Varien_Object(array('is_in_stock' => $product->getData('is_salable')));
app/code/core/Mage/XmlConnect/Block/Wishlist.php: $itemXmlObj->addChild('is_salable', (int)$item->getProduct()->isSalable());
app/code/core/Mage/XmlConnect/Block/Catalog/Product.php: $item->addChild('is_salable', (int)$product->isSalable());
app/code/core/Mage/XmlConnect/Block/Cart/Crosssell.php: $itemXmlObj->addChild('is_salable', 0);
app/code/core/Mage/XmlConnect/Block/Cart/Crosssell.php: $itemXmlObj->addChild('is_salable', (int)$product->isSalable());
app/code/core/Mage/Catalog/Model/Product.php: Mage::dispatchEvent('catalog_product_is_salable_before', array(
app/code/core/Mage/Catalog/Model/Product.php: 'is_salable' => $salable
app/code/core/Mage/Catalog/Model/Product.php: Mage::dispatchEvent('catalog_product_is_salable_after', array(
app/code/core/Mage/Catalog/Model/Product.php: if ($this->hasData('is_salable')) {
app/code/core/Mage/Catalog/Model/Product.php: return $this->getData('is_salable');
app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php: if ($salable && $this->getProduct($product)->hasData('is_salable')) {
app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php: $salable = $this->getProduct($product)->getData('is_salable');
DITEMUKAN:
grep -r setIsSalable *
app/code/core/Mage/CatalogInventory/Model/Stock/Status.php: $product->setIsSalable($stockStatus);
app/code/core/Mage/CatalogInventory/Model/Stock/Status.php: $product->setIsSalable($status);
Itu setIsSalable bahwa saya tidak berpikir / tahu untuk mencari daripada hanya setIsSalable .