Михаил Дегтярёв,окей.
Дано:
Страница примерно следующего содержания:
- Подключение шапки
- Подключение карточки новости
- Подключение нижнего списка новостей
- Подключение левого списка новостей
- Подключение подвала
Нужно: сделать так, чтобы в блоках не было одинаковых новостей
Один из возможных ходов решения БЕЗ кастомизации компонентов.
Работае это следующим образом:
1) На страницу добавляем глобальную переменную - $arDeactivatedIds, которая будет содержать список ID которые НЕ должны отображаться (блок 1)
2) В component_epilog.php шаблона news.detail и news.list проверяем наличие этой переменной и дописываем туда ID тех элементов, что уже выведены
3) В блоках кода 2 и 3 создаем и/или обнуляем глобульную переменную $arrFilter в которую добавляем ключ: !ID и значение - $arDeactivatedIds (что собственно не будет выводить новости с этим ID)
4) В news.list'ах пишем использовать фильтр arrFilter
из явных минусов:
1) Блоки кода на странице, а значит есть шанс что контент-менеджер их перетрет и все полетит в тар-тарары
2) Возможно будет сильно расти кеш, поэтому с временем кеширования нужно поиграться
3) Так как переменная глобальная, возможно будут проблемы с другими страницами, если вдруг она где-то еще используется
4) Чисто эстетически - возможны проблемы при коллективной разработке - могут непонять зачем она нужна и при обновлении или работе умышленно/случаянно не перетащить нужные куски кода. Но хорошая документация перекроет этот негативный пункт.