Часто возникает необходимость применять разные стили или html код к элементам компонентов новостей и каталога в 1С-Битрикс.
К примеру, нам надо, чтобы нечётные новости выводились в виде "стиль 1", а чётные вида "стиль 2". Для этого можно использовать небольшую проверку в шаблоне компонента.
$i=1;
foreach($arResult["ITEMS"] as $arItem)
{
if($i%2==0)
{
// Тут четные
}
else
{
//Тут нечетные
}
$i++;
}
Список новостей (bitrix:news.list) чётные и нечётные
На примере шаблона компонента Битрикс "Список новостей (bitrix:news.list)" это будет выглядеть примерно так:
<?$i=1;
foreach($arResult["ITEMS"] as $arItem):?>
<?
$this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT"));
$this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));
?>
<?{if($i%2==0){?>
<p>Чётная новость</p>
<p><?echo $arItem["NAME"]?></p>
<p><?echo $arItem["PREVIEW_TEXT"];?></p>
<?}else{?>
<p>Нечётная новость</p>
<p><?echo $arItem["NAME"]?></p>
<p><?echo $arItem["PREVIEW_TEXT"];?></p>
<?}$i++;}?>
<?endforeach;?>
...
Top элементов каталога (bitrix:catalog.top) чётные и нечётные
На примере шаблона компонента Битрикс "Top элементов каталога (bitrix:catalog.top)" это будет выглядеть примерно так:
...
<?foreach($arResult["ROWS"] as $arItems):?>
<!-- Количество элементов в строке (Начало строки)-->
<?$i=1;
foreach($arItems as $arElement):?>
<?if(is_array($arElement)):?>
<?
$this->AddEditAction($arElement['ID'], $arElement['EDIT_LINK'], CIBlock::GetArrayByID($arElement["IBLOCK_ID"], "ELEMENT_EDIT"));
$this->AddDeleteAction($arElement['ID'], $arElement['DELETE_LINK'], CIBlock::GetArrayByID($arElement["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BCT_ELEMENT_DELETE_CONFIRM')));
?>
<?{if($i%2==0){?>
<p>Чётный элемент</p>
<?=$arElement["NAME"]?>
<?echo $arElement["PREVIEW_TEXT"];?>
<?}else{?>
<p>Нечётный элемент</p>
<?=$arElement["NAME"]?>
<?echo $arElement["PREVIEW_TEXT"];?>
<?}$i++;}?>
<?else:?>
<?endif;?>
<?endforeach;?>
<!-- Количество элементов в строке (Конец строки)-->
<?endforeach;?>
...
Я не претендую на красивость и оптимизацию кода, данные примеры требуются, чтобы показать логику (одну из) решения, кто-то делает иначе и более проще, вариантов много.
