Foren / National / Russian / Модули и плагины / Placemarks не показывает метки.

smit
#1 15. November 2016, 20:08

Как известно, вывод карты со всеми отмеченным проектами в Placemarks, происходит на отдельной странице. А мне нужно, чтобы карта была сразу на странице заданий. Я перекинул код карты из placemarks/tpl/projects.list.placemarks.tplв modules/projects/tpl/projects.list.tpl. Карта на странице проектов появилась, но отметки с неё пропали. Почему так? Вроде все полностью скопировал.

 

<script type="text/javascript">
        var myMap,
            myPlacemark;
                
        ymaps.ready(function () {
 
            myMap = new ymaps.Map("YMapsID", {
               center: [55.76, 37.64],
               zoom: 12
            });
             
            ymaps.geolocation.get({
               provider: 'yandex',
               mapStateAutoApply: true
            }).then(function (result) {
               myMap.geoObjects.add(result.geoObjects);
            });
 
            myMap.controls.add(
                new ymaps.control.ZoomControl()
            );
            <!-- IF {PHP.totalitems} > 0 -->
            myMap.geoObjects
                <!-- BEGIN: PRJ_ROWS -->
                .add(new ymaps.Placemark([{PRJ_ROW_PLACEMARKS_COORD}], {
                    balloonContent: '<a href="{PRJ_ROW_URL}">{PRJ_ROW_SHORTTITLE}</a>'
                }))
                <!-- END: PRJ_ROWS -->;
            <!-- ENDIF -->
        });
                 
    </script>
 
    <div id="YMapsID" style="height: 320px;"></div>

 

Денвер показывает какую-то ошибку в строке:             

.add(new ymaps.Placemark([{PRJ_ROW_PLACEMARKS_COORD}], {
balloonContent: '<a href="{PRJ_ROW_URL}">{PRJ_ROW_SHORTTITLE}</a>'
}))

Может дело в этом?             

 

CrazyFreeMan
#2 15. November 2016, 20:22

Дело в денвере раз.

ТУпо скопипастить код в другой шаблон не проходит. Нужно подключать нужный код, кажется в функциях плейсмаркета есть функция которая вызывает карту с параметрами, ее  нужно использовать где нужно (на главной к примеру)

smit
#3 15. November 2016, 20:44
#42366 CrazyFreeMan:

Дело в денвере раз.

ТУпо скопипастить код в другой шаблон не проходит. Нужно подключать нужный код, кажется в функциях плейсмаркета есть функция которая вызывает карту с параметрами, ее  нужно использовать где нужно (на главной к примеру)

Функции есть для: projects.tpl - {PRJ_PLACEMARKS}, projects.add.tpl - {PRJADD_FORM_PLACEMARKS} и projects.edit.tpl - {PRJEDIT_FORM_PLACEMARKS}

Но это всё явно не то. 

Вывод общей карты делается переходом по ссылке: <a href="{PHP|cot_url('projects', 'map=1')}">Карта</a>.

Добавлено 1 час спустя:

Вообще, тут метка - это:

<!-- IF {PHP.totalitems} > 0 -->
            myMap.geoObjects
                <!-- BEGIN: PRJ_ROWS -->
                .add(new ymaps.Placemark([{PRJ_ROW_PLACEMARKS_COORD}], {
                    balloonContent: '<a href="{PRJ_ROW_URL}">{PRJ_ROW_SHORTTITLE}</a>'
                }))
                <!-- END: PRJ_ROWS -->;
            <!-- ENDIF -->

 

Без точек: http://k38v38.myjino.ru/projects

С точками: http://k38v38.myjino.ru/projects?map=1

 

Добавлено 1 неделя спустя:

Кстати не денвер, а дримвивер. Хз с чего я его так назвал..

 

Добавлено 3 часа спустя:

Методом тыка узнал что скорее всего дело в строке:

.add(new ymaps.Placemark([{PRJ_ROW_PLACEMARKS_COORD}], {

 

mark_coord - это координаты точек в базе.

В placemarks.functions.php нашел:

'COORD' => $mark_data['mark_coord'],

В placemarks.projectstags.main.php:

if(!empty($item_data['mark_coord'])){
    $temp_array['PLACEMARKS_COORD'] = $item_data['mark_coord'];
}

Может таки дело в алиасе? Что тут можно подставить (извините, так и не понял эту логику)? 

PRJ_ROW_PLACEMARKS_COORD

 

Полностью placemarks.functions.php:

<?php
 
/**
 * Placemarks plugin
 *
 * @package palcemarks
 * @version 1.0.1
 * @author devkont
 * @copyright Copyright (c) CMSWorks Team 2013
 * @license BSD
 */
 
// Requirements
require_once cot_langfile('placemarks', 'plug');
 
// Tables and extras
cot::$db->registerTable('placemarks');
 
 
/**
 * Returns all placemark tags for coTemplate
 *
 * @param mixed $mark_data placemark Info Array or ID
 * @return array
 * @global CotDB $db
 */
function cot_generate_placemarktags($mark_data, $tag_prefix = '')
{
    global $db, $cot_extrafields, $cfg, $L, $db_placemarks;
 
    static $extp_first = null, $extp_main = null;
 
    if (is_null($extp_first))
    {
        $extp_first = cot_getextplugins('placemarktags.first');
        $extp_main = cot_getextplugins('placemarktags.main');
    }
 
    /* === Hook === */
    foreach ($extp_first as $pl)
    {
        include $pl;
    }
    /* ===== */
    if (!is_array($mark_data))
    {
        $sql = $db->query("SELECT * FROM $db_placemarks WHERE mark_id = '" . (int)$mark_data . "' LIMIT 1");
        $mark_data = $sql->fetch();
    }
 
    if ($mark_data['mark_id'] > 0)
    {  
        $temp_array = array(
            'ID' => $mark_data['mark_id'],
            'AREA' => $mark_data['mark_area'],
            'CODE' => $mark_data['mark_code'],
            'COORD' => $mark_data['mark_coord'],
            'ZOOM' => $mark_data['mark_zoom'],
        );
 
        // Extrafields
        if (isset($cot_extrafields[$db_placemarks]))
        {
            foreach ($cot_extrafields[$db_placemarks] as $exfld)
            {
                $tag = mb_strtoupper($exfld['field_name']);
                $temp_array[$tag . '_TITLE'] = isset($L['placemarks_' . $exfld['field_name'] . '_title']) ? $L['placemarks_' . $exfld['field_name'] . '_title'] : $exfld['field_description'];
                $temp_array[$tag] = cot_build_extrafields_data('placemarks', $exfld, $mark_data['mark_' . $exfld['field_name']]);
            }
        }
 
        /* === Hook === */
        foreach ($extp_main as $pl)
        {
            include $pl;
        }
        /* ===== */
    }
 
    $return_array = array();
    if(is_array($temp_array))
    {
        foreach ($temp_array as $key => $val)
        {
            $return_array[$tag_prefix . $key] = $val;
        }
    }
 
    return $return_array;
}
 
 
function cot_placemarks_getmark ($area, $code, $action = 'single')
{
    global $L, $cfg, $db, $db_placemarks;
 
    $t1 = new XTemplate(cot_tplfile(array('placemarks', $action, $area), 'plug'));
     
    $placemark = $db->query("SELECT * FROM $db_placemarks
        WHERE mark_area='".$db->prep($area)."' AND mark_code='".$db->prep($code)."'")->fetch();
 
    if($action == 'single' && empty($placemark)) return false;
     
    $t1->assign(cot_generate_placemarktags($placemark, 'MARK_'));
     
    $t1->parse('MAIN');
    return $t1->text('MAIN');
}
 
 
function cot_placemarks_getmarks ($area)
{
    global $L, $cfg, $db, $db_placemarks;
 
    $t1 = new XTemplate(cot_tplfile(array('placemarks', 'list', $area), 'plug'));
     
    $sql = $db->query("SELECT * FROM $db_placemarks
        WHERE mark_area='".$db->prep($area)."'");
    while($placemark = $sql->fetch())
    {
        $t1->assign(cot_generate_placemarktags($placemark, 'MARK_ROW_'));
        $t1->parse('MAIN.MARK_ROW');
    }
     
    $t1->parse('MAIN');
    return $t1->text('MAIN');
}
 
 
function cot_placemarks_savemark ($area, $code, $coord, $zoom)
{
    global $L, $cfg, $db, $db_placemarks;
 
    $rmark['mark_coord'] = $coord;
    $rmark['mark_zoom'] = $zoom;
     
    if(!empty($rmark['mark_coord']) && !empty($rmark['mark_zoom']))
    {
        if($placemark = $db->query("SELECT * FROM $db_placemarks
        WHERE mark_area='".$db->prep($area)."' AND mark_code='".$db->prep($code)."'")->fetch())
        {
            $db->update($db_placemarks, $rmark, "mark_id=" . $placemark['mark_id']);
        }
        else
        {
            $rmark['mark_area'] = $area;
            $rmark['mark_code'] = $code;
             
            $db->insert($db_placemarks, $rmark);
        }
         
        return true;
    }else{
        $db->delete($db_placemarks, "mark_area='".$db->prep($area)."' AND mark_code='".$db->prep($code)."'");
    }
     
    return false;
}
 
 
?>

 

 

 

Эта строка выводит все задания. Если её закосячить, то будет показывать только одно:

<span style="color:#696969;">   <!-- BEGIN: PRJ_ROWS --></span>


Эта - выводит всплывающие подсказки:                     

<span style="color:#696969;"> balloonContent: '<a href="{PRJ_ROW_URL}">{PRJ_ROW_SHORTTITLE}</a>'</span>

 


Dieser Beitrag wurde von smit (am 29. November 2016, 00:59, vor 8 Jahre) bearbeitet