Версия: 6.x
burger close
Обновление ReadyScript с версии 5.0 до 5.1

Обзор технических изменений 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

Список изменений:

  1. конструкцию
    {$first_offer_params=$product.offers.items.0.propsdata_arr}
    заменить на конструкцию
    {$first_offer = $product->getMainOffer()}
    {$first_offer_params = $first_offer.propsdata_arr}
  2. конструкции
    {$product.offers.items.0->getUnit()->stitle}
    и
    {$product.offers.items[0]->getUnit()->stitle}
    заменить на конструкцию
    {$product->getMainOffer()->getUnit()->stitle}
  3. конструкцию
    {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}
  4. конструкцию
    {$offer_images=$product.offers.items[0].photos_arr}
    заменить на конструкцию
    {$first_offer = $product->getMainOffer()}
    {$offer_images = $first_offer.photos_arr}
  5. конструкцию
    {$number=$product.offers.items[0].sticks[$warehouse.id]}
    заменить на конструкцию
    {$first_offer = $product->getMainOffer()}
    {$number = $first_offer.sticks[$warehouse.id]}
  6. конструкцию
    <input type="hidden" name="offer" value="0"/>
    заменить на конструкцию
    {$first_offer = $product->getMainOffer()}
    <input type="hidden" name="offer" value="{$first_offer.id}"/>
  7. конструкцию
    <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". Актуальную версию файла можно взять из темы оформления, на основе которой сделана ваша тема оформления.