Jump to content
Sign in to follow this  
adskiy

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

Recommended Posts

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

По необходимости начал проектировать модуль.За основу взят модуль от участника форума "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

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

Спасибо.

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Если кому интересно, решилось всё установкой и редактированием модуля 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

 

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

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.