<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум ReadyScript &mdash; Как получить в блоке выводящем корзину товары]]></title>
		<link>http://forum.readyscript.ru/topic/395/kak-poluchit-v-bloke-vyvodyashchem-korzinu-tovary/</link>
		<atom:link href="http://forum.readyscript.ru/feed/rss/topic/395/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Как получить в блоке выводящем корзину товары».]]></description>
		<lastBuildDate>Wed, 10 Jun 2015 14:27:22 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Как получить в блоке выводящем корзину товары]]></title>
			<link>http://forum.readyscript.ru/post/1474/#p1474</link>
			<description><![CDATA[<p><strong>Поступил вот такой вопрос от пользователя:</strong><br />Добрый день, подскажите. <br />Есть макет сайта. По задумке справа должна быть корзина с превью товаров которые, пользователь положил в корзину. Не получается туда их вытащить. Кол-во и итоговую сумму сделал а сами товары не<br />могу. Пытался сделать как в Шаблоне молодежная. Но при нажатии на ссылку Корзина открывается отдельная страница, а не всплывающее окно</p><p><strong>Ответ:</strong><br />В молодёжной теме когда вы нажимаете купить, то к запросу передаётся параметр <strong>floatCart=1</strong> на фронт контроллер, который находится в <strong>/modules/shop/controller/front/cartpage.inc.php</strong>. В шаблон данный параметр попадает как переменная $floatCart.<br />Для молодёжной темы оформления, срабатывает шаблон <strong>/templates/fashion/moduleview/shop/cartpage.tpl</strong>.<br />Так вот если Вы обратите внимание на верх этого шаблона, то там проверяется данная переменная и если floatCart есть, то шаблон выводится по другой ветке данного шаблона.<br />Также когда вы обрабатываете нажатие купить, то скрипт который его обрабатывает, знает о том, что нужно отобразить благодаря floatCart. И если это floatCart установлен, то html который возвращается тупо заменяет нижнюю панель.<br />Посмотреть запрос можно с помощью firebug в FireFox на панели Консоль.<br />Для того, чтобы понять как работает скрипт вы можете открыть файл /templates/fashion/resource/js/common.js<br />Для того, чтобы отследить весь ход в javascript с помощью команды console.log();</p><p>Теперь, что касается получения товара в шаблоне корзины:<br />В шаблоне перебираются товары с помощью данной конструкции...<br /></p><div class="codebox"><pre><code>{foreach from=$cart_data.items key=index item=item}</code></pre></div><p>А сам товар, после этого можно получить так:<br /></p><div class="codebox"><pre><code>{assign var=product value=$product_items[$index].product}</code></pre></div><p><strong>$product</strong> будет являться объектом класса <strong>\Catalog\Model\Orm\Product</strong>, т.е. ему доступны все функции из файла <strong>/modules/catalog/model/orm/product.inc.php</strong></p><p><strong>\Shop\Controller\Block\Cart</strong><br />это блок контроллер в который передаются только общие данные, посмотреть это можно в <strong>/modules/shop/controller/block/cart.inc.php</strong></p><p>Так вот получить в шаблоне саму корзину вы можете с помощью публичного статического метода из апи корзины.<br />Само апи лежит в <strong>/modules/shop/model/cart.ini.php</strong><br />А именно <strong>\Shop\Model\Cart::currentCart();</strong></p><p>Но так как это шаблон, то нужно воспользоваться нашим плагином для вызова статических методов <strong>static_call</strong>.<br />Он расписан здесь:<br /><a href="http://readyscript.ru/dev-manual/dev_smarty_rsplugins.html#dev_smarty_rsplugins_function_static_call">static_call</a></p><p>Т.е. Вам надо прописать так:<br /></p><div class="codebox"><pre><code>{static_call var=cart callback=[&#039;\Shop\Model\Cart&#039;,&#039;currentCart&#039;]}</code></pre></div><p>После чего Вам будет доступна корзина в переменной $cart.<br />Получить товары можно так:<br /></p><div class="codebox"><pre><code>{assign var=product_items value=$cart-&gt;getProductItems()}</code></pre></div><p>Сведения о элементах в корзине так:<br /></p><div class="codebox"><pre><code>{assign var=cart_data value=$cart-&gt;getCartData()}</code></pre></div><p>А дальше как в шаблоне отображения корзины:<br /><strong>/templates/fashion/moduleview/shop/cartpage.tpl</strong></p>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Wed, 10 Jun 2015 14:27:22 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1474/#p1474</guid>
		</item>
	</channel>
</rss>
