<?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/353/otobrazhenie-komplektatsii-v-spiske-tovarov/</link>
		<atom:link href="http://forum.readyscript.ru/feed/rss/topic/353/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Отображение комплектаций в списке товаров».]]></description>
		<lastBuildDate>Mon, 25 May 2015 14:17:36 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1406/#p1406</link>
			<description><![CDATA[<p>Уже пригодилось) Оптовый интернет-магазин, поэтому выбор комплектации и количества сразу из списка товаров категории.</p>]]></description>
			<author><![CDATA[null@example.com (Ярослав)]]></author>
			<pubDate>Mon, 25 May 2015 14:17:36 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1406/#p1406</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1389/#p1389</link>
			<description><![CDATA[<p>Не за что. <img src="http://forum.readyscript.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /> Надеюсь, Вам это пригодится.</p>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Tue, 19 May 2015 15:12:33 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1389/#p1389</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1388/#p1388</link>
			<description><![CDATA[<p>Спасибо за детальный ответ!</p>]]></description>
			<author><![CDATA[null@example.com (Ярослав)]]></author>
			<pubDate>Tue, 19 May 2015 12:56:59 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1388/#p1388</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1381/#p1381</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Подскажите, пожалуйста, а как быть с многомерными комплектациями?<br />Пробовал по аналогии с кодом из файла product.tpl, вывод по var_dump показал, что у $product нет multioffers.<br />Многомерные комплектации используются, в корзине выбор есть, в карточке товара аналогично.</p><p>p.s. Подсмотрел в контроллере: $product-&gt;fillMultiOffers()</p></blockquote></div><p>Вы всё верно подсмотрели. Дело в том, что мы не подгружаем к товару многомерки сразу, т.к. они не требуются в списке, а нужны лишь на странице товара.<br />Для того, чтобы подгрузить к одному товару многомерки используется конструкция <br /></p><div class="codebox"><pre><code>{$product-&gt;fillMultiOffers()}</code></pre></div><p>После этого к товару будут дописаны многомерки если они есть и проверить это можно так:<br /></p><div class="codebox"><pre><code>{if $product-&gt;isMultiOffersUse()}
   //Многомерки используются
{else}
   //Иначе
{/if}</code></pre></div><p>После того как добавятся многомерки, то они будут ключе массива объекта \Catalog\Model\Orm\Product. А именно в <br /></p><div class="codebox"><pre><code>   &lt;pre&gt;
   {var_dump($product.multioffers)}
   &lt;/pre&gt;</code></pre></div><p>Т.е. перебрать многомерки можно как в карточке товара<br /></p><div class="codebox"><pre><code>{foreach $product.multioffers.levels as $level}
    
{/foreach}</code></pre></div><p>Следующим шагом, нужно добавить информацию о комплектациях, которые соответствуют одной из выбранных многомерных комплектаций.<br /></p><div class="codebox"><pre><code>{if $product-&gt;isOffersUse()}
                {foreach from=$product.offers.items key=key item=offer name=offers}
                    &lt;input value=&quot;{$key}&quot; type=&quot;hidden&quot; name=&quot;hidden_offers&quot; class=&quot;hidden_offers&quot; {if $smarty.foreach.offers.first}checked{/if} id=&quot;offer_{$key}&quot; data-info=&#039;{$offer-&gt;getPropertiesJson()}&#039; {if $check_quantity}data-num=&quot;{$offer.num}&quot;{/if} {if $catalog_config.use_offer_unit}data-unit=&quot;{$offer-&gt;getUnit()-&gt;stitle}&quot;{/if} data-change-cost=&#039;{ &quot;.offerBarcode&quot;: &quot;{$offer.barcode|default:$product.barcode}&quot;, &quot;.myCost&quot;: &quot;{$product-&gt;getCost(null, $key)}&quot;, &quot;.lastPrice&quot;: &quot;{$product-&gt;getCost(&#039;Зачеркнутая цена&#039;, $key)}&quot;}&#039; data-images=&#039;{$offer-&gt;getPhotosJson()}&#039; data-sticks=&#039;{$offer-&gt;getStickJson()}&#039;/&gt;
                {/foreach}
                
      &lt;input type=&quot;hidden&quot; name=&quot;offer&quot; value=&quot;0&quot;/&gt;
{/if}</code></pre></div><p>Соответственно нужно обеспечить выбор нужной комплектации которая соответствует выбраной многомерной комплектации. Если посмотреть на input&#039;ы, то там видно, что подгружаются сведения о многомерках в data-info. <br />Т.е. нужно javascript.<br />Посмотреть как взять нужную комплектацию можно в /templates/ВАША ТЕМА/resourse/js/jquery.changeoffer.js, в методе <strong>changeMultiOffer</strong>.</p><p>Для javascript просмотра используйте firebug и console.log(переменная);</p><p>В этом методе смотрится, что выбрана многомерка, смотрится соотвествие комплектациям, и если такая есть, то в input с name=&quot;offer&quot; ставится нужная комплектация.</p><p>При нажатии на кнопку купить. Скрипт смотрит что у нас находится в этом input в рамках контейнера который обёрнут с <strong>data-id=&quot;id товара&quot;</strong>, как приведено выше.</p><p>По идее, Вам надо просто добавить скрипт <strong>jquery.changeoffer.js</strong> на эту страницу и он сам поймёт всю структуру. И при смене многомерки будет выбиратся нужная комплектация. Главное чтобы была обёртка с <strong>data-id</strong> (как было описано в предыдущем посте).</p><p>Есть ещё другой момент. Вы работаете со списком товаров, а каждый раз подгружать многомерки накладно. Поэтому вместо:<br /></p><div class="codebox"><pre><code>{$product-&gt;fillMultiOffers()}</code></pre></div><p>Вам нужно использовать конструкцию<br /></p><div class="codebox"><pre><code>{$list=$this_controller-&gt;api-&gt;addProductsMultiOffers($list)}</code></pre></div><p>Подробнее данный метод можно посмотреть в файле<strong> /modules/catalog/model/api.inc.php</strong>. Данный метод позволит подгрузить многомерки сразу многим товарам.</p><p>Пробуйте.</p>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Mon, 18 May 2015 16:10:13 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1381/#p1381</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1380/#p1380</link>
			<description><![CDATA[<p>Подскажите, пожалуйста, а как быть с многомерными комплектациями? <br />Пробовал по аналогии с кодом из файла product.tpl, вывод по var_dump показал, что у $product нет multioffers.<br />Многомерные комплектации используются, в корзине выбор есть, в карточке товара аналогично.</p><p>p.s. Подсмотрел в контроллере: $product-&gt;fillMultiOffers()</p>]]></description>
			<author><![CDATA[null@example.com (Ярослав)]]></author>
			<pubDate>Mon, 18 May 2015 13:50:50 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1380/#p1380</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1348/#p1348</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Единственное, не появляется значение $offer.title в случаях если у меня 1 вариант комплектации. Если их 2 и больше, то все выводиться нормально.</p></blockquote></div><p>Если у товара 1 комплектация, то она не выводится, т.к. это и есть сам товар.<br />Вам надо поставить проверку на наличие комплектаций(Если больше двух). Сделать это просто:<br /></p><div class="codebox"><pre><code>{if $product-&gt;isOffersUse()}
    //Если есть комплектации и их больше 1
{else}
    //Иначе просто сам товар.
{/if}</code></pre></div><p>Насчёт цены для комплектаций, то вы верно подсмотрели решение. В вашем случае нужна конструкция:<br /></p><div class="codebox"><pre><code>{$product-&gt;getCost(&#039;Имя цены или null&#039;,&#039;номер комплектации начиная от 0&#039;)}

{*Например*}
{$product-&gt;getCost(null,2)} {*Получение цены основной для третьей комплектации*}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Wed, 06 May 2015 07:49:14 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1348/#p1348</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1347/#p1347</link>
			<description><![CDATA[<div class="quotebox"><cite>Александр пишет:</cite><blockquote><p>Всё просто.<br />Цену можно получить в шаблоне следующей конструкцией:</p><div class="codebox"><pre><code>{$product-&gt;getCost(&#039;Имя цены или ничего&#039;)}</code></pre></div></blockquote></div><p>Спасибо огромное, помогло.</p><p>Применил конструкцию </p><p>{foreach from=$product.offers.items key=key item=offer name=offers}<br />&lt;b&gt;&lt;label for=&quot;offer_{$key}_{$product.id}&quot;&gt;{$offer.title} - &lt;/label&gt;&lt;/b&gt;<br />{$product-&gt;getCost(null, $key)}<br />{$product-&gt;getCost(&#039;Зачеркнутая цена&#039;, $key)}<br />{/foreach}</p><p>Единственное, не появляется значение $offer.title в случаях если у меня 1 вариант комплектации. Если их 2 и больше, то все выводиться нормально.</p>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Wed, 06 May 2015 06:47:30 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1347/#p1347</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1343/#p1343</link>
			<description><![CDATA[<p>Всё просто.<br />Цену можно получить в шаблоне следующей конструкцией:</p><div class="codebox"><pre><code>{$product-&gt;getCost(&#039;Имя цены или ничего&#039;)}</code></pre></div><p>Если имя цены не указано, то возвращается значение цены по умолчанию.<br />Для вашего случая цену можно вывести так:</p><div class="codebox"><pre><code>{*Цена по умолчанию*}
{$product-&gt;getCost()}

{*Цена зачеркнутая*}
{$product-&gt;getCost(&#039;Зачеркнутая цена&#039;)}</code></pre></div><p>Т.к. <strong>{$product}</strong> является объектом <strong>\Catalog\Model\Orm\Product</strong>, то Вам будут доступны все фунукции класса <strong>Product</strong> в файле <strong>/modules/catalog/model/orm/product.inc.php</strong><br />Пробуйте и отпишитесь <img src="http://forum.readyscript.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Tue, 05 May 2015 15:43:28 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1343/#p1343</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1342/#p1342</link>
			<description><![CDATA[<div class="quotebox"><cite>Александр пишет:</cite><blockquote><p>Помогло?</p></blockquote></div><p>Столкнулся с такой же проблемой - решение работает. А как вывести цены + зачеркнутые цены для каждой комплектации рядом с название комплектации? Заранее спасибо за ответ</p>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Tue, 05 May 2015 13:48:05 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1342/#p1342</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1281/#p1281</link>
			<description><![CDATA[<p>Помогло?</p>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Thu, 30 Apr 2015 08:23:20 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1281/#p1281</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1268/#p1268</link>
			<description><![CDATA[<p>Можно рассмотреть более простой вариант. Вывести комплектации товара и в строках с комплектациями на против каждой вывести кнопку в корзину с уже готовых url для помещения товара с нужно комплектацией в корзину.</p><p>Например вот так:<br /></p><div class="codebox"><pre><code>{foreach from=$product.offers.items key=key item=offer name=offers}
&lt;a href=&quot;{$router-&gt;getUrl(&#039;shop-front-cartpage&#039;, [&quot;add&quot; =&gt; $product.id,&quot;offer&quot;=&gt;$key])}&quot; class=&quot;addToCart&quot;&gt;В корзину&lt;/a&gt;
{/foreach}</code></pre></div><p>Но если всё же нужны радиокнопки, то можно сделать так:<br />Контейнер в который вы оборачиваете выводящийся товар с комплектациями добавить атрибут <strong>&quot;data-id&quot;</strong>, где значением будет id текущего перебираемого товара. А внутри уже выводить комплектации радио кнопками с атрибтом <strong>name=&quot;offer&quot;</strong>.<br />Дело в том, что скрипт который отрабатывает нажатие на добавить в корзину ищет ближайшего родителя в html, у которого есть атрибут data-id со значением текущего товара. Как только он его находит он пытается найти внутри этого оборачивающего контейнера <strong>input</strong> с атрибутом name=&quot;offer&quot;. Т.е. ищет какую какую комплектацию хотят поместить и автоматически добавляет её в запрос. Поэтому в Вашем случае надо сделать так:</p><div class="codebox"><pre><code>&lt;div data-id=&quot;{$product.id}&quot;&gt;
{foreach from=$product.offers.items key=key item=offer name=offers}
     &lt;input value=&quot;{$key}&quot; type=&quot;radio&quot; name=&quot;offer&quot; {if $smarty.foreach.offers.first}checked{/if} id=&quot;offer_{$key}_{$product.id}&quot; /&gt;
     &lt;label for=&quot;offer_{$key}_{$product.id}&quot;&gt;{$offer.title}&lt;/label&gt;&lt;br&gt;
     &lt;a href=&quot;{$router-&gt;getUrl(&#039;shop-front-cartpage&#039;, [&quot;add&quot; =&gt; $product.id])}&quot; class=&quot;addToCart&quot;&gt;В корзину&lt;/a&gt;
{/foreach}
&lt;/div&gt;</code></pre></div><p>Обратите внимание, что ссылке присвоен класс <strong>addToCart</strong> именно этот класс отвечает за нажатие на добавить в корзину. Если хотите разобраться более подробно, то загляните в common.js в папке с Вашей темой оформления.<br />Пробуйте.</p>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Wed, 29 Apr 2015 08:47:29 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1268/#p1268</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1265/#p1265</link>
			<description><![CDATA[<p>В настоящее время, если товар с комплектацией, то всплывает окно, в котором нужно её выбрать.</p><p>Если вы хотите сразу отображать, то это можно сделать доработкой шаблона.<br />Корзина воспринимает URL видов: /cart/?add=ID_ТОВАРА&amp;offer=ID_КОМПЛЕКТАЦИИ</p><p>В начале шаблона где-нибудь добавить массовую загрузку комплектаций к товарам.<br /></p><div class="codebox"><pre><code>{$list=$this_controller-&gt;api-&gt;addProductsOffers($list)}</code></pre></div><p>Вам нужно вывести в виде радиокнопок комплектации для каждого товара в шаблоне, примерно таким образом</p><div class="codebox"><pre><code>{foreach from=$product.offers.items key=key item=offer name=offers}
     &lt;input value=&quot;{$key}&quot; type=&quot;radio&quot; name=&quot;offer&quot; {if $smarty.foreach.offers.first}checked{/if} id=&quot;offer_{$key}_{$product.id}&quot; /&gt;
     &lt;label for=&quot;offer_{$key}_{$product.id}&quot;&gt;{$offer.title}&lt;/label&gt;&lt;br&gt;
{/foreach}</code></pre></div><p> и написать JavaScript, который будет править href у иконки &quot;В корзину&quot; для этого товара, добавляя параметр offer=ID_ОТМЕЧЕННОЙ_КОМПЛЕКТАЦИИ.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Tue, 28 Apr 2015 16:59:43 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1265/#p1265</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1263/#p1263</link>
			<description><![CDATA[<p>В списке товаров (list_products.tpl) дать возможность покупателю выбрать какую комплектацию положить в корзину.<br />Через radio button, например, отображать размер и цену.</p>]]></description>
			<author><![CDATA[null@example.com (Владимир)]]></author>
			<pubDate>Tue, 28 Apr 2015 16:47:43 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1263/#p1263</guid>
		</item>
		<item>
			<title><![CDATA[Re: Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1262/#p1262</link>
			<description><![CDATA[<p>Здравствуйте. Поясните подробнее Вашу задачу. Вам надо при отображении списка товаров, получать к товару комплектации, чтобы потом вывести по ним сведения? Я имею ввиду шаблон list_products.tpl.</p>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Tue, 28 Apr 2015 12:49:20 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1262/#p1262</guid>
		</item>
		<item>
			<title><![CDATA[Отображение комплектаций в списке товаров]]></title>
			<link>http://forum.readyscript.ru/post/1259/#p1259</link>
			<description><![CDATA[<p>День добрый!<br />Подскажите, можно ли производить выбор комплектаций в списке товаров?<br />В нашем случае это уменьшило бы список товаров в 4 раза.</p>]]></description>
			<author><![CDATA[null@example.com (Владимир)]]></author>
			<pubDate>Tue, 28 Apr 2015 11:31:19 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/1259/#p1259</guid>
		</item>
	</channel>
</rss>
