mail@vecdev.ru

Вывод цен из прайс-листа другого инфоблока

Иногда требуется, чтобы у сайта услуг был собственный прайс-лист. Это достаточно удобно, ведь можно править все цены услуг в одном месте и они автоматически будут изменяться во всех услугах, где указана связь.

Чтобы это сделать нужно:

  1. Создать инфоблок "Цены" с множественным свойством ATT_PRICE.
  2. В инфоблоке услуг создать свойство типа Число "Вывод цены по ID", назовем его ATT_PRICEID.
  3. Теперь указывая ID элемента инфоблока "Цены" мы будем говорить услугам, чтобы они брали цен из этого элемента.

В news.list шаблона каталога услуг в месте вывода цены пропишем следующий код, тем самым мы выведем минимальную цену в списке услуг (если в прайс листе у нас указано их несколько.


<?if($arItem["DISPLAY_PROPERTIES"]["ATT_PRICEID"] && $arItem["DISPLAY_PROPERTIES"]["ATT_PRICEID"]["VALUE"] != ''){?>
    <div class="cl__price">
        <?
        $arFilter = array("IBLOCK_ID"= "ID_ИНФОБЛОКА_ЦЕН", "ID" => $arItem["DISPLAY_PROPERTIES"]["ATT_PRICEID"]["VALUE"]);
        $arSelect =  array("IBLOCK_ID", "ID", "NAME");
        $rsResult = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
        while($ob = $rsResult->GetNextElement()) {
            $arProps = $ob->GetProperties();
            echo "<span>". number_format(min($arProps["ATT_PRICE"]["VALUE"]), 0, '', ' ') . "</span> руб";
        }?>
    </div>
<?}?>

В news.detail шаблона каталога услуг в месте вывода цены пропишем следующий код, тем самым мы выведем все цены, которые только можно, плюс еще и описание к ним.


<?if($arResult["DISPLAY_PROPERTIES"]["ATT_PRICEID"] && $arResult["DISPLAY_PROPERTIES"]["ATT_PRICEID"]["VALUE"] != ''){?>
    <div class="cd__price">
        <?
        $prices = array();
        $arFilter = array("IBLOCK_ID"=> "ID_ИНФОБЛОКА_ЦЕН", "ID" => $arResult["DISPLAY_PROPERTIES"]["ATT_PRICEID"]["VALUE"]);
$arSelect = array("IBLOCK_ID", "ID", "NAME"); $rsResult = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); while($ob = $rsResult->GetNextElement()) { $arProps = $ob->GetProperties(); $prices["VALUE"] = $arProps["ATT_PRICE"]["VALUE"]; $prices["DESCRIPTION"] = $arProps["ATT_PRICE"]["DESCRIPTION"]; } foreach ($prices["VALUE"] as $key => $price) {?> <div class="row no-gutters cd__price-row"> <div class="col-4"> <div class="cd__price-val"> <?=$price?> руб. </div> </div> <div class="col-8 text-right"> <div class="cd__price-descr"> <?=$prices["DESCRIPTION"][$key]?> </div> </div> </div> <?}?> </div> <?}?>
Частный разработчик сайтов Vector Dev
Комментарии