Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Подписка на определенный раздел с товарами

00 голосов
5
Здравствуйте!
Помогите решить:
есть инфоблок книг id = 22, в нем каталог "Художественная литература" id = 245

В шаблоне рассылки ввожу эти данные:

Цитата
<?$SUBSCRIBE_TEMPLATE_RESULT = $APPLICATION->IncludeComponent(
"bitrix:subscribe.news",
"",
Array(
"SITE_ID" => "s1",
"IBLOCK_TYPE" => "katalog_tovariv",
"ID" => "22",
"SECTION_ID" => "245",
"SORT_BY" => "ACTIVE_FROM",
"SORT_ORDER" => "DESC",
),
null,
array(
"HIDE_ICONS" => "Y",
)
);?>


При проверке герерирует выпуск с товарами ВСЕГО инфоблока. Что не так я делаю?
спросил 09 Дек, 13 от Lollipopk (660 баллов)

5 Ответы

00 голосов
Невнимательно читаете документацию. Компонент bitrix:subscribe.news не знает такого параметра - SECTION_ID. Он делает выборку по всему инфоблоку. Для Вашей задачи необходимо кастомизировать компонент.
ответил 10 Фев, 14 от Pomnep (13,960 баллов)
00 голосов
Спасибо!
Вот что сделал (может когда-то кому-то будет полезно)

Скопировал стандартный компонент в папку /bitrix/components/subscribe.news

Соответственно в шаблоне рассылки поменял путь к компоненту

с

Код
<?$SUBSCRIBE_TEMPLATE_RESULT = $APPLICATION->IncludeComponent( 
"bitrix:subscribe.news"...

на
Код
<?$SUBSCRIBE_TEMPLATE_RESULT = $APPLICATION->IncludeComponent( 
"subscribe.news"...


Далее в файле .parameters.php (скопированого компонента) в элементе PARAMETERS (который находится в массиве $arComponentParameters) дописал такой элемент

Код
"SECTION_ID" => array(
         "NAME" => GetMessage("CP_BSN_SORT_SECTION_ID"),
         "TYPE" => "LIST",
      ),

Потом в файле component.php сузил фильтр $arFilter, написав

Цитата
$arFilter['SECTION_ID'] = $arParams["SECTION_ID"];


Все, теперь комонент в шаблоне подписки можно вызывать так

Код
<?$SUBSCRIBE_TEMPLATE_RESULT = $APPLICATION->IncludeComponent( 
"subscribe.news", 
"", 
Array( 
"SITE_ID" => "идентификатор сайта", 
"IBLOCK_TYPE" => "тип инфоблока", 
"ID" => "id инфоблока", 
"SECTION_ID" => "id раздела", 
"SORT_BY" => "ACTIVE_FROM", 
"SORT_ORDER" => "DESC", 
), 
null, 
array( 
"HIDE_ICONS" => "Y", 
) 
);?>
ответил 30 Май, 14 от Lollipopk (660 баллов)
00 голосов
А .description.php исправили?
ответил 26 Сен, 14 от Pomnep (13,960 баллов)
00 голосов
Цитата
Евгений Жуков пишет:
А .description.php исправили?

а что именно в нем нужно исправить? елси это для работы в визуальном редакторе - то такой необходимости нет...


сам файл

Код
$arComponentDescription = array(
   "NAME" => GetMessage("CD_BSN_NAME"),
   "DESCRIPTION" => GetMessage("CD_BSN_DESCRIPTION"),
   "ICON" => "/images/subscr_news_list.gif",
   "CACHE_PATH" => "Y",
   "PATH" => array(
      "ID" => "service",
      "CHILD" => array(
         "ID" => "subscribe",
         "NAME" => GetMessage("CD_BSN_SERVICE")
      )
   ),
);
ответил 30 Янв, 15 от Lollipopk (660 баллов)
00 голосов
А можно ли подобным образом организовать подписку на разные разделы (секции) инфоблока?
1. В идеале - представив пользователю возможность проставить галочки в дереве секций инфоблока (каталога товаров)
или индивидуально в каждом разделе
2. как будет отражатся подписка в Сервисы\Рассылки\Список рассылок, если рассылка зависит от ID раздела (секции)
видимо, потребуется отдельная запись (Список рассылки) для каждого раздела\подраздела
если разделов для подписки много (>300) надо ли создавать отдельный ИнфоБлок для хранения подписки пользователей или типового функционала вполне достаточно?
ответил 13 Май, 15 от Ymca (880 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 18 Фев, 14 от fdsc (180 баллов)
0 голосов
2 ответов
0 голосов
2 ответов
0 голосов
10 ответов