Обзор технических изменений ReadyScript 5.1. Данный материал предназначен для разработчиков, создающих собственные темы оформления и модули.
В ReadyScript 5.1 произошли изменения изменеия в работе комплектаций товара. В cписке комплектаций товара $product['offers']['items'] ключами теперь являются id комплектаций. Для получения основной комплектации товара теперь следует использовать метод getMainOffer.
$product = new \Catalog\Model\Offer\Product(826);
$main_offer = $product->getMainOffer();
echo $main_offer['id'];
Вариант получения основной комплектации по индексу 0 теперь является некорректным и будет удален в последующих обновлениях.
Как быстро обновить тему оформления для соответствия нововведениям?
Если вы используете кастомную тему оформления или ваша тема оформления отвязана от обновлений - то вам потребуется вручную внести следующие изменения:
Список шаблонов, в которых нужно внести изменения:
- /templates/{ТЕМА}/moduleview/catalog/product.tpl
- /templates/{ТЕМА}/moduleview/catalog/product_offers.tpl
- /templates/{ТЕМА}/moduleview/catalog/product_images.tpl
- /templates/{ТЕМА}/moduleview/shop/show_complekts.tpl
- /templates/{ТЕМА}/moduleview/shop/cartpage_page.tpl
Список изменений:
- конструкцию
{$first_offer_params=$product.offers.items.0.propsdata_arr}
заменить на конструкцию {$first_offer = $product->getMainOffer()}
{$first_offer_params = $first_offer.propsdata_arr}
- конструкции
{$product.offers.items.0->getUnit()->stitle}
и {$product.offers.items[0]->getUnit()->stitle}
заменить на конструкцию {$product->getMainOffer()->getUnit()->stitle}
- конструкцию
{foreach from=$stick_info.stick_ranges item=stick_range}
{$sticks=$product.offers.items.0.sticks[$warehouse.id]}
<span class="stick {if $sticks>=$stick_range}filled{/if}"></span>
{/foreach}
заменить на конструкцию {$first_offer = $product->getMainOffer()}
{$sticks = $first_offer.sticks[$warehouse.id]}
{foreach $stick_info.stick_ranges as $stick_range}
<span class="stick {if $sticks >= $stick_range}filled{/if}"></span>
{/foreach}
- конструкцию
{$offer_images=$product.offers.items[0].photos_arr}
заменить на конструкцию {$first_offer = $product->getMainOffer()}
{$offer_images = $first_offer.photos_arr}
- конструкцию
{$number=$product.offers.items[0].sticks[$warehouse.id]}
заменить на конструкцию {$first_offer = $product->getMainOffer()}
{$number = $first_offer.sticks[$warehouse.id]}
- конструкцию
<input type="hidden" name="offer" value="0"/>
заменить на конструкцию {$first_offer = $product->getMainOffer()}
<input type="hidden" name="offer" value="{$first_offer.id}"/>
- конструкцию
<input value="{count($product.offers.items)}" type="hidden" name="hidden_offers"
заменить на конструкцию <input value="0" type="hidden" name="hidden_offers"
В связи с изменениями в работе комплектаций товара, необходимо обновить файл "resource/js/rs.changeoffer.js" или "resource/js/jquery.changeoffer.js". Актуальную версию файла можно взять из темы оформления, на основе которой сделана ваша тема оформления.