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

Добавление цели типа "Событие" Яндекс.Метрики

  • 10 апреля 2014 г.
  • Добрый день.
    Пытаюсь установить цель типа "Событие" Яндекс.Метрики на отправку формы заявки с сайта.
    Делаю все по документации: http://help.yandex.ru/metrika/objects/reachgoal.xml#reachgoal
    (К слову, делаю не первый раз! Данная проблема возникла только на этой CMS)

    Код кнопки выглядит следующим образом:

    (ID счетчика затер по понятным причинам!)

    После чего, возникает ошибка:


    Прошу подсказать, в чем может быть ошибка...
    • 10 апреля 2014 г.
    • К слову сказать, отношения к CMS данная ошибка отношения не имеет. А имеет отношение она к РНР, причем ошибка школьная, из-за кавычек, самая позорная и стыдная.
      Вы знаете как работает вывод echo и кавычки одинарные и двойные?

      Код
      //можно так
      echo ' **** ';
      //или так
      echo " **** ";


      А если надо использовать кавычки внутри оператора, то снаружи надо использовать другие кавычки.

      Код
      //можно так
      echo ' ** " * " ';
      //или так
      echo " ** ' * ' ";


      Вы же делаете

      Код
      echo ' **** onclick=" 'ORDER' "';


      Где ошибка??? Очевидно, что оператор воспринимает команду как

      Код
      echo ' **** onclick=" '


      И ругается, что в конце строки нет ;

      Чтобы ликбез состоялся полностью, покажу как должно быть:

      Код
      echo ' **** onclick=" ' . " 'ORDER' " . ' "';
      • 10 апреля 2014 г.
      • Цитата
        А имеет отношение она к РНР, причем ошибка школьная, из-за кавычек, самая позорная и стыдная.

        Я и не писал, что я программист. Стыдиться мне тут нечего. Спросить того, чего не знаешь - я считаю, что это совсем не позорно. Разве не для этого существует данный форум? (риторический вопрос)

        Цитата
        Вы знаете как работает вывод echo и кавычки одинарные и двойные?

        Нет я не знаю, как работает вывод echo

        Прописал следующим образом:
        Код
        //Кнопка Отправить
        echo '<span class="button_wrap"><input type="submit" value="'.$this->diafan->_('Отправить', false).'" class="button" name="button" onclick="yaCounterXXXXXX.reachGoal("ORDER"); return true;"></span>
        </form>';
        echo '<div class="errors error"'.($result["error"] ? '>'.$result["error"] : ' style="display:none">').'</div>
        </div>';

        Отправил заявку несколько раз, однако в статистике Яндекс.Метрики событие не учлось.
        • 10 апреля 2014 г. , редакция: 10 апреля 2014 г.
        • А Вы не писали, что не программист. И даже наоборот, заявили, что за плечами суровый опыт работы с кучей других CMS
          Код
          echo '<span class="button_wrap"><input type="submit" value="'.$this->diafan->_('Отправить', false).'" class="button" name="button" onclick="yaCounterXXXXXX.reachGoal("ORDER"); return true;"></span>
          </form>';

          Здесь ошибка та же. Это неправильно ровно по той же причине:
          Событие внутри
          Код
          onclick=""

          вот:
          Код
          yaCounterXXXXXX.reachGoal("ORDER"); return true;


          Если Вы пишете
          Код
          onclick="yaCounterXXXXXX.reachGoal("ORDER"); return true;"

          РНР сработает, т.к. для него ошибки нет.
          Зато сломается JS, ведь для него это все выглядит как:
          Код
          onclick="yaCounterXXXXXX.reachGoal("

          Неужели это не очевидно, особенно после того, как я описал проблему выше?

          Я еще раз повторяю, правильно делать вот так:
          Код
          //Кнопка Отправить
          echo '<span class="button_wrap"><input type="submit" value="'.$this->diafan->_('Отправить', false).'" class="button" name="button" onclick="yaCounterXXXXXX.reachGoal(' . "'ORDER'" . '); return true;"></span>
          </form>';
          echo '<div class="errors error"'.($result["error"] ? '>'.$result["error"] : ' style="display:none">').'</div>
          </div>';
          • 10 апреля 2014 г.
          • Цитата
            И даже наоборот, заявили, что за плечами суровый опыт работы с кучей других CMS

            Вы неправильно интерпретировали мои слова! Не красиво поступаете!

            ps: Спасибо, сработало!

  • 25 июля 2014 г.
  • Я тут решил поделиться наиболее простым решением для установки Цели на отправку формы, даже если разных форм на сайте много и они означают разные цели. Вышепредложенный пример некорректен, так как он будет срабатывать цель просто при клике на кнопку Отправить. А что, если у нас есть валидация и данные не отправились? Кнопка нажата - цель сработала, а результата нет. Поэтому поводу, есть два решения:
    1) jquery обработка отправки onsubmit на конкретной форме, код что-то вроде: $('.feedback_form form').onsubmit(function(){yaCounterXXXXXXX.reachGoal('ORDER');});
    2)Второй наиболее удобный вариант: <script type="text/javascript">$(document).ready(function() {yaCounterXXXXX.reachGoal('ORDER'); return true;});</script>
    Этот код просто вставляется в админпанели в строке "Сообщение после отправки" в конкретной форме.

Новости

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

Форум