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

Геокарта в карточке товара

  • 09 февраля 2017 г.
  • Приветствую.
    Есть модуль геокарта, но выводится он только в объявлениях.
    Как выводить такие точки и карту, но уже в карточке товара магазина?
    • 09 февраля 2017 г. , редакция: 09 февраля 2017 г.

    • В настройках модуля (modules/модуль/admin/модуль.admin.config.php) и в файле редактирования элементов модуля (modules/модуль/admin/модуль.admin.php) необходимо добавить параметр 'geomap':
      public $variables = array(
      'main' => array(
      'geomap' => 'module',

      ),

      );

      Далее во вьюхе карточки:
      echo $this->diafan->_geomap->get($result["id"], 'shop');

      В документации к модулю описано https://www.diafan.ru/dokument/full-manual/upmodules/geomap/
  • 09 февраля 2017 г.
  • Вопрос закрыт, действительно просто.
  • 09 февраля 2017 г.
  • Возникли непонятности с выводом.
    Если выводить через шаблонный , то в режиме разработки вылезает [ERROR#1] потом следом карта.
    [ERROR#1] ссылаясь на вновь созданный тег.
    Если выводить сразу во вьюхе карточки: echo $this->diafan->_geomap->get($result["id"], 'shop'); ошибки нет.
    В чем может быть проблема?
    • 09 февраля 2017 г.
    • Приведите содержание ошибки. В нем ответ. Возможно, привязав geomap к модулю shop, Вы пытаетесь шаблонным тегом вывести его вне зоны модуля. Т.е. ошибка не в карте, а в попытке чтения необъявленных переменных, т.к. эти переменные объявляются в зоне действия модуля shop. В общем требуется содержание ошибки, тогда можно будет ответить.
  • 09 февраля 2017 г.
  • Undefined variable: result
    #1 include(C:OpenServerdomains estdia.loccustommy hemesfunctionsmapmy.php) called at [C:OpenServerdomains estdia.locincludesparser_theme.php:237]
    #2 Parser_theme->functions(mapmy, Array(...)) called at [C:OpenServerdomains estdia.locincludesparser_theme.php:218]
    #3 Parser_theme->start_element(Array(...)) called at [C:OpenServerdomains estdia.locincludesparser_theme.php:110]
    #4 Parser_theme->get_function_in_theme(<insert name="mapmy">) called at [C:OpenServerdomains estdia.locincludes emplate.php:120]
    #5 Template->htmleditor(<insert name="mapmy">) called at [C:OpenServerdomains estdia.loccustommymodulesshopviewsshop.view.id.php:226]
    #6 include(C:OpenServerdomains estdia.loccustommymodulesshopviewsshop.view.id.php) called at [C:OpenServerdomains estdia.locincludes emplate.php:76]
    #7 Template->get(id, shop, Array(...)) called at [C:OpenServerdomains estdia.locincludescontroller.php:99]
    #8 Controller->show_module() called at [C:OpenServerdomains estdia.loc hemesfunctionsshow_module.php:22]
    #9 include(C:OpenServerdomains estdia.loc hemesfunctionsshow_module.php) called at [C:OpenServerdomains estdia.locincludesparser_theme.php:237]
    #10 Parser_theme->functions(show_module) called at [C:OpenServerdomains estdia.loc hemesfunctionsshow_body.php:33]
    #11 include(C:OpenServerdomains estdia.loc hemesfunctionsshow_body.php) called at [C:OpenServerdomains estdia.locincludesparser_theme.php:237]
    #12 Parser_theme->functions(show_body, Array(...)) called at [C:OpenServerdomains estdia.locincludesparser_theme.php:218]
    #13 Parser_theme->start_element(Array(...)) called at [C:OpenServerdomains estdia.locincludesparser_theme.php:110]
    #14 Parser_theme->get_function_in_theme(<?php /** * Основной шаблон сайта * * @package DIAFAN.CMS * @author diafan.ru * @version 6.0 * @license http://www.diafan.ru/license.html * @copyright...) called at [C:OpenServerdomains estdia.locincludesparser_theme.php:72]
    #15 Parser_theme->show_theme() called at [C:OpenServerdomains estdia.locincludesinit.php:121]
    #16 Init->start() called at [C:OpenServerdomains estdia.locindex.php:65]
    • 10 февраля 2017 г.
    • Ну так ответ прост. Вы решили вывести geomap через шаблонный тег. При этом используете там переменную $result, которую туда не передали. Вот и ошибка. Поясню, во вьюшке эта переменная выведена силами программистов cms, а в шаблонном теге Вам нужно поработать самостоятельно.
      Успехов.
    • 10 февраля 2017 г.
    • Цитата
      Undefined variable: result
      - Не определена переменная
  • 10 февраля 2017 г.
  • Сама карта выводится.
    Как определить переменную?
    • 10 февраля 2017 г.
    • Код

      $val_id = 123;
      echo $this->diafan->_geomap->get($val_id, 'shop');
      Вместо 123 используйте требуемое значение.
  • 10 февраля 2017 г.
  • Виталий использую ваш код, что-то не работает. Прежде создал шаблонный тег, далее его вывожу. Не понял что указать вместо 123? И почему используя значение 0 в примере с $result = 0; все работает. ?
    • 10 февраля 2017 г.
    • Под значением 123 подразумевалось не само 123, а конкретное требуемое значение id элемента. Поясню. Если полностью, то в функции используются следующие значения:
      Код
      $this->diafan->_geomap->get ($element_id,$module_name,$element_type,$site_id);

      Цитата
      $element_id: номер элемента модуля, по умолчанию текущий элемент модуля
      $module_name: название модуля, по умолчанию текущий модуль
      $element_type: тип данных
      $site_id: страница сайта, к которой прикреплен элемент, по умолчанию текущая страница сайта

      Соответственно, если не нужно вытягивать дополнительную информацию из карты в модуле магазин, то можно так
      Код
      echo $this->diafan->_geomap->get(0, 'shop');
      Но если действовать так упрощенно, то здесь вообще не требуется geomap, т.е. можно просто вывести карту google или yandex обычным скриптом.
      Поэтому все зависит от задачи.
  • 10 февраля 2017 г.
  • Обычным скриптом нет.
    Ведь тут выводится точка , которая указана в админке в карточке товара или объявления.
    Два аналогичных рабочих варианта :
    $result = 0;
    echo $this->diafan->_geomap->get($result["id"], 'shop');
    или
    echo $this->diafan->_geomap->get(0, 'shop');
    • 12 февраля 2017 г.
    • Цитата
      Обычным скриптом нет.
      Не согласен - возможно. Например, google, yandex предоставляют онлайн инструменты по созданию карты. По завершении они выдают Вам строчку с кодом - тег iframe - который просто вставляется на страницу обычным путем копирования и вставки. Итак, что проще (если необходимо просто вывести карту с одной меткой): вставить одну строчку или сделать ряд телодвижений, используя модуль geomap?

Новости

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

Форум