Дорогие друзья, помогите разобраться новичку в Битрикс с этим страшным кодом. Суть в том что это компонент спецпредложения, который рандомно выводит по ОДНОМУ товару на страницу.
Я его скопировал и на его основе делаю свой компонент, но никак не могу понять, как сделать так, что бы задавать САМОМУ КОЛИЧЕСТВО ВЫВОДИМЫХ ЭЛЕМЕНТОВ? И как вывести в цикле на сайте уже эти элементы?
По коду насколько понял BREAK; Тормозит все, его убрал, В шаблоне запускаю
И все равно какая то галиматень получается, никакого списка, я так понимаю в компоненте нужно предварительно как то правиль упаковать сначала в массив все это. А как это сделать я не знаю, подскажите пожалуйста???
вот код файла component.php
Я его скопировал и на его основе делаю свой компонент, но никак не могу понять, как сделать так, что бы задавать САМОМУ КОЛИЧЕСТВО ВЫВОДИМЫХ ЭЛЕМЕНТОВ? И как вывести в цикле на сайте уже эти элементы?
По коду насколько понял BREAK; Тормозит все, его убрал, В шаблоне запускаю
| Код |
|---|
<?foreach($arResult as $result):?> <?=$result['NAME']?><br /> <?endforeach;?> |
И все равно какая то галиматень получается, никакого списка, я так понимаю в компоненте нужно предварительно как то правиль упаковать сначала в массив все это. А как это сделать я не знаю, подскажите пожалуйста???
вот код файла component.php
| Код |
|---|
<?
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 = 0;
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;
}
else
{
$arResult["ITEMS"][] = $arItem;
if($arParams["RAND_COUNT"] < $i) break;
}
}
if($i > 0)
{
$this->IncludeComponentTemplate();
}
else
{
$this->EndResultCache();
}
}
?>
|
