Делаем плагин для Bludit. Отправка ссылки на новую страницу в телеграмм.
Делаем простой плагин для Bludit, что бы отправлять ссылки на статьи в телеграмм канал.

Я думаю многие заметили, а кто не заметил, то узнают сейчас, что я использую для сайта CMS Bludit. Предлагаю загуглить. Это простая система управления контентом, не использует базу данных, всё храниться в тектовых файлах, что и плюс и минус одновременно. Работает довольно шустро и имеет возможность расширения функционала - это то, о чем сейчас и поговорим.
Будем делать плагин для автоматической отправки ссылки на страницу в телеграмм канал, личный чат или групповой чат.
И так, что нам понадобиться:
- DOCUMENTATION: PLUGIN BASICS
- DOCUMENTATION: HOOKS LIST
- DOCUMENTATION: TRANSLATE A PLUGIN
- немного терпения и усидчивости
Что меня радует вот уже долгое время, так это документация, наличие форума и хорошо структурированный код.
Для начала предлагаю ознакомиться с документацией по первой ссылке, где описывается то, как строиться плагин и какие обязательные файлы он должен иметь.
/bl-plugins/{PLUGIN_NAME}/
languages/en.php
metadata.json
plugin.php
В принципе всё просто. Пожалуй я приведу код своего плагина, а уже потом будем разбираться что и как происходит - файл plugin.php
:
<?php
class pluginTelegrammSend extends Plugin {
public function init() {
$this->dbFields = array(
'botToken'=>'',
'chat2post'=>''
);
}
public function form()
{
global $Language;
$html = '<div>';
$html .= '<label>'.$Language->get('lbl token').'</label>';
$html .= '<input name="botToken" id="botToken" type="text" value="'.$this->getValue('botToken').'">';
$html .= '</div>';
$html .= '<div>';
$html .= '<label>'.$Language->get('lbl chatid').'</label>';
$html .= '<input name="chat2post" id="chat2post" type="text" value="'.$this->getValue('chat2post').'">';
$html .= '</div>';
$html .= '<div>';
$html .= '<a target="_blank" href="https://api.telegram.org/bot'. $this->getValue('botToken').'/getUpdates">'.$Language->get('lbl link').'</a>';
$html .= '</div>';
return $html;
}
public function afterPageCreate()
{
global $dbPages;
$pageNumber = 1;
$amountOfItems = 1;
$onlyPublished = true;
$pages = $dbPages->getList($pageNumber, $amountOfItems, $onlyPublished);
foreach($pages as $pageKey) {
$page = buildPage($pageKey);
}
$txt = $page->permalink();
$sendToTelegram = fopen("https://api.telegram.org/bot{$this->getValue('botToken')}/sendMessage?chat_id={$this->getValue('chat2post')}&parse_mode=html&text={$txt}","r");
}
}
Здесь всё просто. Функции init()
и form()
являются обязательными, одна инициализирует плагин, в ней описывается массив параметров, которые будут храниться вбазе данных, другая - выводит форму настроек, здесь тоже всё просто.
Основная магия кроется в функции afterPageCreate()
- это хук. Эта функция вызывается сразу после создания новой страницы. Об остальных можно почитать по второй ссылке из нашего списка необходимых вещей. Для начала здесь получаем ссылку на последнюю запись, к сожалению я не очень разобрался с API Bludit, наверно можно получить ссылку на созданную страницу менее изощренным способом. Затем имея ID чата и токер бота отправляем ссылку. Если нужно узнать результат отправки, то нужно обработать переменную $sendToTelegram
, я этим не стал заморачиваться.
Теперь поговорим о языках. Чтобы наш плагин мог общаться с пользователем на выбранном им языке необходимо описать и добавить файлы в папку languages/
. Мои выглядят следующим образом:
{
"plugin-data":
{
"name": "Telegramm",
"description": "Auto sent link to telegramm chat"
},
"lbltoken": "Insert bot token",
"lblchatid": "Insert chat ID",
"lbllink": "Link bot data"
}
{
"plugin-data":
{
"name": "Автопостинг в телеграмм",
"description": "Автоматически отправляет ссылку в канал или чат телеграмм"
},
"lbl-token": "Введите token бота telegramm",
"lbl-chatid": "Введите ID чата куда отправлять ссылку",
"lbl-link": "Ссылка для получения ID чата"
}
Не сложно догадаться какой из них для какого языка предназначен. Второй назван ru_RU.json
.
Скачать плагин можно по ссылке - telegramm-send-chat.zip
Или зайти на Gitlab