По-умолчанию, в модуле Light Shop добавление товара в корзину осуществляется по клику на ссылку типа

<a href="/basket/add/*node_id*/nojs/?destination=node/*node_id*" class="add2basket-link ajax-processed rds_hl_nofollow">Добавить в корзину</a>

Даный вариант для СЕО в последнее время стал нежелательным, боты находят эти ссылки и переходят по ним, даже если ставить rel="nofollow" и была поставлена задача сделать добавление в корзину кнопкой. Через обычный button ни какую не получалось сделать и пришлось мастерить через форму. Итого, для добавления товара на посадочной нужно выставить ледующую конструкцию

<form action="/basket/add/<?php echo $node->nid; ?>/nojs" id="backed">
	<input type="submit" value="Добавить в корзину" />
	<input type="hidden" name="destination" value="node/<?php echo $node->nid; ?>" />
</form>

в action мы выставляем путь добавления товара в корзину, но как видим, в нашей изначальной ссылке он чуть длинне. Дело в том, что action формы не распознает вопросительные знаки и если оставить запись типа

<form action="/basket/add/*node_id*/nojs/?destination=node/*node_id*" id="backed">

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

<input type="hidden" name="destination" value="node/<?php echo $node->nid; ?>" />

Для представлений всё тоже самое, с той лишь разницей, что там нам нужно сначала получить урл текущей страницы и потом его добавлять в скрытый инпут. Сделать это можно двумя строка в php

<?php 
$uri = $_SERVER['REQUEST_URI'];
echo $uri;
?>

И затем добавляем наше php поле в value скрытого инпута.

upd.: Немного доделаем наш костыль проверкой на наличие ноды в корзине и вывода ссылки на неё

if (array_key_exists($node->nid, $_SESSION['basket']['items'])) {

Таким образом можно сделать условие - если нода есть в корзине - выводим ссылку на переход в корзину, если нет - кнопку на добавление в корзину. Так будет более похоже на оригинальную ссылку добавления.

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.