Завършване на компонента за Joomla 1

На страниците на моя блог „Забавна уеб картография“ вече писах за компонента за поставяне на Yandex.Maps с помощта на системата за управление на съдържанието Joomla 1.5 „Компонент на Yandex Maps за Joomla 1.5“.

В тази бележка искам да говоря за това как този компонент може да бъде финализиран, за да използва Картата на хората.

Можете да изтеглите последната версия на компонента от тук

На първо място, трябва да свържем API модула, за да работим с People's Map.

Можете да направите това, като промените записа на ключа за достъп до API на Yandex.Maps за вашия сайт.

В контролния панел на компонента щракнете върху бутона Настройки, ще се появи прозорец за въвеждане на параметри

joomla

и веднага след ключа добавете символ & линията modules=pmap.

Нека обясня с пример, в полето „API ключ на Yandex Maps“ имахте ключа AJUUCU0BAAAAQVYRHAIAfAr-Yaqt5nsmIh6pdk-pjsdkESsAAAAAAAAAAADBa2Zj2yRPpn55P2bAHXh6J0zgGw==

Променяте го да изглежда така:

Сега трябва да позволим на потребителя да избере подходящите типове дисплей за картата на хората: NK-схема (YMaps.MapType.PMAP) и NK-хибрид (Ymaps.MapType.PHYBRID).

За да направите това, трябва да коригирате съдържанието на двата компонентни файла.

$option = array(0 => 'Няма', 1 => 'Типове карти по подразбиране', 2 => 'Нормална карта', 3 => 'Сателитна карта', 4 => 'Хибридна карта', 5 => 'Физическа карта', 7 => 'Типове карти по подразбиране (сателитна карта)', 8 =& gt;'Карта по подразбиране Типове (хибридна карта)', 9 => 'Типове карти по подразбиране (физическа карта)');

Този ред дефинира променливи за избор на типа на показване на картата и елементауправление за превключване на типа карта.

Добавете още два елемента от масива, разделени със запетаи 10 => 'YMaps.MapType.PMAP', 11 => „Ymaps.MapType.PHYBRID“.

В резултат потокът трябва да изглежда така:

$option = array(0 => 'Няма', 1 => 'Типове карти по подразбиране', 2 => 'Нормална карта', 3 => 'Сателитна карта', 4 => 'Хибридна карта', 5 => 'Физическа карта', 7 => 'Типове карти по подразбиране (сателитна карта)', 8 =& gt;'Карта по подразбиране Типове (хибридна карта)', 9 => 'Типове карти по подразбиране (физическа карта)', 10 => 'YMaps.MapType.PMAP', 11 => 'YMaps.MapType.PHYBRID');

Запазване на промените във файла form.php

И в него намираме редовете:

случай 9: $scriptheader .= 'map.addControl(new YMaps.TypeControl());' .н"; $scriptheader .= 'map.setType(YMaps.MapType.MAP);' .н"; прекъсване;

След тях добавете следния код:

случай 10: $scriptheader .= 'map.addControl(new YMaps.TypeControl([YMaps.MapType.PMAP, YMaps.MapType.PHYBRID]));' .н"; $scriptheader .= 'map.setType(YMaps.MapType.PMAP);' .н"; прекъсване; случай 11: $scriptheader .= 'map.addControl(new YMaps.TypeControl([YMaps.MapType.PMAP, YMaps.MapType.PHYBRID]));' .н"; $scriptheader .= 'map.setType(YMaps.MapType.PHYBRID);' .н"; прекъсване;

Запазете модифицирания файл default.php

Сега, когато задаваме параметрите на картата в административен режим в полето Control type, можем да изберем подходящите типове за картата на хората (Ymaps.MapType.PMAP - схема на картата на хората и Ymaps.MapType.PHYBRID - хибридна карта на хората), а при показване на картата на хората можем да превключваме между нейните типове.

Задаваме необходимите параметри за нашата карта, типа контрол Ymaps.MapType.PMAP, запазваме и създаваме връзка в менюто към нашата карта.

Зареждаме страницата в браузъра и наблюдаваме

joomla

Същото, но в хибридрежим

joomla

Също така би било хубаво да организирате търсене в Картата на хората, като използвате контролата Търсене в карта.

За да направим това, ще трябва също да модифицираме предварително коригираните файлове form.php и default.php.

Във файла form.php намираме реда echo YandexMapsRender::renderFormSelectBox('border', 'Search Maps', ", $this->item->border, $option, 1); и преди него променяме външния вид на линията

$option = array(0 => 'Не', 1 => 'Да');

$option = array(0 => 'Не', 1 => 'Да', 2 => 'NK');

Записваме файла form.php в UTF-8 кодировка.

И във файла default.php потърсете следния кодов фрагмент:

//търсене ако (isset($this->map->border) && (int)$this->map->border == 1)