# =========================================================================== #
# NG CMS // Плагины // Доска объявлений                                       #
# =========================================================================== #
Основной функционал:
1. Возможность добавлять/удалять/редактировать объявления зарегистрированному пользователю.
2. Возможность разрешить добавление объявлений от имени гостя.
3. Возможность подключения капчи - используется reCaptcha.
4. Фильтр ссылок про добавлении объявления.
5. Блоки на главной: последние, рандом, часто просматриваемые.
6. Снятие объявлений по истечению времени по cron'у и возможность продления срока действия объявления.
7. ЧПУ для URL'ов.
8. Кеширование. Блоки на главной кешируются по времени, счетчик общего числа объявлений и дерево категорий - по событию добавления/удалени/снятия категории/объявления.
9. В tpl шаблонах используется TWIG.
10. Возможность созданий собственных категорий любой вложенности.
11. Вывод дерева категорий с отступами.
12. Возможность вести статистику просмотров - счетчики просмотров [3 режима работы: отключено, включено, отложенный режим]
13.а Шаблон для демонстрации работы внутри архива.
13.б Карусель для изображений в шаблоне.
13.в Возможность использовать ббкоды при добавлении объявления.
14. Собственный поиск по объявлениям.
15. Редактирование/удаление объявлений в админке.
16. Добавление/редактирование/удаление категорий в админке.
После установки плагина и активации ЧПУ станут доступны страницы:
/zboard/ - главная плагина. (Шаблон /templates/mangguo/plugins/zboard/zboard.tpl)
/zboard/cat/X/ - страницы категорий. (Шаблон /templates/mangguo/plugins/zboard/zboard.tpl)
/zboard/show/X/ - страницы объявлений. (Шаблон /templates/mangguo/plugins/zboard/show_zboard.tpl)
/zboard/send/ - добавление объявления. (Шаблон /templates/mangguo/plugins/zboard/send_zboard.tpl)
/zboard/search/ - поиск по объявлениям. (Шаблон /templates/mangguo/plugins/zboard/search_zboard.tpl)
/zboard/list/ - страница-список объявлений пользователя (доступна только зарегистрированным).  (Шаблон /templates/mangguo/plugins/zboard/list_zboard.tpl)
/zboard/edit/X/ - страница-редактирования объявления (доступна только зарегистрированным).  (Шаблон /templates/mangguo/plugins/zboard/edit_zboard.tpl)
/zboard/vip/X/ - страница оплаты VIP‑размещения для объявления X (доступна автору объявления). (Шаблон /templates/mangguo/plugins/zboard/vip_zboard.tpl)
/zboard/pay/ - обработчик платежей и колбеков платёжных систем (используется для редиректов/уведомлений, не предназначен для прямого просмотра).
/templates/mangguo/plugins/zboard/variables.ini - отвечает за переменные для постраничной навигации.
/templates/mangguo/plugins/zboard/no_access.tpl - отвечает за вывод информации при открытии страницы пользователем, у которого нету прав доступа к данной странице (например человек пробует открыть страницу редактирования объявления, которое ему не пренадлежит).
Внутри main.tpl можно использовать следующие блоки:
1. {{ callPlugin('zboard.show_entries_cnt') }} - выводит общий счетчик объявлений. Не создает особой нагрузки, т.к. кешируется и запросы в БД делаются только при добавлении+активации в админке объявления и при удалении/редактировании объявления.
2. {{ callPlugin('zboard.show_catz_tree') }} - выводит дерево категорий. Также кешируется как и первый блок.
3. {{ callPlugin('zboard.show', {'number' : 10, 'mode' : 'last', 'cat': '1,2,3', 'template': 'block_zboard_last', 'cacheExpire': 360}) }} - блоки вывода N объявлений.
Поддерживаемые параметры:
- 'number' - число выводимых объявлений.
- 'mode' - режим вывода. [last - по дате активации/редактирования | view - по количеству просмотров | rnd - случайный вывод]
- 'cat' - ID категории/категорий из которых будут выводится объявления. При отсутствии параметра выводится из всех категорий, при необходимости вывода из нескольких категорий нужно записать через запятую ID категорий. Например, запись 'cat': 1,3 - означает вывод только из категорий с ID=1 или ID=3.
- 'template' - выбор шаблона, который будет отвечать за вывод блока (должен лежать внутри /templates/mangguo/plugins/zboard/block/, либо внутри /engine/plugins/zboard/tpl/block/)
- 'cacheExpire' - число секунд через которые будет обновлятся кеш.
4. Также в main.tpl поддерживаются страндартные TWIG блоки, которые позволяют выводить/скрывать определенные блоки в зависимости от страницы на которой находится посетитель.
- {% if pluginIsActive('zboard') %}XXX{% endif %} - выводится если плагин zboard активирован.
- {% if isHandler('zboard') %}XXX{% endif %} - выводится только на всех страницах плагина zboard, но не выводится на других страницах.
- {% if isHandler('zboard:list') %}XXX{% endif %} - выводится только на странице /list/ плагина zboard.
- {% if isHandler('zboard:edit') %}XXX{% endif %} - выводится только на всех страницах /edit/X/ плагина zboard.
- {% if isHandler('zboard:send') %}XXX{% endif %} - выводится только на на странице /send/X/ плагина zboard.
- {% if isHandler('zboard:show') %}XXX{% endif %} - выводится только на всех страницах /show/X/ плагина zboard.
- {% if isHandler('zboard:search') %}XXX{% endif %} - выводится только на на странице /search/ плагина zboard.
###############################################
# Платные размещения (VIP) и платежные системы #
###############################################
Функциональность:
- Оплата VIP‑размещения объявления через Pay2Pay и/или Robokassa.
- Тарифы (стоимость и срок в днях) задаются в админке: ZBoard → Прайс.
- При успешной оплате выставляются поля `vip_added`, `vip_expired`, объявление активируется.
Маршруты:
- /zboard/vip/X/ — выбор тарифа и провайдера, инициирование оплаты.
- /zboard/pay/ — служебный обработчик и callback‑URL для платёжных систем.
Выбор провайдера:
- Если настроен один провайдер — он выбирается автоматически, селект скрыт.
- Если настроены оба — на странице VIP отображается селект «Платёжная система».
Настройка Robokassa:
1) Перейдите: Админка → Плагины → ZBoard → Настройки → «Настройки Robokassa» и заполните:
	- Логин магазина (MerchantLogin)
	- Пароль #1 (Pass1)
	- Пароль #2 (Pass2)
	- Тестовый режим (по необходимости)
2) В личном кабинете Robokassa укажите URL’ы:
	- Fail URL:    http://<ВАШ_ДОМЕН>/plugin/zboard/pay/?result=1
	- Result URL:  http://<ВАШ_ДОМЕН>/plugin/zboard/pay/?result=2
	- Success URL: http://<ВАШ_ДОМЕН>/plugin/zboard/pay/?result=3
3) Подпись ResultURL проверяется по формуле MD5(OutSum:InvId:Pass2) в нижнем регистре.
Логирование ResultURL Robokassa (для отладки):
- Входящие уведомления пишутся в файл: /engine/plugins/zboard/upload/robokassa_result.log
- Содержит IP, параметры запроса, полученную и вычисленную подписи, результат обработки.
Настройка Pay2Pay (если используется):
1) Перейдите: Админка → Плагины → ZBoard → Настройки → «Настройки Pay2Pay» и заполните:
	- Идентификатор магазина (merchant_id)
	- Секретный ключ (secret_key)
	- Скрытый ключ (hidden_key)
	- Тестовый режим (по необходимости)
2) Обработчик колбеков использует XML + подпись: base64(md5(HIDDEN_KEY + XML + HIDDEN_KEY)).
Примечания по тарифам:
- Таблица цен: стоимость указывается в рублях, срок — в днях. Рекомендуется уникальная стоимость для каждого тарифа (используется сопоставление суммы → срок).
Примеры URL’ов для кабинетов (замените <ВАШ_ДОМЕН> на свой):
Fail URL:    http://<ВАШ_ДОМЕН>/plugin/zboard/pay/?result=1
Result URL:  http://<ВАШ_ДОМЕН>/plugin/zboard/pay/?result=2
Success URL: http://<ВАШ_ДОМЕН>/plugin/zboard/pay/?result=3
