On-line консультанты
Модуль «On-line консультант» позволяет установить на сайте форму для связи пользователя с консультантом в режиме реального времени.
Модуль относится к части CMS «Сервис» и может быть установлен опционально.
На сайте on-line консультант подключается с помощью тега show_block.
Для работы нужно скачать и установить приложение оператора с сайта выбранной системы. Это независимая программа, устанавливаемая на компьютер (Windows+Mac), позволяет наблюдать за посетителями, отвечать на их вопросы и многое другое.
Бэкенды
К модулю можно подключить бэкенды для работы с различными сервисами. Добавлено в версии 6.0.9.10.
Для этого нужно разработать несколько файлов стандартной структуры и разместить папку с этими файлами в папку consultant/backend. После этого в настройках модуля появиться новый сервис консультанта.
Бэкенд должен иметь уникальное название латинскими буквами (по примеру jivosite, livetex и др.). Для примера будем использовать название myservice.
В папке consultant/backend/myservice могут находиться следующий файлы:
- consultant.myservice.admin.php
- consultant.myservice.admin.js
- consultant.myservice.model.php
Это не обязательная структура расширения. Нужно использовать только необходимые файлы. Кроме того, в бэкенд можно добавлять свои файлы любой другой структуры.
Рассмотрим структуру стандартных файлов
consultant.myservice.admin.php
Файл содержит настройки бэкенда, подгружаемые при выборе сервиса.
Структура файла:
Пример:
// ошибка 404 при прямом вызове файлов
if (! defined('DIAFAN'))
{
    $path = __FILE__;
    while(! file_exists($path.'/includes/404.php'))
    {
        $parent = dirname($path);
        if($parent == $path) exit;
        $path = $parent;
    }
    include $path.'/includes/404.php';
}
// наследуем класс Diafan, чтобы был доступен объект $this->diafan  
class Consultant_myservice_admin extends Diafan
{
    public $config = array(
        "name" => 'Название бэкенда, выводимое администратору',
        // настройки расширения
        // ключи этого массива - название настроек латинскими буквами
        "params" => array(
            // можно указать просто текстовое описание настройки
            // тогда она будет редактироваться как строка
            'param1' => 'Название первой настройки',
            // можно указать массив данных, тогда есть возможность
            // задать тип данных и подсказку
            'param2' => array(
                // название второй настройки
                'name' => 'Ключ к API',
                // доступны следующие типы: 
                // text - строка, по умолчанию
                // checkbox - галочка
                // select - список
                // info - название выводиться текстом без редактирования
                // none - не отображается, но сохраняется
                'type' => 'text',
                // значение списка, если указан тип select
                'select' => array(
                    'ключ1' => 'значение1',
                    'ключ2' => 'значение2',
                    'ключ3' => 'значение3',
                ),
                // подсказка
                'help' => 'Ключ запросите у поставщика услуги.',
            ),
            // можно определить свою функцию для вывода поля и его сохранения
            'param3' => 'Название третьей настройки',
        )
    );
    /**
     * Своя функция на редактирования настройки param3
     * 
     * @param string $value значение для param3
     * @param array $values значение всех полей настроек, ключ - название поля
     * @return void
     */
    public function edit_variable_param3($value, $values)
    {
        echo '<div class="unit">
            <div class="infofield">Название поля</div>
            Значение поля
        </div>';
    }
    /**
     * Своя функция на сохранение настройки param3
     * функция возвращает значение, которое нужно сохранить (не обязательно)
     *
     * @return mixed значение
     */
    public function save_variable_param3()
    {
        // сохраняет данные
        return $value;
    }
}
consultant.myservice.admin.js
При наличии этот JS-файл автоматически подключается в интерфейс настроек.
consultant.myservice.admin.model.php
Вывод кода консультанта на сайте.
Пример:
// ошибка 404 при прямом вызове файлов
if (! defined('DIAFAN'))
{
    $path = __FILE__;
    while(! file_exists($path.'/includes/404.php'))
    {
        $parent = dirname($path);
        if($parent == $path) exit;
        $path = $parent;
    }
    include $path.'/includes/404.php';
}
// наследуем класс Diafan, чтобы был доступен объект $this->diafan 
class Captcha_myservice_admin_model extends Diafan
{
    /**
     * Получает код консультанта
     * 
     * @return string
     */
    public function get()
    {
        // функция выдает HTML-код консультанта
        // настройки бэкенда доступны через настройки модуля:
        // $this->diafan->configmodules("названиеБэкенда_названиеНастройки", 'consultant');
        // при необходимости здесь можно подключить файл шаблона
        ob_start();
        include(Custom::path('modules/consultant/backend/myservice/consultant.myservice.view.php'));
        $text = ob_get_contents();
        ob_end_clean();
        return $text;
    }
}
Шаблонные теги
Для работы с модулем «On-line консультант» служат следующие шаблонные теги:
show_block – подключает on-line консультант.
Атрибуты:
— defer – маркер отложенной загрузки шаблонного тега: event – загрузка контента только по желанию пользователя при нажатии кнопки "Загрузить", emergence – загрузка контента только при появлении в окне браузера клиента, async – асинхронная (одновременная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, sync – синхронная (последовательная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, по умолчанию отложенная загрузка не используется, обычный вывод шаблонных тегов в коде страницы;
— defer_title – текстовая строка, выводимая на месте появления загружаемого контента с помощью отложенной загрузки шаблонного тега;
— template – шаблон тега (файл modules/consultant/views/consultant.view.show_block_template.php; по умолчанию шаблон modules/consultant/views/consultant.view.show_block.php).
Пример:
<insert name="show_block" module="consultant">
выведет код для подключения on-line консультанта
В шаблоне тега можно получить значение любого атрибута через переменную $result["attributes"]["название атрибута"].
До версии 6.0.9.10 тип консультанта определялся атрибутом system.
<insert name="show_block" module="consultant" system="jivosite">
Начиная с версии 6.0.9.10 выбор типа консультанта производится в настройках.
Файлы
- modules/consultant/admin/consultant.admin.php – On-line консультант, система JivoSite; 
- modules/consultant/backend/jivosite/consultant.jivosite.admin.php – настройки капчи «JivoSite»; 
- modules/consultant/backend/jivosite/consultant.jivosite.model.php – On-line консультант «JivoSite»; 
- modules/consultant/consultant.php – контроллер; 
- modules/consultant/consultant.install.php – установка модуля; 
- modules/consultant/consultant.model.php – модель; 
- modules/consultant/views/consultant.view.show_block.php – шаблон on-line консультанта. 
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
