Дорогие друзья, подскажите пожалуйста, в каком месте стоит ограничение на вывод списка элементов?
На данный момент элементы из каталога товаров выводятся по одному, случайно.
Компонент:
А вот сам вывод шаблон:
В Битриксе недавно, всю голову изломал, как тут сделать что бы можно было самому назначать количество выводимых элементов?
На данный момент элементы из каталога товаров выводятся по одному, случайно.
Компонент:
Код |
---|
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); /************************************************************************* Processing of received parameters *************************************************************************/ if(!isset($arParams["CACHE_TIME"])) $arParams["CACHE_TIME"] = 180; if(strlen($arParams["DISPLAY_IMG_WIDTH"])<=0) $arParams["DISPLAY_IMG_WIDTH"] = "75"; if(strlen($arParams["DISPLAY_IMG_WIDTH"])<=0) $arParams["DISPLAY_IMG_WIDTH"] = "225"; if(strlen($arParams["SHARPEN"])<=0) $arParams["SHARPEN"] = "30"; if(is_array($arParams['IBLOCK_ID'])) { foreach($arParams['IBLOCK_ID'] as $k => $v) { $v = intval($v); if ($v <= 0) unset($arParams['IBLOCK_ID'][$k]); else $arParams['IBLOCK_ID'][$k] = $v; } if(!count($arParams['IBLOCK_ID'])) $arParams['IBLOCK_ID'] = 0; } else { $arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]); } $arParams["PARENT_SECTION"] = intval($arParams["PARENT_SECTION"]); if($this->StartResultCache(false, ($arParams["CACHE_GROUPS"]==="N"? false: $USER->GetGroups()))) { if(!CModule::IncludeModule("catalog")) { $this->AbortResultCache(); ShowError(GetMessage("CATALOG_MODULE_NOT_INSTALLED")); return; } //SELECT $arSelect = array( "ID", "IBLOCK_ID", "CODE", "IBLOCK_SECTION_ID", "NAME", 'PREVIEW_TEXT', 'PREVIEW_TEXT_TYPE', 'DETAIL_TEXT', 'DETAIL_TEXT_TYPE', "PREVIEW_PICTURE", "DETAIL_PICTURE", "DETAIL_PAGE_URL", "PROPERTY_PRICE", "PROPERTY_PRICECURRENCY" ); //WHERE $arFilter = array( "ACTIVE_DATE" => "Y", "ACTIVE"=>"Y", "IBLOCK_ACTIVE"=>"Y", "CHECK_PERMISSIONS"=>"Y", "!PROPERTY_SPECIALOFFER_VALUE" => false, "IBLOCK_LID" => SITE_ID ); if(is_array($arParams['IBLOCK_ID'])) { $arFilter["IBLOCK_ID"] = $arParams["IBLOCK_ID"]; if(defined("BX_COMP_MANAGED_CACHE")) { foreach($arParams["IBLOCK_ID"] as $iblock_id) $GLOBALS["CACHE_MANAGER"]->RegisterTag("iblock_id_".$iblock_id); } } elseif($arParams['IBLOCK_ID'] > 0) { $arFilter["IBLOCK_ID"] = $arParams["IBLOCK_ID"]; if(defined("BX_COMP_MANAGED_CACHE")) $GLOBALS["CACHE_MANAGER"]->RegisterTag("iblock_id_".$arParams["IBLOCK_ID"]); } else { $arFilter["IBLOCK_TYPE"] = $arParams["IBLOCK_TYPE_ID"]; if(defined("BX_COMP_MANAGED_CACHE")) { $rsIBlock = CIBlock::GetList( array('SORT' => 'ASC', 'ID' => 'DESC'), array("SITE_ID" => SITE_ID, "TYPE"=>$arParams["IBLOCK_TYPE_ID"]) ); while($arIBlock = $rsIBlock->GetNext()) $GLOBALS["CACHE_MANAGER"]->RegisterTag("iblock_id_".$arIBlock["ID"]); $GLOBALS["CACHE_MANAGER"]->RegisterTag("iblock_id_new"); } } if($arParams["PARENT_SECTION"]>0) { $arFilter["SECTION_ID"] = $arParams["PARENT_SECTION"]; $arFilter["INCLUDE_SUBSECTIONS"] = "Y"; } //ORDER BY $arSort = array( "RAND"=>"ASC", ); $baseCurrency = CCurrency::GetBaseCurrency(); //EXECUTE $rsIBlockElement = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect); $rsIBlockElement->SetUrlTemplates($arParams["DETAIL_URL"]); $i = 5; while($obElement = $rsIBlockElement->GetNextElement()) { $arItem = $obElement->GetFields(); $i++; $arItem['PICTURE'] = null; if ($arItem["DETAIL_PICTURE"]) $arItem["PICTURE"] = CFile::GetFileArray($arItem["DETAIL_PICTURE"]); $arItem['PRICE'] = CCatalogProduct::GetOptimalPrice($arItem['ID'], 1, $USER->GetUserGroupArray()); if(count($arItem['PRICE']) > 0) $arItem["PRICE"]['DISCOUNT_PRICE'] = CCurrencyRates::ConvertCurrency($arItem["PRICE"]['DISCOUNT_PRICE'], $baseCurrency, $arItem["PRICE"]['PRICE']['CURRENCY']); if(count($arParams["PROPERTY_CODE"])) $arItem["PROPERTIES"] = $obElement->GetProperties(); elseif(count($arParams["PRODUCT_PROPERTIES"])) $arItem["PROPERTIES"] = $obElement->GetProperties(); $arItem["DISPLAY_PROPERTIES"] = array(); if (is_array($arParams["PROPERTY_CODE"])) foreach($arParams["PROPERTY_CODE"] as $pid) { $prop = &$arItem["PROPERTIES"][$pid]; if((is_array($prop["VALUE"]) && count($prop["VALUE"])>0) || (!is_array($prop["VALUE"]) && strlen($prop["VALUE"])>0)) { $arItem["DISPLAY_PROPERTIES"][$pid] = CIBlockFormatProperties::GetDisplayValue($arItem, $prop, "catalog_out"); } } if(empty($arParams["RAND_COUNT"])){ $arResult = $arItem;break; } else { $arResult["ITEMS"][] = $arItem; if($arParams["RAND_COUNT"] < $i) break; } } if($i > 0) { $this->IncludeComponentTemplate(); } else { $this->EndResultCache(); } } ?> |
А вот сам вывод шаблон:
Код |
---|
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <?if(!empty($arResult['NAME']) > 0): ?> <div class="content-block content-block-special" itemscope itemtype = "http://schema.org/Product"> <h3><?=GetMessage("CR_TITLE")?></h3> <?foreach($arResult["NAME"] as $arElement):?> <?=$arElement["NAME"]?> <?endforeach;?> <div class="special-product"> <?if(is_array($arResult["PICTURE_PREVIEW"])):?> <div class="item-image"><a href="<?=$arResult["DETAIL_PAGE_URL"]?>"><img border="0" itemprop="image" src="<?=$arResult["PICTURE_PREVIEW"]["SRC"]?>" width="<?=$arResult["PICTURE_PREVIEW"]["WIDTH"]?>" height="<?=$arResult["PICTURE_PREVIEW"]["HEIGHT"]?>" alt="<?=$arResult['NAME']?>" title="<?=$arResult['NAME']?>" /></a></div> <?endif;?> <div class="item-name"><a href="<?=$arResult["DETAIL_PAGE_URL"]?>"><span itemprop = "name"><?=$arResult['NAME']?></span></a></div> <? if (strlen($arResult["DESCRIPTION"]) > 0):?> <div class="item-desc" itemprop = "description"><?=$arResult["DESCRIPTION"]?></div> <?endif?> <?if(count($arElement["PRICE"])>0):?> <div class="item-price" itemprop = "offers" itemscope itemtype = "http://schema.org/Offer"> <?if ($arResult['bDiscount']):?> <span itemprop = "price"><?=$arResult['PRICE']['DISCOUNT_PRICE_F']?></span> <s><span itemprop = "price"><?=$arResult['PRICE']['PRICE_F']?></span></s> <?else:?> <span itemprop = "price"><?=$arResult['PRICE']['PRICE_F']?></span> <?endif;?> </div> <? else: $price_from = ''; if($arResult['DISPLAY_PROPERTIES']['MAXIMUM_PRICE']['VALUE'] > $arResult['DISPLAY_PROPERTIES']['MINIMUM_PRICE']['VALUE']) { $price_from = GetMessage("CR_PRICE_OT"); } CModule::IncludeModule("sale") ?> <div class="item-price" itemprop = "offers" itemscope itemtype = "http://schema.org/Offer"><span><?=$price_from?><span itemprop = "price"><?=FormatCurrency($arResult['DISPLAY_PROPERTIES']['MINIMUM_PRICE']['VALUE'], CSaleLang::GetLangCurrency(SITE_ID))?></span></span></div> <?endif;?> </div> </div> <?elseif($USER->IsAdmin()):?> <div class="content-block content-block-special"> <h3><?=GetMessage("CR_TITLE")?></h3> <?=GetMessage("CR_TITLE_NULL")?> </div> <?endif;?> |
В Битриксе недавно, всю голову изломал, как тут сделать что бы можно было самому назначать количество выводимых элементов?