| 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>'
Отредактировано: smit (29.11.2016 00:59, 8 лет назад)
|