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

smit
#1 15.11.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.11.2016 20:22

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

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

smit
#3 15.11.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;
}


?>

 

 

 

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

   <!-- BEGIN: PRJ_ROWS -->


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

 balloonContent: '<a href="{PRJ_ROW_URL}">{PRJ_ROW_SHORTTITLE}</a>'

 

Отредактировано: smit (29.11.2016 00:59, 7 лет назад)