Вход • Регистрация

Консультант на сайте (JivoSite)

  • 27 февраля 2017 г.
  • Добрый день, друзья!
    В силу того что я не программист, логику некоторых вещей я понять не могу, как и ответы службы поддержки, некоторые.
    Суть: надо поставить онлайн чат на сайт.
    В живосайте зарегался, идентификатор чата вроде как внес специалист из поддержки.

    Что хочу сделать : 1. Добавьте в шаблон DIAFAN.CMS (/themes/site.php) шаблонный тег
    <insert name="show_block" module="consultant" system="jivosite">.

    Лично по моей логике, чтобы найти этот файл, нужно в админке зайти в файловый менеджер и открыть в соответствующей папке файл и добавить тег, но файла site.php там нет.

    Прошу помочь:
    Где найти мне этот файл
    После какой строчки или где вставить этот тег, спасибо!
  • 27 февраля 2017 г.
  • Файл site.ru/themes/site.php
    В нем 155-156 строки:
    Код
    <!-- шаблонный тег подключает on-line консультант -->
    <insert name="show_block" module="consultant" system="jivosite">


    Т.е. в дефолте все это присутствует.
  • 08 апреля 2017 г.
  • ВСЕМ добрый день! Не стал создавать новую тему, кто может помочь? Есть необходимость установить консультант JIVOSITE только для консультаций на мобильных устройствах. Т.к. на ПК версии мне нравится другой консультант. Переписывался со службой поддержки, мне дали ответ, что надо:
    "сделать собственный скрипт на сайт, который будет определять тип устройства и в зависимости от этого загружать или не загружать код чата на сайт". Кто сталкивался? Сказали это не трудно, но все субъективно
    • 08 апреля 2017 г.
    • Вот тут почитайте, к примеру:
      http://barabulki.ru/html/109-kak-skryt-ili-otkryt-kontent-dlya-mobilnykh-ustrojstv.html
      А так в инете полно информации.
      • 08 апреля 2017 г.
      • Почитал, зашел в footer.php и перед кодом добавил <div class="show-on-mobile"> ...... после закрыл </div>. Вышло так:
        <div class="show-on-mobile">
        <!-- BEGIN JIVOSITE CODE {literal} -->
        <script type='text/javascript'>
        (function(){ var widget_id = '5Ayyy6CuKbJ';var d=document;var w=window;function l(){
        var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = '//code.jivosite.com/script/widget/'+widget_id; var ss = document.getElementsByTagName('script')[0]; ss.parentNode.insertBefore(s, ss);}if(d.readyState=='complete'){l();}else{if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();</script>
        <!-- {/literal} END JIVOSITE CODE -->
        </div>
        Затем зашел Main.css и добавил:
        .show-on-mobile { display: none; }
        /* Smartphone Portrait and Landscape */
        @media only screen
        and (min-device-width : 320px)
        and (max-device-width : 480px){ .show-on-mobile { display: inline; }}

        Итог: никаких изменений.
        • 08 апреля 2017 г. , редакция: 08 апреля 2017 г.
        • Код
          .show-on-mobile { display: none; }

          Вы скрыли вывод консультанта.
          • 09 апреля 2017 г.
          • Александра, я именно хотел скрыть, но к сожалению не скрывается. Я так понял, что не могу присвоить скрипту класс, вот и не прячется виджет. Все убрал, решил настроить из админки, установил блок консультанта, нашел consultant.model.php, в нем есть тот же кусок кода, как ему присвоить class? Читал в инете по поиску, так и не нашел. Пытался присвоить по аналогии, сайт крашится.
            Код

            private function jivosite()
            {
            if($this->diafan->configmodules("jivosite_id", "consultant"))
            {
            $result = "<!-- BEGIN JIVOSITE CODE {literal} --><script type='text/javascript'>
            (function(){ var widget_id = '".$this->diafan->configmodules("jivosite_id", "consultant")."';var d=document;var w=window;function l(){
            var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = '//code.jivosite.com/script/widget/'+widget_id; var ss = document.getElementsByTagName('script')[0]; ss.parentNode.insertBefore(s, ss);}if(d.readyState=='complete'){l();}else{if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();</script></div>
            <!-- {/literal} END JIVOSITE CODE -->";
            }
            • 09 апреля 2017 г. , редакция: 09 апреля 2017 г.
            • Mobile_Detect.php вам в помощь (В Диафане он есть)

              Примеры:
              https://working-out.info/post-75

              вам вот такой вариант подойдет
              Код

              if( $detect->isMobile() && !$detect->isTablet() ){
              //Код онлайн консультанта для мобильников
              } else {
              //Код онлайн консультанта для десктопов
              }
              • 09 апреля 2017 г.
              • Краткость - сестра таланта
                Александр, вы меня отправили сюда? http://mobiledetect.net/
                Скачал архив, я так понимаю не очень просто его подключить, учитывая что я немного чайник и легко закипаю. А попроще вариант есть? Присвоить класс скрипту и скрыть его на ПК устройствах (как советовал выше Валерий Викторович). На текущий момент в CSS прописано условие:
                Код

                .jivomobile {
                visibility: hidden;
                }

                Если б я правильно присвоил класс данному скрипту, его бы не было видно, верно?
            • 09 апреля 2017 г.
            • Так вы заставляете пользователя грузить 2 скрипта, один ему-то не нужен.

              Я написал. что уже встроена эта функция.

              Можно просто прописать

              Код
              if(defined('IS_MOBILE') && IS_MOBILE){
              echo '<h1>ЭТО МОБИЛЬНИК</h1>';
              } else {
              echo '<h1>ЭТО не МОБИЛЬНИК</h1>';
              }
              • 09 апреля 2017 г. , редакция: 09 апреля 2017 г.
              • А если у меня выдает так как на скриншоте, это означает, что у меня не подключен mobiledetect или я что-то делаю не так? выкладываю код футера:
                Код
                <?php

                /**
                *
                * @package Diafan.CMS
                * @author diafan.ru
                * @version 5.4
                * @license http://www.diafan.ru/license.html
                * @copyright Copyright (c) 2003-2015 OOO «Диафан» (http://diafan.ru)
                */
                if (!defined('DIAFAN')) {
                $path = __FILE__;
                $i = 0;
                while (!file_exists($path . '/includes/404.php')) {
                if ($i == 10)
                exit;
                $i++;
                $path = dirname($path);
                }
                include $path . '/includes/404.php';
                }?>
                <div class="footer">
                <div class="footer__center">
                <div class="footer__left">
                <div style="margin: 0 0 10px">
                <insert name="show_block" module="site" id="3">
                <insert name="show_social_links">
                </div>


                <insert name="show_block" module="site" id="4">
                <insert name="show_block" module="site" id="17">

                </div>

                <insert name="show_block" module="menu" id="1" template="footer">
                <insert name="show_block" module="menu" id="2" template="footer">
                </div>
                </div>
                if(defined('IS_MOBILE') && IS_MOBILE){
                echo '<h1>ЭТО МОБИЛЬНИК</h1>';
                } else {
                echo '<h1>ЭТО не МОБИЛЬНИК</h1>';
                }
                </div>
            • 09 апреля 2017 г. , редакция: 09 апреля 2017 г.
            • надо вот так. Это же код php

              Код
              <?php

              if(defined('IS_MOBILE') && IS_MOBILE){
              echo '<h1>ЭТО МОБИЛЬНИК</h1>';
              } else {
              echo '<h1>ЭТО не МОБИЛЬНИК</h1>';
              }

              ?>
              • 09 апреля 2017 г. , редакция: 09 апреля 2017 г.
              • Работает! Но когда вставляю коды консультантов ошибка
                Цитата
                syntax error, unexpected '<'
                /public_html/includes/parser_theme.php(137) : eval()'d code:4

                Уже и блоками попробовал, результат тот же:
                Код
                <?php

                if(defined('IS_MOBILE') && IS_MOBILE){
                <insert name="show_block" module="site" id="24">;
                } else {
                <insert name="show_block" module="site" id="24">;
                }

                ?>


                P.S. точку с запятой пробовал убирать, не влияет.
              • 09 апреля 2017 г. , редакция: 09 апреля 2017 г.
              • Код
                <insert name="show_block" module="site" id="24">


                Это не PHP

                засунь в echo
  • 09 апреля 2017 г. , редакция: 09 апреля 2017 г.
  • Спасибо, вылез один затык, которого я сразу не приметил. Если даже вставить исходный код от Александра, то "ЭТО не МОБИЛЬНИК" вылазит как на ПК, так и на телефоне. Кто-нибудь в курсе с чем это может быть связано?
    Код
    <?php

    if(defined('IS_MOBILE') && IS_MOBILE){
    echo '<h1>ЭТО МОБИЛЬНИК</h1>';
    } else {
    echo '<h1>ЭТО не МОБИЛЬНИК</h1>';
    }

    ?>
    • 10 апреля 2017 г.
    • код взят из файла parse_theme.php , можно в ТП спросить, быстрее будет
    • 10 апреля 2017 г.
    • IS_MOBILE реагирует на галку "Грузить отдельную мобильную версию сайта" в параметрах сайта. Надо её ткнуть сначала.

      И не забудьте themes/m/ удалить(переименовать), чтобы не грузился мобильный демо-шаблон
      • 10 апреля 2017 г.
      • Виталий, еще раз спасибо! Функция отменная. Уточнить только хочу у Вас. Можно ли сделать так, чтобы ссылки не менялись, при включенной галке ссылки становятся вида site.ru/m/shop/...
        Или это ни на что не влияет? И мне не стоит даже об этом думать?
      • 10 апреля 2017 г. , редакция: 10 апреля 2017 г.
      • Виталий, шаблон переименовал, но с главной страницы сайта, если открывать с мобильного устройства пропали слайдер и новинки/спец предложения, с каталога пропал фильтр, админ панель исчезла, заголовки h1 дублируются, подскажете где копать? Может в содержимое папки m закинуть те же файлы, что и в основной теме? Дайте пожалуйста совет? Хочется докрутить до финала.
  • 11 апреля 2017 г.
  • В связи с вышеописанной проблемой Решил попробовать активировать без галки "мобильной версии" в админке.. вставил такой код в футер:
    Код
    require_once '/plugins/Mobile_Detect.php';
    $detect = new Mobile_Detect;
    // Если мобильное устройство (телефон или планшет).
    if ( $detect->isMobile() ) {

    echo '<insert name="show_block" module="site" id="24">';}
    else {
    echo '<insert name="show_block" module="site" id="25">';

    }


    Получил ошибку: require_once(): Failed opening required '/plugins/Mobile_Detect.php' (include_path='.:/usr/share/php')
    /public_html/includes/parser_theme.php(137) : eval()'d code:23

    Вопрос к знающим специалистам. Я ошибку сделал или не реально так кусочно активировать функцию.
    • 11 апреля 2017 г.
    • У меня пока монолог с собой продолжается.. Или как вариант, реально ли закомментировать часть кода в parser_theme.php, чтобы при активации галки в админке "мобильная версия" функция mobile_detect работала, а все остальное нет (чтобы использовалась та же тема (не мобильная), ссылки не переделывались в формат ..../m/...
      • 11 апреля 2017 г.
      • Значит делайте отдельно мобильную версию .../m/... и кидайте разные кода в разные файлы, Отдельно для ПК, отдельно для мобилки.
        ИМХО: проще будет.
        • 11 апреля 2017 г.
        • мне уже несколько раз говорили, что лучше мобильную делать через CSS, она сейчас в процессе, поэтому не подходит данный вариант, мне кажется можно сделать, просто видно задача тяжеловата, либо объяснять мне никому уже не охото.
          • 12 апреля 2017 г.
          • В файле init вот такая конструкция прописана.

            Попробуйте по ее примеру сделать. Просто нет времени тестировать.

            Код
            Custom::inc('plugins/mobile_detect.php');
            $detect = new Mobile_Detect;
            if($detect->isMobile())
            {
            /*
            ваш код
            */
            }
  • 12 апреля 2017 г.
  • Александр, ГРОМАДНОЕ СПАСИБО! Так и знал, что решение на поверхности
    Спасибо всем, кто ответил и помог! Рабочий код у меня:
    Код
    Custom::inc('plugins/mobile_detect.php');
    $detect = new Mobile_Detect;
    // Если мобильное устройство (телефон или планшет).
    if ( $detect->isMobile() ) {

    echo '<insert name="show_block" module="site" id="24">';}
    else {
    echo '<insert name="show_block" module="site" id="25">';

    }

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум