JohnxFFF, да, я понимаю примерно что технически происходит. Вопрос скорее к архитектуре - мне всегда не очень нравится когда приходится делать unset, хотя я и сам так делаю.
JohnxFFF, я бы не сказал что это какой-то хороший уж тон. Мне кажется в 2019 году for по ключам уже никто и не использует.
foreach хорошо оптимизирован и даже лучше чем for (есть такое мнение).
А лишние телодвижения ради красоты, мне кажутся не очень красивыми.
ИМХО
P.S. А почему вообще складывается ситуация что нужно делать unset?
Я правильно понял, что вы хотели бы, чтобы фильтровались фильтром именно коллекции, а не товары? В то же время у вас коллекции - это разделы каталога?
Если да - ничего вы не сделаете из готовых модулей. Надо заказывать доработки.
Не могу сказать что зря купили решение Aspro... попробуйте к ним обратитесь за тем чтобы вам реализовали такую фичу.
DarKnight, ну я бы дал все же движку компонентов завершить работу и вообще вот так вот рубить компонент считаю плохой идеей.
Т.е. как-то так:
if (Tools::isAjax()) {
global $USER, $APPLICATION;
$APPLICATION->RestartBuffer();
...
echo json_encode();
} else {
...
$this->IncludeComponentTemplate();
}
Впрочем это не должно влиять на то логинится пользователь или нет в результате, по крайней мере не вижу такого механизма, который бы мог оказывать влияние.
Хуже того - сейчас проверил - все должно работать и без require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_after.php') - это нужно было оказывается для установки куков корректной если используются вызовы D7
Попробуйте залогинится вашим методом, и не отправлять второй запрос на сайт, а войти в админку скажем, чтобы понять - оно вас на самом деле не логинет, в первом запросе или разлогинивает во втором?
Добавьте вызов футера. Точнее эпилога - я не помню точно в чем там проблема, но помню мучался с чем-то подобным, пока не понял, что в последних версиях, то ли что-то там с куками, то ли какая-то постобработка сессии, но такое помогло. Дело не в том что разлогинивает, дело в том что не логинет до конца.
alex-1917, с огромной вероятностью группа промотивированных кулхацкеров ничего не найдет в открытой либе, зато самописку лейтенанта Пети сломает на 11 минуте и не потому что Петя дурак - он может быть самым крутым знатоком в этом области и по отдельности круче любого кулхацкера из этой группы, а потому что Петя один, а кулхацкеров много, а гуртом и батьку легше бить.
С другой стороны я понимаю, что это очень сложно объяснить майору Васе, потому что для него закрытость алгоритма представляется мощным механизмом защиты. Ему ничего не известно например о разработчиков NN 1.1 которые думали так же как он и решили что сокрытие способа инициализации ПСЧ само по себе хорошая защита. А вот если бы они использовали открытый код или хотя бы открыли свой, им бы еще на старте объяснили что у них из 40 бит случайного ключа 47 бит не случайны и они олени.
Евгений, ну да, наверное это аргумент. Но есть и другой - если оставить строкой, рано или поздно там начнут опять писать 4Гб, 4Gb, 4096Мб и кто во что горазд.
.top.menu_ext.php не должен зменяться при обновлении - это ерунда какая-то. Если такое происходит - надо писать в саппорт Битрикса и ругаться, так как это не ядро и не модуль, а ваш пользовательский файл.
А для того чтобы показывать группам напишите функцию которая будет возвращать true если пользователь принадлежит нужным вам группам и вставьте туда.
Ярослав Александров, в данном случае у ТС это не обращение к файлу /чтототам/index.php, а обращение к индексному файлу /index.php/bla/, т.е. к /index.php/bla/index.php, поэтомо совет не подоходит.