Я работаю над отображением доступности акций на отдельной странице продукта моей темы Magento, и там что-то я не совсем понимаю об этом.
Я вижу два метода, используемых в шаблонах, чтобы проверить, доступен ли продукт для продажи:
Mage_Catalog_Model_Product::isAvailable()
Mage_Catalog_Model_Product::isSaleable()
Мои собственные выводы:
Я вижу, что isSalable() (который в свою очередь вызывается isSaleable()) вызывает isAvailable(), но также отправляет два события (catalog_product_is_salable_before и catalog_product_is_salable_after).
На фронте я заметил, что в шаблоне базы Magento isAvailable() используется, чтобы решить, показывать ли продукт как "на складе" или "нет на складе"; isSaleable() используется, чтобы решить что-то вроде того, показывать ли кнопку "Добавить в корзину".
На бэкэнд я заметил, что когда количество запаса становится равным нулю, а резервные копии не допускаются, доступность запаса продукта идет "на складе". Когда количество запасов становится равным нулю, а допустимые запасы допускаются, наличие запаса а продукта остается неизменным.
Вопрос:
Свойства "наличие запаса" и "количество запасов", очевидно, связаны между собой и упомянутыми методами PHP. Я хотел бы знать:
-
какая семантическая разница между PHP-методами
isAvailable()иisSaleable()есть и почему я буду использовать один над другим, -
Что мне кажется, я еще не знаю об их связи с этими свойствами и поведением Magento.
Спасибо.
EDIT:
Я пробовал каждую соответствующую комбинацию количества запасов (-1,0,1), наличия запаса (в/из) и резервных копий (вкл/выкл) для продукта, и это результат:
St.Qu BckOrd St.Av isSalable() isSaleable() isAvailable()
-1 0 0 0 0 0
-1 0 1 N/A N/A N/A
-1 1 0 0 0 0
-1 1 1 1 1 1
0 0 0 0 0 0
0 0 1 N/A N/A N/A
0 1 0 0 0 0
0 1 1 1 1 1
1 0 0 0 0 0
1 0 1 1 1 1
1 1 0 0 0 0
1 1 1 1 1 1
Только для полноты:
St.Av 0 = out of stock St.Av 1 = in stock BckOrd 0 = no backorders allowed BckOrd 1 = backorders are allowed
Это переключатель доступности запаса в Magento, который контролирует возвращаемое значение всех методов PHP, но когда резервные копии отключены и количество запасов падает ниже 1, доступность запаса будет автоматически reset до "нет в наличии" (следовательно, строки N/A).