Часто возникает необходимость применять разные стили или 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;?> ...
Я не претендую на красивость и оптимизацию кода, данные примеры требуются, чтобы показать логику (одну из) решения, кто-то делает иначе и более проще, вариантов много.