Сергей Скат

Сергей Скат

Был в сети 05 мая 2023, 00:58
Заказы принимаю
как довелось год назад сделать сайт на Битриксе что клиенту моей конторы было принципиально, в итоге сайт на который я бы с помощью modx потратил три дня с перерывом на StarCraft 2, я делал месяц… самые простые вещи делаются какими то неимоверными усилиями, а потом они просили меня сделать инструкцию как этим пользоваться, а я ни сном ни духом, ерунда в общем, никогда не скажу что битрикс это удобно и решает задачи, а не создает новые
да уж, особенно, затем и понравился в свое время modx, в любой другой cms/cmf не разберешься в первые 5 минут, в modx более или менее если разраб был грамотный, а теперь так вообще, попробовал, теперь думаю а почему по умолчанию нет
ну компанента насколько я знаю нет, можно написать плагин, который бы брал например адрес, геокодировал его и выдавал бы всю инфу, насчет гугла не знаю но яндекс API позволяет делать свои иконки, что то типа того

new_object.setOptions({
                                     iconLayout: 'default#image',
                                        iconImageHref: 'main/red_marker.png', // путь к иконке 
                                   
 })
вот пример моего плагина который берет адрес из тв, парсит ответ и записывает станции метро и округа (можно все что угодно) в ТВ параметры для дальнейшей фильтрации, сразу скажу, код ужасен но работает, если кто то поможет оптимизировать буду очень признателен

<?php
$tv = $modx->getObject('modTemplateVar',array('name'=>'street')); // Получаем значение всех ТВ
    $adres_value = $tv->getValue($id); // получаем id документа в котором находимся
    $adres_output = $tv->renderOutput($id);// рендерим содержимое ТВ
    
    $adress1=urlencode($adres_output);
	$url="http://geocode-maps.yandex.ru/1.x/?geocode=".$adress1."&kind=metro&results=200"; 
	$content=file_get_contents($url); // получаем страницу с координатами
	preg_match('/<pos>(.*?)<\/pos>/',$content,$point); // вырезаем нужные нам координаты
	$coordinaty=explode(' ',trim(strip_tags($point[1]))); 
 
	//координаты объекта
	
    $coords_xy = $coordinaty[0].','.$coordinaty[1];
    
    
    $metro ="http://geocode-maps.yandex.ru/1.x/?geocode=".$coords_xy."&kind=metro&results=200"; // тут мы формируем http запрос на сервер для получения xml с ответом с метро 
    $metro_xml = file_get_contents($metro);
   
    preg_match('/<PremiseName>(.*?)<\/PremiseName>/',$metro_xml,$metro_point); // вырезаем нужные нам координаты для метро 
    $metro_coord=explode(' ',trim(strip_tags($metro_point[1]))); 
    
    $okrug ="http://geocode-maps.yandex.ru/1.x/?geocode=".$coords_xy."&kind=district&results=1"; // тут мы формируем http запрос на сервер для получения xml с ответом с округом
    $okrug_xml = file_get_contents($okrug);
    
    preg_match('/<DependentLocalityName>(.*?)<\/DependentLocalityName>/',$okrug_xml,$okrug_point); // вырезаем нужные нам координаты для Округов 
    $okrug_coord=explode(' ',trim(strip_tags($okrug_point[1]))); 
    
    
    $resource->setTVValue('okrug',$okrug_coord[0].' '.$okrug_coord[1].' '.$okrug_coord[2] ); // записываем значение округа в ТВ шку 
    $resource->setTVValue('metro',$metro_coord[1].' '.$metro_coord[2].' '.$metro_coord[3] );// записываем метро в Твшку 
    $resource->save();
мне тоже интересно посмотреть компанент в работе, я не совсем понимаю его смысл, он просто показывает используемые чанки в конкретном ресурсе? не замедляет ли это работу админки?