Просмотр поста

.
aNNiMON

Модуль «Вопросы и ответы» для JohnCMS 9.2.0+

Особенности:
— Вопросы можно помечать несколькими тегами для удобной фильтрации
— Возможность голосовать за вопросы и ответы
— Присутствует поддержка выгрузки файлов
— Вопросы можно уточнять, а ответы комментировать
— Присутствует поиск
— Интеграция с уведомлениями: автор вопроса может указать, хочет ли он получать уведомления о новых ответах

Демонстрация: http://john.annimon.com/qa/
Скриншоты: https://imgur.com/a/hegy2i8

Установка:
1. Скачать архив и распаковать в корень сайта
2. Проверить наличие файла /config/routes.local.php

2.1. Если файла нет (+/-)

Создать /config/routes.local.php с содержимым:
<?php
$map->addRoute(['GET', 'POST'], '/qa/[{action}/[{param}]]', 'modules/qa/index.php');
2.2. Если файл есть (+/-)
Добавить в /config/routes.local.php строку
$map->addRoute(['GET', 'POST'], '/qa/[{action}/[{param}]]', 'modules/qa/index.php');

3. Проверить наличие файла /config/places.local.php
3.1. Если файла нет (+/-)
Создать /config/places.local.php с содержимым:
<?php
return [
     '/qa' => '<a href="#home#/qa/">Вопросы и ответы</a>',
     '/qa/ask' => '<a href="#home#/qa/">Задаёт вопрос</a>',
];
3.2. Если файл есть (+/-)
Добавить в /config/places.local.php перед последним "];" строки
'/qa' => '<a href="#home#/qa/">Вопросы и ответы</a>',
'/qa/ask' => '<a href="#home#/qa/">Задаёт вопрос</a>',


4. Проверить наличие файла /config/notifications.local.php
4.1. Если файла нет (+/-)
Создать /config/notifications.local.php с содержимым:
<?php
return [
    'qa' => [
        'name' => 'Вопросы и ответы',
        'events' => [
            'new_answer' => [
                'name' => 'Новый ответ',
                'message' => 'На ваш вопрос «#title#» ответили. <a class="alert-link" href="/qa/findanswer/#id#">Посмотреть ответ</a>.',
            ],
        ],
    ],
];
4.2. Если файл есть (+/-)
Добавить в /config/notifications.local.php перед последним "];" строки
'qa' => [
    'name' => 'Вопросы и ответы',
    'events' => [
        'new_answer' => [
            'name' => 'Новый ответ',
            'message' => 'На ваш вопрос «#title#» ответили. <a class="alert-link" href="/qa/findanswer/#id#">Посмотреть ответ</a>.',
        ],
    ],
],

5. Дать права 0777 для папки /upload/qa/
6. Перейти по адресу ваш.сайт/qa/install/
7. [Опционально] Добавить в themes/default/templates/system/app/sidebar-main-menu.phtml в удобное место следующие строки:
html (+/-)
<li>
    <a href="/qa/">
        <svg class="icon">
            <use xlink:href="<?= $this->asset('icons/qa.svg') ?>#qa"/>
        </svg>
        <span class="flex-grow-1">Вопросы и ответы</span>
        <?php $qa_counters = di('qa_counters'); ?>
        <?php if ($qa_counters['new'] > 0): ?>
            <span class="badge badge-pill badge-danger">+ <?= $tools->formatNumber($qa_counters['new']) ?></span>
        <?php endif ?>
    </a>
</li>
Прикрепленные файлы: