Интернет-магазин Modx Revolution и турбо-страницы Яндекса

По работе над проектом созданным на CMS Modx Revolution, встала необходимость создать выгрузку товаров магазина в турбо-страницы яндекса. Весь процесс создания я описывать не буду, а расскажу, как быстро создать страницу добавления в корзину для двух популярных модулей.

 

Турбо-страницы Яндекса и Minishop2 MODX

В первую очередь создадим сниппет, например «addproduct». Вставляем в него очень маленький код

<?php
/**
 * @property id - (int) id товара.
 * @property $carturl - (int) id корзины или страницы куда мы хотим перейти.
 */
if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->initialize($modx->context->key); //Инциализация сервиса
$miniShop2->cart->add($id); // Добавляем товар в корзину c полученным ID
$url = $modx->makeUrl($carturl, "", "", "full"); //по id скорзины получаем урл для перехода
$modx->sendRedirect($url); //переходим в корзину, можно перейти и в саму карточку товара
}
return ;

Подробнее о сервисе minishop2 можно почитать тут

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

Можно создать документ с начальным шаблоном или любым шаблоном, все равно будет сразу переход в корзину. У меня это страница «сайт.ру/addproduct.html».

В шаблон или содержимое документа вставляем наш сниппет, отключая кеширование.

&id=`` получаем из строки id товара и отправляем его снипету (подробнее тут).

&carturl=`160` - сюда вставляем id корзины или документа, куда будет переход после добавления товара в корзину.

Вот и все страница обработки товаров для турбо-страниц готова, остальное делаем по инструкции от яндекса.

 

Турбо-страницы Яндекса и Shopkeeper3 MODX

В модуле интернете-магазина Shopkeeper3 все делается гораздо проще, возможно, но я не уверен. После подгрузки библиотеки jQuery вставляем скрипт:

<script>
$(document).ready(function() {
//Функция для обработки параметров url адреса
 var getUrlParameter = function getUrlParameter(sParam) {
	  var sPageURL = decodeURIComponent(window.location.search.substring(1)),
		  sURLVariables = sPageURL.split('&'),
		  sParameterName,
		  i;
	  for (i = 0; i < sURLVariables.length; i++) {
		  sParameterName = sURLVariables[i].split('=');
		  if (sParameterName[0] === sParam) {
			  return sParameterName[1] === undefined ? true : sParameterName[1];
		  }
	  }
  };
  if((getUrlParameter('addtocart') == 'true')){ //проверяем что на данную страницу мы обратились для добавления товара в корзину
	$.post({
	 type: 'POST',
	 url: 'https://spectre.su/blog/internet-magazin-modx-revolution-i-turbo-straniczyi-yandeksa.html',
	 data: 'shk-id=691&shk-count=1&test__691__add',
	 success: (data) => {
	//После успешного добавления в корзину обновим содержимое корзины
	  var el = document.createElement('html');
	  el.innerHTML = data;
	  $('.shopCart').html($(el).find('.shopCart').html())
	 }
	})
  }
})
</script>

Если вы хотите это делать на отдельной странице, вставляем в содержимое документа или шаблона скрипт

<script>
$(document).ready(function() {
	$.post({
	 type: 'POST',
	 url: 'https://spectre.su/blog/internet-magazin-modx-revolution-i-turbo-straniczyi-yandeksa.html',
	 data: 'shk-id=691&shk-count=1&test__691__add',
	 success: (data) => {
	//После успешного добавления в корзину переходим в корзину
	   $(location).attr("href", ""); //где ИД id документа с корзиной
	 }
	})
})
</script>

Вот и все, остальное по инструкции от яндекса.

Комментариев - 0

Разрешённые теги: <b><i><br>