|
|
|
|
|
для: confirm
(25.11.2014 в 13:49)
| | Хм, огромное спасибо за помощь и объяснения, кажется то что нужно и с минимальным кодом! А то перелопачивать всю "кучу грязи" не хочется, сейчас буду проверять)
Да, всё работает идеально!
Собственно вот результат выполнения)
Ещё раз спасибо :) | |
|
|
|
|
|
|
|
для: Electron
(25.11.2014 в 13:45)
| | Да. | |
|
|
|
|
|
|
|
для: confirm
(25.11.2014 в 13:37)
| | Т.е. в итоге получается так?
<ul>
<li>
<?$i = 0;?>
<?foreach($arResult["ITEMS"] as $arItem):?>
<?if($i && !($i % 3)):?>
</li>
<li>
<?endif?>
<a class="news-item" href="<?=$arItem["DETAIL_PAGE_URL"]?>">
{МНОГО_КОДА}
</a>
<?$i++;?>
<?endforeach;?>
</li>
</ul>
|
| |
|
|
|
|
|
|
|
для: Electron
(25.11.2014 в 13:24)
| | Это никак не структура движка, это просто проход в цикле, и именно конструкция, которая в нем применена в данном случае "куча грязи", в которой легко запутаться.
Вне цикла переменная нужна:
<?
$i = 0;
foreach($array as $value) {
if($i && !($i % 3)) $ul .= '</li><li>'; //это означает, что если не первая итерация цикла и пройдено три его итерации, то закрыть/открыть тег LI
//если использовать конструкцию if-endif, то нужно не $ul .= '</li><li>';, а вывод </li><li> в этой конструкции
<?if($i && !($i % 3)):?>
</li><li>
<?endif?>
//а далее зоопарк МНОГО_КОДА
//то есть условие проверяющее деление по модулю предваряет каждую итерацию цикла
$i++; //икремент счетчика итерации, после вывода закрывающего тега А
}
|
| |
|
|
|
|
|
|
|
для: confirm
(25.11.2014 в 13:22)
| | О том и речь, что зоопарк, плюс не хочется менять структуру движка... Я реально запутаюсь и накосячу пока всю "середину" буду переделывать... Если не сложно, поясните, пожалуйста, про определение вне цикла переменной итераций, и её деления на 3, увеличивая в цикле на 1... :)
Даже так не получается обратиться к элементам массива (выводится Array):
<ul>
<li>
<?for($i=0, $k=count($arResult["ITEMS"]); $i<$k; $i++):?>
<?if($i && !($i % 3)):?>
</li>
<li>
<?endif;?>
<a href="3"><?=$arResult["ITEMS"][$i]?></a>
<?endfor;?>
</li>
</ul>
|
| |
|
|
|
|
|
|
|
для: Electron
(25.11.2014 в 13:09)
| | Проблема не в foreach или for как таковом, а в том, что вы не понимаете сути работы этого кода.
Выбрасывайте к чертовой матери foreach, не удобен он для данного случая, а тем более в конструкции <?foreach():?> <?endforeach;?>. А также вот эту хрень <?if():?> <?endif;?> по той же самой причине.
Пишите так как я написал - "клейте строку", потом ее выведите. Обращаться к элементам массива в цикле for, это $arResult[$i]['key_name'].
{МНОГО_КОДА} - эту часть нужно прописывать вместо $ul .= '<div>' . $a[$i] . '</div>'; в моем примере. Правда там такой зоопарк... | |
|
|
|
|
|
|
|
для: confirm
(25.11.2014 в 13:05)
| | foreach нужен для всего внутреннего хлама и сохранения однотипности структуры движка) Мм, а примерчик можно?) Вот модернизированный (для упрощения) твой код:
<?$a = array(1,2,3,4,5,6,7);?>
<ul>
<li>
<?for($i=0, $k=count($a); $i<$k; $i++):?>
<?if($i && !($i % 3)):?>
</li>
<li>
<?endif;?>
<a href="3"><?=$a[$i]?></a>
<?endfor;?>
</li>
</ul>
|
Нужно как-то впихнуть сюда, не задевая {МНОГО_КОДА}:
<ul>
<li>
<?foreach($arResult["ITEMS"] as $arItem):?>
<a class="news-item" href="<?=$arItem["DETAIL_PAGE_URL"]?>">
{МНОГО_КОДА}
</a>
<?endforeach;?>
</li>
</ul>
|
Просто не совсем понял про определение вне цикла переменной итераций, и её деления на 3, увеличивая в цикле на 1... | |
|
|
|
|
|
|
|
для: Electron
(25.11.2014 в 12:53)
| | Зачем вам foreach причем в таком использовании <?foreach($arResult["ITEMS"] as $arItem):?> ?
<?if(count($arItem) % 3):?> - это вообще глупость, итерацию цикла надо делить по модулю, а не количество элементов массива. Именно определяет, что прошло три итерации цикла и нужно закрыть элемент LI, открыв новый. А вы что пишите?
Хотите foreach, значит определите вне цикла переменную итераций, делите ее по модулю 3, увеличивая ее в цикле на 1 (инкремент). | |
|
|
|
|
|
|
|
для: confirm
(25.11.2014 в 12:18)
| | Блин я слишком туп для этого))) Как мне оставить цикл foreach, сделав разбиение циклом for внутри данного?) По логике должно быть вообще что-то вроде этого:
<ul>
<li>
<?foreach($arResult["ITEMS"] as $arItem):?>
<?if(count($arItem) % 3):?>
<a class="news-item" href="<?=$arItem["DETAIL_PAGE_URL"]?>">
{МНОГО_КОДА}
</a>
</li>
<li>
<?else:?>
<a class="news-item" href="<?=$arItem["DETAIL_PAGE_URL"]?>">
{МНОГО_КОДА}
</a>
<?endif;?>
<?endforeach;?>
</li>
</ul>
|
Весь остальной мусор я думаю вообще не нужно трогать) Может ты сможешь добить? Заранее спасибо! :) | |
|
|
|
|
|
|
|
для: confirm
(25.11.2014 в 12:18)
| | Собственно наверное это и нужно, большое спасибо за помощь, попытаюсь сейчас разобраться! | |
|
|
|
|