VaM

Получаем содержимое корзины в json формате!

1 сообщение в этой теме

Для примера, сделаем страницу http://ваш-магазин.ру/ddelivery/cart.json

Которая будет возвращать содержимое корзины посетителя в json формате.

1. Открываем /app/Config/routes.php и правим:

Router::parseExtensions('rss','xml');

на:

Router::parseExtensions('rss','xml','json');

2. Создаём файл DdeliveryController.php в папке /app/Controller/ с таким содержимым:

<?php
/* -----------------------------------------------------------------------------------------
   VamShop - http://vamshop.com
   -----------------------------------------------------------------------------------------
   Copyright (c) 2014 VamSoft Ltd.
   License - http://vamshop.com/license.html
   ---------------------------------------------------------------------------------------*/
class DdeliveryController extends AppController {
	public $name = 'Ddelivery';

	public function cart () {

	App::uses('CurrencyBaseComponent', 'Controller/Component');
	$CurrencyBase = new CurrencyBaseComponent(new ComponentCollection());

	App::uses('ContentBaseComponent', 'Controller/Component');
	$ContentBase = new ContentBaseComponent(new ComponentCollection());

	global $order;
	global $config;
	global $content;

	$order_items = array();

		$total_quantity = null;
		$total_weight = null;

	foreach($order['OrderProduct'] AS $cart_item)
	{
		$content_id = $cart_item['content_id'];
		$total_quantity += $cart_item['quantity'];
		$total_weight += $cart_item['weight']*$cart_item['quantity'];
		$image = array();
		$content_image = $ContentBase->get_content_image($cart_item['content_id']);
		$content_information = $ContentBase->get_content_information($cart_item['content_id']);

		// Content Image
		
		if($content_image != "") {
			$image_url = $content_id . '/' . $content_image . '/40';
			$image_path = BASE . '/img/content/' . $content_image;
			$thumb_name = substr_replace($content_image , '', strrpos($content_image , '.')).'-40.png';	
			$thumb_path = IMAGES . 'content/' . $thumb_name;
			$thumb_url = BASE . '/img/content/' . $thumb_name;

				if(file_exists($thumb_path) && is_file($thumb_path)) {
					list($width, $height, $type, $attr) = getimagesize($thumb_path);
					$image['image'] = true;
					$image['image_original'] =  $image_path;
					$image['image_thumb'] =  $thumb_url;
					$image['image_width'] = $width;
					$image['image_height'] = $height;
				} else {
					$image['image'] = true;
					$image['image_original'] =  $image_path;
					$image['image_thumb'] = BASE . '/images/thumb/' . $image_url;
					$image['image_width'] = null;
					$image['image_height'] = null;
				}

		} else { 

			$image_url = 'noimage.png/40';
			$thumb_name = 'noimage-40.png';	
			$thumb_path = IMAGES . 'content/' . $thumb_name;
			$thumb_url = BASE . '/img/content/' . $thumb_name;

				if(file_exists($thumb_path) && is_file($thumb_path)) {
					list($width, $height, $type, $attr) = getimagesize($thumb_path);
					$image['image'] = true;
					$image['image_thumb'] =  $thumb_url;
					$image['image_width'] = $width;
					$image['image_height'] = $height;
				} else {
					$image['image'] = true;
					$image['image_thumb'] = BASE . '/images/thumb/' . $image_url;
					$image['image_width'] = null;
					$image['image_height'] = null;
				}

		}
		
		$order_items[$content_id] = array(
			'id' => $cart_item['content_id'],
			'link' => BASE . '/product/' . $content_id . $config['URL_EXTENSION'],
			'name' => $cart_item['name'],
			'width' => $cart_item['width'],
			'height' => $cart_item['height'],
			'length' => $cart_item['length'],
			'volume' => $cart_item['volume'],
			'model' => $cart_item['model'],
			'sku' => $cart_item['sku'],
			'weight' => $cart_item['weight'],
			'image' => $image,
			'price' => $CurrencyBase->display_price($cart_item['price']),
			'price_plain' => $cart_item['price'],
			'qty' => $cart_item['quantity'],
			'url' => BASE . '/product/' . $content_information['Content']['alias'] . $config['URL_EXTENSION'],
			'line_total' => $CurrencyBase->display_price($cart_item['quantity']*$cart_item['price'])
		);
	}

		$this->set('products', $order_items);
	}

}
?>

3. Создаём папку /app/View/Ddelivery/json и файл cart.ctp внутри этой папки с таким содержимым:

<?php
if(!$products) return;
$output .= 'var products = ['. "\n";
foreach ($products as $cart_json) {
$output .= '{'. "\n";
$output .= 'id:' . $cart_json['id'] . ',' . "\n";
$output .= 'name:' . $cart_json['name'] . ',' . "\n";
$output .= 'price:' . $cart_json['price_plain'] . ',' . "\n";
$output .= 'width:' . $cart_json['width'] . ',' . "\n";
$output .= 'height:' . $cart_json['height'] . ',' . "\n";
$output .= 'length:' . $cart_json['length'] . ',' . "\n";
$output .= 'weight:' . $cart_json['weight'] . ',' . "\n";
$output .= 'quantity:' . $cart_json['qty'] . ',' . "\n";
$output .= 'sku:' . $cart_json['sku'] . "\n";
$output .= '},'. "\n";
}
$output .= '];'. "\n";

echo $output;

Всё.

Теперь при открытии адреса http://магзаин.ру/ddelivery/cart.json будет выводиться содержимое корзины.

var products = [
{
id:95,
name:Samsung GALAXY Note 3,
price:13999,
width:20,
height:5,
length:30,
weight:0.6,
quantity:1,
sku:
},
];

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас