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

Подписка на сообщения блога

00 голосов
2
Имеется автоматически генерируемые блоги, которые генерируются в случае создания нового филиала компании: отлавливается событие создания филиала компании, автоматически создаётся блог, редакторские группы пользователей для него и пр.. Таким образом через N месяцев на сайте уже будет некоторое количество блогов.

Задача: реализовать возможность на подписку на новые сообщения для этого конкретного блога. Рассылка должна генерироваться автоматически. Настроил также автоматическое создание рубрики рассылки (CRubric::Add)  при создании филиала компании. Однако вяжутся все разные рубрики подписки (создаваемые для разных филиалов) к одному шаблону рассылки.
Компонент bitrix:subscribe.news не подходит, так как речь уже не о инфоблоках.  Как это реализовать?


НА самом деле, можно написать свой компонент. Но возникает вопрос, как в шаблон рассылки передавать ID блога, так как шаблон один получается для разных блогов. Или для разных блогов надо также генерировать разные шаблоны рассылки?
спросил 08 Авг, 13 от Eliga (360 баллов)

2 Ответы

00 голосов
Найдено костыльно-извращённое решение

При создании рубрики в название дописываем код Блога (т.е. URL блога), с которого пойдут посты (1 рубрика = 1 блог)
Среди рубрик подписки получаем что-то вроде

- Блог «Главный штаб нашей компании» [CODE:glavnyy-shtab-nashey-kompanii]
- Блог «Офис «Петроградский»» [CODE:0fis-petrogradskiy]
- Подписка на новости
- Подписка на акции

В публичке с помощью result_modifier'ов через regexp вырезаем все сущности в виде гномика вида [CODE:xxx...x]

Код
foreach($arResult["RUBRICS"] as $k => $v)
{
   $arResult["RUBRICS"][$k]["NAME"] = preg_r eplace("/\[CODE:([\da-zA-Z\-]*)\]/i","",$v["NAME"]);
}

В публичке имеем благородный вид:

- Блог «Главный штаб нашей компании»
- Блог «Офис «Петроградский»»
- Подписка на новости
- Подписка на акции


Для "блоговых" рубрик создаём свой шаблон, где также с помощью регулярки также из переменной $SUBSCRIBE_TEMPLATE_RUBRIC["NAME"] получаем url блога. (В шаблоне рассылки в переменную $SUBSCRIBE_TEMPLATE_RUBRIC["NAME"]  попадает полное название "вызвавшей" рубрики, т.е. "Блог «Главный штаб нашей компании» [CODE:glavnyy-shtab-nashey-kompanii]" и т.п.)

После этого пишем какой-нибудь простой компонент mydomain:blog.getnewpostforsubscribe куда одним из параметров подставляем код блога и внутри компонента делаем выборку сообщений только для этого блога.

Вот такое шапито. ;)
ответил 08 Авг, 13 от Eliga (360 баллов)
00 голосов
Только косяк в том, что если название очень длинное, то название будет обрезано
Соответственно, все подборы работать уже не будут.


И второй вариант решения задачи.
1. Добавить в сам блог пользовательское свойство "ID_рассылки". Делается это на вкладке "Настройки -> Настройки продукта -> Пользовательские поля", название объекта BLOG_BLOG, поле назовём, допустим UF_BLOG_SUBSCRIBE_ID.
2. В момент генерации рассылки в наш компонент передавать одним из параметров ID_рассылки ($SUBSCRIBE_TEMPLATE_RUBRIC["ID"] ).
3. Внутри нашего компонента делать выборку блогов, у которых пользовательское свойство UF_BLOG_SUBSCRIBE_ID == $SUBSCRIBE_TEMPLATE_RUBRIC["ID"]

Возможно, это более кошерное решение кому-нибудь поможет.
ответил 12 Окт, 13 от Eliga (360 баллов)

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

0 голосов
0 ответов
0 голосов
3 ответов
спросил 18 Фев, 14 от fdsc (180 баллов)
0 голосов
5 ответов
0 голосов
6 ответов
спросил 22 Июль, 13 от JIauJIa (280 баллов)
0 голосов
1 ответ
спросил 07 Июнь, 13 от VitaliyKR (360 баллов)