Одна проблема, которую я нашел с вишлист в Magento 1.8 это делать с новым form_key параметром, может быть, это то, что вызвало проблему для вас.
Magento 1.8 вводит ключи формы (они, возможно, существовали до 1,8 в той или иной форме, но теперь они повсюду). Они являются обязательными, если вы хотите, чтобы какая-либо из ваших форм делала что-либо. Хотите добавить в корзину/список пожеланий/список сравнения? Вам нужен ключ формы. Хотите отправить контактную форму? Вам нужен ключ формы. Хотите войти? Ключ формы. И т. Д.
Все необходимые базовые шаблоны были обновлены, чтобы включить этот ключ в качестве скрытого элемента ввода. По моему опыту вам просто нужно скопировать и вставить эту строку из любого из десятка различных мест в любые пользовательские шаблоны, которые у вас есть (где-то внутри элемента формы), и все будет хорошо.
Итак, все хорошо - еще одна функция повышения безопасности/защиты от спама и достаточно простая для размещения.
Проблема заключается в том, что $this->helper('wishlist')->getAddUrl($_product)
генерирует URL-адрес, который также содержит, содержащий этот ключ формы, например. /wishlist/index/add/product/101/form_key/xyz
который просто не работает. И в этом случае, «не работает», я имею в виду, что кнопка «добавить в список пожеланий» не добавляет ничего в ваш список желаний, хотя она все равно приведет вас к вашей странице списка желаний.
Не случайно или по дизайну я не уверен, но похоже, что form_key не работает в URL-адресе, как это делают большинство параметров Magento. Он должен быть стандартной переменной HTTP, например. ввод в поле формы или добавление к строке запроса в URL-адресе, например? form_key = xyz.
На вид продукта, по крайней мере, и я думаю, что в режиме списка кнопка списка желаний фактически вызывает productAddToCartForm.submitLight()
, что означает, что URL-адрес вообще не нужен ключ формы, поскольку productAddToCartForm уже содержит его.
Как это исправить? Как и в большинстве случаев, существует множество способов. Вы можете прекратить использовать $this->helper('wishlist')->getAddUrl($_product)
и заменить его на что-то вроде $this->getStoreUrl('wishlist/index/add/product/'.$_product->getId())
(я не тестировал это так с осторожностью), или вы можете переопределить Mage_Wishlist_Helper_Data :: getAddUrl, что и я решил сделать. Это влияет на все шаблоны и т. Д., Которые пытаются использовать URL-адрес «добавить в список пожеланий», что может быть хорошим или плохим. Я думаю, что хорошо, в этом случае, но это зависит от вас.
I скопированный маг/лист желаний/помощник/данные.PHP из приложения/код/ядра для приложения/код/местные и изменения:
public function getAddUrl($item)
{
return $this->getAddUrlWithParams($item);
}
к:
public function getAddUrl($item)
{
$productId = null;
if ($item instanceof Mage_Catalog_Model_Product) {
$productId = $item->getEntityId();
}
if ($item instanceof Mage_Wishlist_Model_Item) {
$productId = $item->getProductId();
}
if ($productId) {
$params = array('product' => $productId);
return $this->_getUrlStore($item)->getUrl('wishlist/index/add', $params);
}
return false;
}
... который просто копия функции getAddUrlWithParams с "Params" жестко закодирован только для идентификатора продукта.
Каждый хороший вопрос StackOverflow, в котором говорится о проблеме, указывает, что на самом деле проблема. Пожалуйста, объясните, что проблема 'не работает' не является точным определением проблемы. – Matmarbon
Я имею в виду: в чем же разница между тем, что вы хотите и что получаете? – Matmarbon
Код в addto.phtml был закомментирован, поэтому я раскоментировал его, но я до сих пор не вижу добавления в список пожеланий в своем представлении продукта – user3171293