Изменяем компонент каталога SOBI2 для Joomla, заменяем карты Google на Яндекс.Карты

Автор: | 09.08.2009

Для системы управления сайтом Joomla существует компонент бизнес-каталога SOBI2, в котором для показа месторасположения организации используются карты Google Maps.

Проблема в том, что мало городов России и Украины представлены на картах Google с детализацией до дома. И хотелось бы иметь возможность использовать Яндекс.Карты в место Google Maps.

Как это легко сделать я покажу Вам в этой заметке.

И так в начале, Вы должны скачать компонент и установить его на своем сайте, если он не был установлен.

На момент написания статьи доступна версия SOBI2 RC2.9.2.2 и загрузить ее можно по адресу http://www.sigsiu.net/download/components/sigsiu_online_business_index_2.html

Устанавливаем компонент и создаем необходимые категории и записи.

API используемые в Google Maps и Яндекс.Картах похожи и нам для перехода от использования одного к другому необходимо будет исправить всего два файла (можно ограничиться одним).

Для использования карт Google в праметрах отображения компонента SOBI2 существует вкладка Google Maps.

В режиме администрирования системы нужно выбрать компонент Sigsiu Online Business Index 2

На открывшейся странице в левой колонке выбрать ссылку Параметры (), а затем Параметры отображения ().

На странице выбрать вкладку Google Maps.

Мы увидим форму следующего содержания (если у Вас компонент русифицирован):

Окно SOBI2 Параметры отображения - Google Maps

Здесь в принципе все понятно без пояснений.

Единственное, что для использования Яндекс.Карт необходимо в поле API ключ ввести соответственно ключ к API Яндекс.Карт для вашего домена.

И поменять местами поля для хранения значений широты и долготы карты.

Тип поля – Скрытое.

Первое значение – долгота (Longitude) поле filds_latmap и второе – широта (Latitude) поле filds_lonmap.

Если Вы хотите поменять текстовое описание в форме, то это можно сделав отредактировав следующие файлы:

— для русифицированной версии файл admin.russian.php, расположенный по адресу Папка сайта/ administrator/components/com_sobi2/languages/

— для английской версии файл admin.english.php, расположенный там же.

Нужно поиском найти текст, который необходимо заменить и ввести новый.

Теперь переходим к главному этапу.

В папке установки вашего сайта находим каталог по адресу /components/com_sobi2/includes/ нужно найти файл entry.functions.php.

Его мы будем изменять.

Открываем его для редактирования.

Находим в нем функцию showGoogleMaps, самая последняя в файле.

Она отвечает за вывод карты при просмотре полного описания информации о компании, если введены координаты центра в соответствующие поля (filds_latmap и filds_lonmap).

И заменяем весь код в функции между строчками

    function showGoogleMaps($mySobi, $config)
    {

и

    }
    function waySearchUrl( $waySearchLink )

На новый код:

if( !$config->useGoogleMaps || !isset( $config->googleMapsApiKey ) ) {
			return null;
		}
		$map_url = "http://api-maps.yandex.ru";
		$map_api_version = "1.0";
 
		$title = $config->jsAddSlashes( $mySobi->title );
		$GeoPos = $config->getGeoPosition( $mySobi->id );
		if( $GeoPos['lat'] && $GeoPos['long'] && is_numeric( $GeoPos['lat'] ) && is_numeric( $GeoPos['lat'] ) ) {
			?>
 
						<script src="<?php echo $map_url?>/<?php echo $map_api_version?>/?key=<?php echo $config->googleMapsApiKey ?>" type="text/javascript"></script>
						<script type="text/javascript">
				//<![CDATA[
				window.onload = function init () {
            var map = new YMaps.Map(document.getElementById("YMapsID"));
            map.setCenter(new YMaps.GeoPoint(<?php echo $GeoPos['lat']; ?>, <?php echo $GeoPos['long']; ?>), <?php echo $config->googleMapsZoom;  ?>);
 
var placemark=new YMaps.Placemark(new YMaps.GeoPoint(<?php echo $GeoPos['lat']; ?>, <?php echo $GeoPos['long']; ?>));
	map.addOverlay(placemark);
	placemark.openBalloon('<div style="text-align:center; width: 200px; "><strong><?php echo $title; ?></strong></div>'); 
 
 
map.addControl(new YMaps.SmallZoom());
 
        };
 
 //]]>
</script>
 
  <div style="width: <?php echo $config->googleMapsWidth; ?>px; height: <?php echo $config->googleMapsHeight; ?>px;" id="YMapsID"></div>
 
<?php
		}
		elseif ( ( strlen( trim($GeoPos['lat'] ) ) && strlen( trim( $GeoPos['long'] ) ) ) && !is_numeric( $GeoPos['lat'] ) || !is_numeric( $GeoPos['lat'] ) ) {
			trigger_error("HTML_SOBI::showGoogleMaps(): Given cooordinates ({$GeoPos['lat']}, {$GeoPos['long']}) are not correct. Please enter float values");
		}
    }

Сохраняем измененный файл.

Задаем значение полей долготы и широты для какой либо организации и наблюдаем результат:

Пример отображения местоположения SOBI2 - Яндекс.Карты

Посмотреть пример в действии

Изменяем компонент каталога SOBI2 для Joomla, заменяем карты Google на Яндекс.Карты: 21 комментарий

  1. life

    А как ты ставил сам SOBI2
    во всех мануалах советуют не использовать FTP мод.
    А как же иначе его засетапить?

    1. admin Автор записи

      Я с начала конфигурировал каталог SOBI2 и наполнял данными на локальной машине. Затем на сервере установил компонент SOBI2 стандартным образом в Joomle. После этого с использованием PhpMyAdmin обновил содержание таблиц категорий и данные полей.

  2. klin

    Спасибо за статью! все работает, кроме одного момента… по аналогии с SOBI2+GoogleMaps, хотелось бы, чтобы при размещении пользователем информации в каталоге, он мог указать на Яндекс.карте место, получив в поля input field_latmap и field_lonmap координаты точки. Будет ли продолжение статьи SOBI2 + Яндукс.Карты?

    Еще раз Большое спасибо за эту статью!

  3. Серик

    Просьба выложить или прислать на мыло весь отредактированый файл, тк мешают кривые ручки или что-то еще (Предупреждение Этот шаблон включает в себя несколько JavaScripts, которые могут конфликтовать с MooTools библиотеки. SOBI2 поиска функция может не работать должным образом.: mootools)вываливается на стадии входа в каталог

  4. Сергей

    Здравствуйте! А возможно сделать так, чтобы координаты автоматически определялись по адресу?

    И как сделать так, чтобы карта была внизу, сейчас она у меня выводится вверху

  5. Емельян

    Здравствуйте!
    подскажите пожалуйста
    как сделать так, чтобы карта была внизу, сейчас она у меня выводится вверху
    icq 589-119-638

    1. admin Автор записи

      Да, возможно. Нужно поправить функции осуществляющие вывод карты: getFormDisplay, getDetailsDisplay

  6. Alexbek

    После вышеописанных манипуляций на странице с картой появляется сообщение «Невозможно использовать ключ Google Api для этого сайта». В чем может быть дело? PHP файл подправил и ключ яндекса вбил.

  7. Василий

    А можете написать как сделать чтобы яндекс карты были в adsmanager???? интересует что куда вставить. Помогите ооочень надо

  8. Игорь

    Можно ли сделать не стандартную, а народную карту?

    1. admin Автор записи

      Нужно сделать два действия:
      1. Добавить подключение модуля Народной карты к ключу API.
      2. Добавить необходимый тип для Народной карты (Схема или Гибрид).
      Если необходимо напишу заметку по этому вопросу.

  9. Игорь

    Можно сделать карту или добавление координат (с добавлением ссылки на карту) в виртумарте?
    Думаю это многих заинтересует..

  10. Станислав

    Спасибо за инструкцию — очень полезная штука, но у меня почему-то не получилось.
    сделал все как описано выше, после замены
    разделы соби на жумле вообще не загружаются, в исходном коде страницы только это
    «
    аЅаАб�б�аКаОаВ

    »
    и все, т.е. белый экран и надпись в непонятной кодировке.
    Соби — 2.9.3.2 , жумла — 1.5.22, установлен модуль SOBI2 Geo Category Overview.

    все делал по инструкции,
    потом скачал ваш исправленный файл entry.functions.php, и перезалил — заработало.
    может версии соби разные и поэтому не работало?

  11. Сергей

    Пытался показывать карту через модальное окно Mootools..
    Показывается рамка, элементы, но непосредственно карты (топографии) не видно. Только серый фон.. (

    Кто сталкивался ?

  12. mikl1603

    Скажите пожалуйста, не могли бы Вы заменить гугл карту на яндекс карту в компоненте Improve My City . Можно за денежку, можно за ссылки и слова благодарности на сайтах.
    Спасибо.
    С уважением, Михаил

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *