Помощь Мини-кастомизация news.list - проблема в цикле!

Тема в разделе "Битрикс", создана пользователем soot, 2 окт 2014.

Модераторы: mrLom, puagardian
  1. soot

    soot

    Регистр.:
    22 дек 2008
    Сообщения:
    164
    Симпатии:
    28
    Необходима кастомизация стандартного шаблона компонента Битрикс - news.list.

    Выдержка из кода:
    PHP:
    <?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($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arItem["PREVIEW_TEXT"]):?>
                <div class="item">
                    <p><?echo $arItem["PREVIEW_TEXT"];?></p>
                </div>
            <?endif;?>

    <?endforeach;?>
    На выходе я получу следующий HTML:
    HTML:
    <div class="item"><p>Текст</p></div>
    <div class="item"><p>Текст</p></div>
    <div class="item"><p>Текст</p></div>
    А мне надо, чтобы первый <div> имел свой класс CSS например:
    HTML:
    <div class="item one"><p>Текст</p></div>
    <div class="item"><p>Текст</p></div>
    <div class="item"><p>Текст</p></div>
    В php знаю только на поверхностном уровне первоклашки.
    Прошу помощи!
     
  2. asdz

    asdz Писатель

    Регистр.:
    11 дек 2013
    Сообщения:
    0
    Симпатии:
    3
    PHP:
    $isFirst=true;
    <?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($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arItem["PREVIEW_TEXT"]):?>
                <div class="item <?= ($isFirst) ? 'one' ''?>">
                    <p><?echo $arItem["PREVIEW_TEXT"];?></p>
                </div>
            <?endif;?>
    $isFirst = false;
    <?endforeach;?>
     
    Salik17 и soot нравится это.
  3. myliveweb

    myliveweb Писатель

    Регистр.:
    10 июн 2014
    Сообщения:
    1
    Симпатии:
    0
    Вариант 1. (убрана лишняя переменная и инкремент в цикле)
    <?foreach($arResult["ITEMS"] as $idItem=>$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($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arItem["PREVIEW_TEXT"]:(?>
    <div class="item <?= (!$idItem) ? 'one' : ''?>">
    <p><?echo $arItem["PREVIEW_TEXT"];?></p>
    </div>
    <?endif;?>
    <?endforeach;?>

    Вариант 2. (Юзаем jQuery)

    .....
    <script>
    $('.item:first').addClass('one');
    </script>