Привязка настройки вывода количества элементов на странице к конкретному инфоблоку

Рейтинг: 58.0513  
На голосовании
Предложил Волков Сергей 23.07.2012 08:06:31

Привязка настройки вывода количества элементов на странице к конкретному инфоблоку

Как известно, выбор количества выводимых элементов размещен между контекстной панелью и самой таблицей:



Все бы ничего, если бы не вариант все и значительное количество элементов инфоблока, например, 8461. В результате можем получить сообщение а ля:

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 63936 bytes)...
Системе банально не хватает ресурсов, чтобы отобразить все элементы инфоблока на одной странице. Да это часто и не надо.

Как возникает эта ошибка? — Выбором варианта все, причём эта настройка сквозная, то есть действует для всех инфоблоков. Иными словами, чтобы ее вызывать, вовсе необязательно заходить в инфоблок со значительным количеством элементов. Указать её можно в инфоблоке с минимальным количеством элементов и убедиться, что все работает. Затем — зайти в инфоблок со значительным количеством элементов и получить сообщение об ошибке.

Что я предлагаю:

1. Сделать привязку настройки вывода количества элементов к конкретному инфоблоку.
2. При выборе варианта все и количестве элементов инфоблока свыше заданного лимита (например, 1000), который можно вывести в отдельный настраиваемый параметр на уровне модуля, спрашивать у пользователя подтверждение и обязательно уведомлять, что подобная настройка может привести к нарушению работоспособности программы.
3. Сделать возможность отмены настройки без открытия страницы со списком элементов, так как это может только снова вызывать ошибку, но никак не дать возможность сменить настройку.

4. Аналогично поступить с настройкой вывода на странице количества разделов инфоблоков.

5. Подумать о реализации похожего функционала для других модулей: для списка файлов в папках в Менеджере файлов, например, или для списка тем в Форуме.


P. S. Идея возникла из реальной и неоднократно повторяемой рабочей ситуации.

Рейтинг: 0.2254  
Степанченко Александр 15.10.2013 16:25:47
Полностью поддерживаю, особенно что касается пункта "Все".


Очень частно контент-менеджеры жалуются на то что "админка не работает" как раз из-за попытки вывести все записи. В одном из проектов я даже регулярно(после обновления) удаляю этот пункт из кода.