2014-01-16 2 views
2

Я использую этот фрагмент кода, чтобы добавить список пожеланий к моему товаруMagento Добавить в лист пожеланий код не работает

<a onclick="setLocation('<?php echo $this->getAddToWishlistUrl($_product) ?>')" 
class="buttons-wish" title="<?php echo $this->__('Add to Wishlist') ?>"></a> 
<a onclick="setLocation('<?php echo $this->getAddToCompareUrl($_product) ?>')" 
class="buttons-compare" title="<?php echo $this->__('Add to Compare') ?>"></a> 

Но по какой-то причине он не работает.

мне нужна помощь, чтобы решить этот вопрос

+1

Каждый хороший вопрос StackOverflow, в котором говорится о проблеме, указывает, что на самом деле проблема. Пожалуйста, объясните, что проблема 'не работает' не является точным определением проблемы. – Matmarbon

+0

Я имею в виду: в чем же разница между тем, что вы хотите и что получаете? – Matmarbon

+0

Код в addto.phtml был закомментирован, поэтому я раскоментировал его, но я до сих пор не вижу добавления в список пожеланий в своем представлении продукта – user3171293

ответ

0

Проверить в бэкэнде System->Configuration->Advanced->Advanced->Disable Modules Output Mage_Wishlist включен или нет.

4

Попробуйте этот.

<a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a>              
<a href="<?php echo $this->helper('catalog/product_compare')->getAddUrl($_product) ?>"><?php echo $this->__('Add to Compare') ?></a> 
+0

в моем случае URL-адрес списка пожеланий всегда генерируется с помощью https:// вместо http; // Как я могу это предотвратить? Недавно мы отключили https: // с сайта – Butterfly

0

Одна проблема, которую я нашел с вишлист в 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" жестко закодирован только для идентификатора продукта.

Смежные вопросы