Рейтинг: 0.8902  
Новая
Предложил Зеленый лист РА 22.05.2019 11:57:20

Вывод разделов в новостных компонентах

Предлагаю реализовать возможность вывода (отображения) разделов (как это сделано в каталоге) в этих компонентах

Новости (комплексный компонент)newsПозволяет создать новостной раздел на сайте.
Календарьnews.calendarСлужит для формирования и вывода календаря новостей или событий.
Новость детальноnews.detailОсуществляет вывод детального описания новости.
Все новостиnews.indexВыводит новости из различных инфоблоков.
Лентаnews.lineОсуществляет вывод списка элементов инфоблоков с датой и заголовком со ссылкой на страницу с подробной информацией.
Список новостейnews.listВыводит список новостей из одного информационного блока.
Рейтинг: 0  
Внедрено
Предложил Баринов Кристиан 09.11.2016 15:22:47

SetResultCacheKeys

Создать параметр для компонентов (тип array), использующих кеширование, который будет передавать дополнительные ключи массива $arResult для их сохранения в кеше (ф-ция SetResultCacheKeys) с последующим извлечением в файле component_epilog.php. Сейчас в компонентах сохраняется предустановленный и неизменяемый набор ключей в кеш. Предлагаю целиком заменить его на массив, передаваемый из параметра. А предустановленные ключи передать через параметр

Цель такого решения: не придется кастомить компонент всего лишь для того, чтобы сохранить и получить еще один ключ массива $arResult в component_epilog.php
Рейтинг: 1.1804  
Ответил Жуков Евгений 09.11.2016 20:35:47
Вы можете добавить свой ключ для сохранения в result_modifier.php, либо сохранить нужные данные в переменную $templateData в template.php
Рейтинг: 5.3677  
Новая
Предложил Ганин Дмитрий 17.02.2016 11:53:40

Номер страницы для компонента news.list

В компоненте news.list есть массив с параметрами пагинации $arNavParams

$arNavParams = array(
 "nPageSize" => $arParams["NEWS_COUNT"],
 "bDescPageNumbering" => $arParams["PAGER_DESC_NUMBERING"],
 "bShowAll" => $arParams["PAGER_SHOW_ALL"],
); 
Предлагаю добавить в него еще один параметр
$arParams["NUM_PAGE"] = !empty($arParams["NUM_PAGE"])? intval($arParams["NUM_PAGE"]) : 1;

$arNavParams = array(
 "nPageSize" => $arParams["NEWS_COUNT"],
 "bDescPageNumbering" => $arParams["PAGER_DESC_NUMBERING"],
 "bShowAll" => $arParams["PAGER_SHOW_ALL"],
 "iNumPage" => $arParams["NUM_PAGE"], // передаем номер страницы
);  
Это позволит расширить возможности пагинации для стандартного компонента новостной ленты
Рейтинг: 12.4783  
На голосовании
Предложил Ерофеев Анатолий 12.09.2013 08:55:46

Запросы в цикле в стандартных компонентах или хватит это терпеть

Идея

Модифицировать GetFileArray чтобы он мог получать массивы сразу для нескольких файлов и применить в компоненте news.list, чтобы он не порождал по 2 дополнительных запроса для каждого найденного элемента. Сервер скажет спасибо.

Кому и зачем нужно

В одном из самых популярных компонентов ever является news.list. С давних времен разработчики используют его для вывода всего чего угодно. И в этом важном компоненте нарушается одна из главных заповедей производительности веб-приложений - там запросы в цикле :evil:.

Приведу пример.
/bitrix/components/bitrix/news.list/component.php:240
if(array_key_exists("PREVIEW_PICTURE", $arItem))
                $arItem["PREVIEW_PICTURE"] = CFile::GetFileArray($arItem["PREVIEW_PICTURE"] ); 
Независимо от настроек всегда получается картинка. И это в цикле:o! Строчкой позже делается аналогичный запрос для детальной картинки. Если у вас в news.list 100 элементов, ждите примерно 100 дополнительных запросов (а то и все 200:!:, если у вас есть и детальная картинка и анонсная).

Кажется, что решение проблемы состоит из 1 действия - выполнить запрос всех картинок разом. Но не тут то было. Метод CFile::GetFileArray не принимает массивы ID, только 1 файл за раз. И это, кстати, большая проблема многих методов Битрикс.
Рейтинг: 1.9924  
На голосовании
Предложил Шипулин Артем 01.04.2013 12:29:10

Формат массива, описывающего файловые свойства в компонентах news.list, news.detail, catalog.section, catalog.detail

Сейчас для свойства типа "Файл" в случае если у элемента добавлен один файл, структура результирующего массива - $arResult["DISPLAY_PROPERTIES"]["MORE_PHOTO"] в шаблоне следующая:

[VALUE] => Array
        (
            [0] => 958
        )

и соответствующий ему массив
[FILE_VALUE] => Array
        (
            [ID] => 958
      ...
            [SRC] => /upload/iblock/914/2.jpg
        )


в тоже время, если у элемента больше одного значения для свойства типа "Файл" - имеем следующую структуру:

[VALUE] => Array
        (
            [0] => 948
            [1] => 949
        )


и соответствующий ему массив

[FILE_VALUE] => Array
        (
            [0] => Array
                (
                    [ID] => 948
                   ...
                    [SRC] => /upload/iblock/3af/1.jpg
                )

            [1] => Array
                (
                    [ID] => 949
                   ...
                    [SRC] => /upload/iblock/e22/2.jpg
                )


Т.е. во втором массиве появляется еще один уровень вложенности, на мой взгляд, в первом варианте должно быть также.
Рейтинг: 0  
Ответил Жуков Евгений 31.10.2013 19:41:07
Невозможно из соображений совместимости