smit |
|
---|---|
Как известно, вывод карты со всеми отмеченным проектами в 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 |
|
---|---|
Дело в денвере раз. ТУпо скопипастить код в другой шаблон не проходит. Нужно подключать нужный код, кажется в функциях плейсмаркета есть функция которая вызывает карту с параметрами, ее нужно использовать где нужно (на главной к примеру) |
smit |
|
---|---|
#42366 CrazyFreeMan: Функции есть для: projects.tpl - {PRJ_PLACEMARKS}, projects.add.tpl - {PRJADD_FORM_PLACEMARKS} и projects.edit.tpl - {PRJEDIT_FORM_PLACEMARKS} Но это всё явно не то. Вывод общей карты делается переходом по ссылке: Добавлено 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; } ?>
Эта строка выводит все задания. Если её закосячить, то будет показывать только одно:
<!-- BEGIN: PRJ_ROWS -->
balloonContent: '<a href="{PRJ_ROW_URL}">{PRJ_ROW_SHORTTITLE}</a>'
|
|
This post was edited by smit (2016-11-29 00:59, 8 years ago) |