Перейти к содержанию
adskiy

Модуль для вывода карты яндекс в табах VQMOD

Рекомендуемые сообщения

Приветствую уважаемые участники форума.

По необходимости начал проектировать модуль.За основу взят модуль от участника форума "efremovxp".

Основная задача - добавление объектов на карту яндекс через админку при добавлении товара.

Итак, сразу обозначу что до этого модули не создавал, поэтому прошу помощи, чтобы разобраться.

 

На данный момент xml файл имеет такой вид:

<modification>
    <id>Yandex Maps</id>
    <version>1.0.0</version>
    <vqmver>2.1.5</vqmver>
    <author><![CDATA[<a href="https://opencartforum.com/user/17879-efremovxp/">efremovxp</a>]]></author>
    
    <decription>Модуль предназначен для создания схемы проезда</decription>

    <file name="catalog/controller/product/product.php">
        <operation>
            <search position="after" error="log"><![CDATA[$this->data['tab_attribute'] = $this->language->get('tab_attribute');]]></search>
            <add><![CDATA[
        $this->data['adress_ymaps'] = $this->config->get('adress_ymaps');
        $this->data['preset_type'] = $this->config->get('preset_type');
        $this->data['balloon_content'] = $this->config->get('balloon_content');
        $this->data['zoom_lvl'] = $this->config->get('zoom_lvl');
        $this->data['width_ymaps'] = $this->config->get('width_ymaps');
        $this->data['height_ymaps'] = $this->config->get('height_ymaps');
        ]]></add>
        </operation>
    </file>

       <file name="admin/view/template/catalog/product_form.tpl">
        <operation>
            <search position="after" error="log"><![CDATA[<a href="#tab-links"><?php echo $tab_links; ?></a>]]></search>
          <add><![CDATA[
          <a href="#tab-ymaps"><?php echo $tab_ymaps; ?></a>
        ]]></add>
        </operation>
    </file>


    <file name="admin/view/template/catalog/product_form.tpl">
        <operation>
            <search position="before" error="log"><![CDATA[<div id="tab-attribute">]]></search>
            <add><![CDATA[ <div id="tab-data">
          <table class="form">
            <h2>Яндекс карты Lite 1.0</h2>
            <p>Yandex Maps API 2.1 beta</p>
            <tr>
              <td>Адрес: </td><td><input type="text" name="adress_ymaps" value="<?php echo $adress_ymaps; ?>" /><i> Пример: Россия, Москва, улица Тверская, 1</i></td>
            </tr>
            <tr>
              <td>Ширина карты: </td><td><input type="text" name="width_ymaps" value="<?php echo $width_ymaps; ?>" /> px</td><td></td>
            </tr>
            <tr>
              <td>Высота карты: </td><td><input type="text" name="height_ymaps" value="<?php echo $height_ymaps; ?>" /> px</td><td></td>
            </tr>
            <tr>
              <td>Уровень приближения: </td><td>
                  <select name="zoom_lvl" size="1">
                <option <?php if ($zoom_lvl == '1') { ?>selected="selected"<?php } ?> value="1">1</option>
                <option <?php if ($zoom_lvl == '2') { ?>selected="selected"<?php } ?> value="2">2-мир</option>
                <option <?php if ($zoom_lvl == '3') { ?>selected="selected"<?php } ?> value="3">3</option>
                <option <?php if ($zoom_lvl == '4') { ?>selected="selected"<?php } ?> value="4">4</option>
                <option <?php if ($zoom_lvl == '5') { ?>selected="selected"<?php } ?> value="5">5-страна</option>
                <option <?php if ($zoom_lvl == '6') { ?>selected="selected"<?php } ?> value="6">6</option>
                <option <?php if ($zoom_lvl == '7') { ?>selected="selected"<?php } ?> value="7">7</option>
                <option <?php if ($zoom_lvl == '8') { ?>selected="selected"<?php } ?> value="8">8</option>
                <option <?php if ($zoom_lvl == '9') { ?>selected="selected"<?php } ?> value="9">9-город</option>
                <option <?php if ($zoom_lvl == '10') { ?>selected="selected"<?php } ?> value="10">10</option>
                <option <?php if ($zoom_lvl == '11') { ?>selected="selected"<?php } ?> value="11">11</option>
                <option <?php if ($zoom_lvl == '12') { ?>selected="selected"<?php } ?> value="12">12</option>
                <option <?php if ($zoom_lvl == '13') { ?>selected="selected"<?php } ?> value="13">13</option>
                <option <?php if ($zoom_lvl == '14') { ?>selected="selected"<?php } ?> value="14">14-улица</option>
                <option <?php if ($zoom_lvl == '15') { ?>selected="selected"<?php } ?> value="15">15</option>
                <option <?php if ($zoom_lvl == '16') { ?>selected="selected"<?php } ?> value="16">16</option>
                <option <?php if ($zoom_lvl == '17') { ?>selected="selected"<?php } ?> value="17">17-дом</option>
                <option <?php if ($zoom_lvl == '18') { ?>selected="selected"<?php } ?> value="18">18</option>
                </select>
            </td>
            </tr>
            <tr>
              <td>Текст балуна: </td><td><input type="text" name="balloon_content" value="<?php echo $balloon_content; ?>" /></td>
            </tr>
            <tr>
              <td>Тип метки: </td><td>
                <select name="preset_type" size="1">
                <option <?php if ($preset_type == 'dotIcon') { ?>selected="selected"<?php } ?> value="dotIcon">Метка с точкой</option>
                <option <?php if ($preset_type == 'icon') { ?>selected="selected"<?php } ?>value="icon">Метка без точки</option>
                <option <?php if ($preset_type == 'circleDotIcon') { ?>selected="selected"<?php } ?>value="circleDotIcon">Круг с точкой</option>
                <option <?php if ($preset_type == 'circleIcon') { ?>selected="selected"<?php } ?>value="circleIcon">Круг без точки</option>
                </select></td>
            </tr>
          </table></div>]]></add>
        </operation>
    </file>
    <file name="admin/controller/catalog/product.php">
        <operation>
            <search position="before" error="log"><![CDATA[if (isset($this->request->post['product_description'])) {]]></search>
            <add><![CDATA[        
        if (isset($this->request->post['adress_ymaps'])) {
            $this->data['adress_ymaps'] = $this->request->post['adress_ymaps'];
        } else {
            $this->data['adress_ymaps'] = $this->config->get('adress_ymaps');
        }
        
        if (isset($this->request->post['preset_type'])) {
            $this->data['preset_type'] = $this->request->post['preset_type'];
        } else {
            $this->data['preset_type'] = $this->config->get('preset_type');
        }
        
        if (isset($this->request->post['balloon_content'])) {
            $this->data['balloon_content'] = $this->request->post['balloon_content'];
        } else {
            $this->data['balloon_content'] = $this->config->get('balloon_content');
        }
        
        if (isset($this->request->post['zoom_lvl'])) {
            $this->data['zoom_lvl'] = $this->request->post['zoom_lvl'];
        } else {
            $this->data['zoom_lvl'] = $this->config->get('zoom_lvl');
        }
        
        if (isset($this->request->post['height_ymaps'])) {
            $this->data['height_ymaps'] = $this->request->post['height_ymaps'];
        } else {
            $this->data['height_ymaps'] = $this->config->get('height_ymaps');
        }
        if (isset($this->request->post['width_ymaps'])) {
            $this->data['width_ymaps'] = $this->request->post['width_ymaps'];
        } else {
            $this->data['width_ymaps'] = $this->config->get('width_ymaps');
        }
        ]]></add>
        </operation>
    </file>

        <file name="catalog/view/theme/*/template/product/product.tpl">
        <operation>
            <search position="after" error="log"><![CDATA[<?php if ($review_status) { ?><a href="#tab-review"><?php echo $tab_review; ?></a><?php } ?>]]></search>
          <add><![CDATA[
   <?php if ($tab_ymaps) { ?>
    <a href="#tab-ymaps"><?php echo $tab_ymaps; ?></a>
    <?php } ?>
        ]]></add>
        </operation>
    </file>

        <file name="catalog/view/theme/*/template/product/product.tpl">
        <operation>
            <search position="before" error="log"><![CDATA[<?php if ($review_status) { ?><div id="tab-review" class="tab-content">]]></search>
            <add><![CDATA[<?php if ($adress_ymaps) { ?>  <div id="tab-ymaps" class="tab-content">
<script src="//api-maps.yandex.ru/2.1-dev/?lang=ru-RU&load=package.full" type="text/javascript"></script>
<script type="text/javascript">
ymaps.ready(function () {
{
var myGeocoder = ymaps.geocode("<?php echo $adress_ymaps; ?>");
myGeocoder.then(
    function (res) {
        var firstGeoObject = res.geoObjects.get(0),        
                myMap = new ymaps.Map
                ("YMapsID",
                    {
                        center: firstGeoObject.geometry.getCoordinates(),
                        controls: ['smallMapDefaultSet'],
                        zoom: <?php if ($zoom_lvl) { ?><?php echo $zoom_lvl; ?><?php } else { ?>15<?php } ?>
                    }
                );
            var myPlacemark = new ymaps.Placemark
            (
                firstGeoObject.geometry.getCoordinates(),
                {
                   <?php if ($balloon_content) { ?> balloonContent: '<?php echo $balloon_content; ?>',<?php } ?>
                },
                {
                    preset: 'islands#<?php if ($preset_type) { ?><?php echo $preset_type; ?><?php } else { ?>dotIcon<?php } ?>'
                }
            );
            myMap.geoObjects
            .add(myPlacemark);
    },
    function (err) {
        alert(err.message);
    }
);
}
});
</script>
<div id="YMapsID" style="width:<?php echo $width_ymaps; ?>px; height:<?php echo $height_ymaps; ?>px"></div>
    </div><?php } ?>]]></add>
        </operation>
    </file>
</modification>

.. но выдаются ошибки и естественно он нигде не появляется

2015-02-25 22:26:43 - PHP Warning:  Invalid argument supplied for foreach() in /home/httpd/vhosts/sitename.ru/httpdocs/catalog/controller/module/product_tab.php on line 32
2015-02-26 14:20:56 - PHP Notice:  Undefined variable: tab_ymaps in /home/httpd/vhosts/sitename.ru/httpdocs/vqmod/vqcache/vq2-admin_view_template_catalog_product_form.tpl on line 19

Буду рад, если кто нибудь поможет разобраться что куда итд....

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Изучать html, css, javascript, php, mysql + читать про MVC opencart, vqmod opencart

Изучать модули и код, для начала дефолтные

 

Все вопросы отпадут сами собой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Программист из меня хреновый, поэтому и обращаюсь :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гляну позже, если сами не решите.

Сейчас занимаюсь адаптацией своих модулей под 2.0 и другие проекты в очереди...

Идея интересная, конечно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На данный момент нету связи с базой и не отображаются значения... Буду ждать мнения профи :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если кому интересно, решилось всё установкой и редактированием модуля Product Maps 1.2

Для работы на 1.5.6.4 несколько изменений в xml и языковых файлах. Спрашивайте, файлы кину.

Вот сам модуль:

http://www.opencart.com/index.php?route=extension/extension/info&extension_id=3203&filter_search=product%20maps

 

На ближайший период его хватит, однако со временем постараюсь всё же осилить яндекс карты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Блин, жалко что поздно этот модуль увидел, спасибо за наводку :-)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.