Кнопка "Добавить в корзину" на странице CMS в Magento EE 1.13
Я пытаюсь создать целевую страницу для нашей компании, которая работает под управлением Magento Enterprise Edition 1.13. Мы используем страницы CMS для наших целевых страниц, и в прошлом мы могли создавать собственные кнопки добавления в корзину прямо на странице CMS. На самом деле это было очень просто, мы бы создали кнопку и отправили ее в конечную точку URL:
<button class="button btn-cart" title="Add to Cart" onclick="setLocation('/n/magento/checkout/cart/add/product/644/qty/1')" type="button"><span><span>Add to Cart</span></span></button>
Это было красиво и просто, что позволило нам по-настоящему привлечь посетителей целыми страницами и возможностью добавлять товары в корзину, не покидая этой высоко оптимизированной страницы.
Вы можете прочитать статью Stackru о СТАРОМ способе сделать это здесь: Размещение кнопки "Добавить в корзину" на домашней странице в Magento
Тем не менее, это больше не работает в Magento EE 1.13, согласно самим Magento.
Я связался с нашей службой поддержки Magento и объяснил мне, что синтаксис изменился, и теперь требуется, чтобы вы указали свой хэш безопасности в URL. Это показалось мне проблемой безопасности, поэтому я усомнился в этом. Затем мне ответили, что добавлен недостаток безопасности, чтобы разработчики больше не могли использовать это без ущерба для своего сайта. По сути, они препятствуют использованию этого. Они сказали:
Мой разработчик указал, что возможность добавления товара в корзину через прямой URL-адрес не была запланированной функциональностью в Magento, и поэтому добавление значения form_key предназначалось для предотвращения его дальнейшего использования при обновлении до 1.13.
Поэтому мой вопрос ко всем вам заключается в том, что если бы somoene захотел создать кнопки "добавить в корзину" на странице CMS, чтобы добавлять товары без необходимости отправлять кого-либо на страницу товара (где их больше не будет на нашем оптимизированном сайте) Целевая страница), как бы я это сделал?
Есть ли в Magento 1.13 способ добавить товар в корзину с помощью пользовательской кнопки, которую можно поместить в пользовательский HTML на странице CMS? Можно ли это сделать с помощью статического блока или виджета? Мы действительно полагались на эту функцию и сейчас ставим под сомнение цель ценовой бирки Magento EE за 18 тысяч долларов в год, когда эту функцию убрали. Пожалуйста, помогите, спасибо!
3 ответа
Существует способ изменить код magento, чтобы добавить товары в корзину без ключа формы.
Я опубликую решение, но в любом случае хочу предупредить вас, что удаление проверки ключа формы приведет к CSRF-атакам на ваших клиентов!
Вам нужно отредактировать приложение \code\core\Mage\Checkout\controllers\CartController.php
Найти следующий кусок кода:
public function addAction()
{
if (!$this->_validateFormKey()) {
$this->_goBack();
return;
}
Прокомментируйте первые 3 строки этой функции:
public function addAction()
{
//if (!$this->_validateFormKey()) {
// $this->_goBack();
// return;
//}
Теперь можно использовать статические ссылки.
Вы хотите включить formkey
блок, а затем использовать JavaScript, чтобы извлечь значение из <input />
сгенерированный тег и добавьте его в URL ссылки, AJAX и т. д.
{{block type="core/template" name="formkey" template="core/formkey.phtml"}}
Это будет работать в 1.13:
<button onclick="location.href ='{{config path="web/unsecure/base_url"}}/checkout/cart/add?product=1&qty=1'">Add To Cart</button>