URL продукта с дополнительными параметрами (CE 1.8 и EE 1.13)

13

Вкратце: получение URL продукта с дополнительными параметрами не работает в CE 1.8 и EE 1.13.

URL были изменены с последней версией Magento. Ранее в CE 1.7 и EE 1.12 вызов $this->getAddToCartUrl($_product)из списка продуктов проходил через следующие этапы:

  1. Mage_Catalog_Block_Product_Abstract::getAddToCartUrl()
    • Здесь было бы добавить параметр запроса "параметры" со значением "корзина"
  2. Mage_Catalog_Block_Product_Abstract::getProductUrl()
    • Этот метод по существу получает значение из модели URL
  3. Mage_Catalog_Model_Product_Url::getUrl()
    • Большая обработка происходит до тех пор, пока URL не будет окончательно сгенерирован, в комплекте с параметрами запроса, изначально переданными в

Теперь, с CE 1.8 и EE 1.13, шаг 3 Mage_Catalog_Model_Product_Url::getUrl()начинается следующим образом:

$url = $product->getData('url');
if (!empty($url)) {
    return $url;
}

Поскольку продукты в списке уже имеют данные URL, параметры запроса не добавляются, а окончательный URL не содержится ?options=cart.

Мой вопрос: это ошибка или фича?

jharrison.au
источник
Еще одно замечание: мы должны добавить тег form_key к нашему URL для добавления в корзину после нескольких обновлений
EE1.13
Спасибо за вклад - судя по всему, Magento сделает это автоматически Mage_Catalog_Block_Product_Abstract::getAddToCartUrl()через синглтон core / session. Можете ли вы привести пример кода, который вы использовали?
jharrison.au

Ответы:

3

Ничего себе, довольно дельта для этого класса от 1.7.0.2 -> 1.8.0.0! В то время как в этом классе произошли существенные изменения, и что это «нарушающее поведение», это следует считать ошибкой и должно быть передано в службу поддержки EE.

В этой ранее действующей функциональности нет ничего исключительно нового или острого, и даже в незначительной версии обновления не должно быть критических изменений (отсюда и Magento 2).

benmarks
источник
Спасибо Бен, просто хотел убедиться, что я ничего не пропустил.
jharrison.au