Обновленный аналог-лист для сайта ScooterPrice.ru

Сегодня дошли руки до давнишней задачи — аналоги товаров для сайта ScooterPrice.ru.

В этот раз мы объединили товары из графических схем с папками аналогии. Структура справочника стала такая:

Где в инфоблоке графических схем в каждой конечной папке детали лежит список артикулов товаров этой детали:

Этот же список используется в карточке самого товара для отображения его аналогов:

И, конечно, сам код компонента аналогов:

<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
if (!empty($arParams['SKU'])) {
    $arFilter = Array("NAME"=>$arParams['SKU'],"IBLOCK_ID"=>21);//21 иблок с папками аналогами
    $arSelect = Array("IBLOCK_SECTION_ID");
    $SECTION = CIBlockElement::GetList(null, $arFilter,null,null,$arSelect);
    if ($SECTION=$SECTION->GetNextElement()){
        $SECTION = $SECTION->GetFields();
        $arFilter = Array("IBLOCK_SECTION_ID"=>$SECTION['IBLOCK_SECTION_ID'],"IBLOCK_ID"=>21);
        $arSelect = Array("NAME");
        $ANALOG = CIBlockElement::GetList(null, $arFilter,null,null,$arSelect);
        if ($ANALOG->SelectedRowsCount()>1){
            ?>
            <h4>Аналоги и заменители</h4>
            <table class="table">
                <?
                while ($ELEMENT=$ANALOG->GetNextElement()){
                    $ELEMENT=$ELEMENT->GetFields();
                    if ($ELEMENT["NAME"]!==$arParams['SKU']){
                        $arFilter = Array("PROPERTY_CML2_ARTICLE"=>$ELEMENT["NAME"]);
                        $arSelect = Array("ID", "NAME", "DETAIL_PAGE_URL","PREVIEW_PICTURE","CATALOG_GROUP_1","CATALOG_QUANTITY");
                        $CARGO = CIBlockElement::GetList(null, $arFilter,null,null,$arSelect);
                        if ($CARGO=$CARGO->GetNext()){
                            $IMG=CFile::GetPath($CARGO["PREVIEW_PICTURE"]);
                            $INSTOK=$CARGO["CATALOG_QUANTITY"];
                            $INSTOKINORDER=$APPLICATION->IncludeComponent("spl:instock","",Array("SKU" => $ELEMENT["NAME"]));
                            ?>
                            <tr class="<?if (!$INSTOK&&!$INSTOKINORDER):?>alert-danger<?elseif (!$INSTOK&&$INSTOKINORDER):?>alert-warning<?else:?><?endif;?>">
                                <td class="hidden-sm hidden-xs"><?if ($IMG):?><img src="<?=$IMG?>" class="img-thumbnail" width="64"><?endif;?></td>
                                <td class="text-left"><a href="<?=$CARGO["DETAIL_PAGE_URL"]?>"><?=$ELEMENT["NAME"]?></a></td>
                                <td class="text-left"><a href="<?=$CARGO["DETAIL_PAGE_URL"]?>"><?=$CARGO["NAME"]?></a></td>
                                <td class="text-right"><?=$CARGO["CATALOG_PRICE_1"]?></td>
                            </tr>
                            <?
                        }//if cargo
                    }//if ($element["NAME"]!==$arParams['SKU'])
                }//while
                ?>
            </table>
            <?
        }//analog count
    }//is section
}
?>

Живой вид доступен на странице товара http://scooterprice.ru/catalog/element/13226/ или из карточки детали MotoDoc 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *