Модификация компонента Закладки для работы с картами 1.5

+25
2.23K
Небольшая модификация компонента закладки от Fuze для карт версии 1.5+, Icms 1.8. Спасибо за идею vehuiah и AtlantisWeb за подсказки.
В plugin.php (от закладок) добавляем в блок switch ($event) пару строк:
  1. case 'GET_MAP_OBJECT': $item = $this->echoBookmark($item, 'map_object'); break;
  2. case 'DELETE_MAP_OBJECT': $item = $this->eventDeleteBookmark($item, 'map_object'); break;
, в функцию public function __construct()в том же файле, в соотв. местах тоже пару строк
  1. $this->events[] = 'GET_MAP_OBJECT';
  2. $this->events[] = 'DELETE_MAP_OBJECT';
Далее в frontend.php компонента закладок в блок switch ($target)добавляем
  1. case 'map_object':
  2. $item = $inDB->get_fields('cms_map_items i INNER JOIN cms_map_markers m ON m.item_id = i.id', "i.id = '$target_id'", 'i.id, i.title, m.marker, m.addr_city, m.addr_street, m.addr_house, m.addr_prefix');
  3. $description_photo = '<div class="con_image"><img src="/components/maps/images/markers/'.$item['marker'].'" /></div>';
  4. $item['description'] = $description_photo . nl2br($item['addr_city']).', '.nl2br($item['addr_prefix']).' '.nl2br($item['addr_street']).', '.nl2br($item['addr_house']);
  5. break;
Это выведет маркер объекта, город и адрес, можно выводить и фото, но если не у всех объектов есть картинки будет некрасиво. Далее в frontend.php компонента instantmaps после
  1. if ($do=='item'){
  2.  
  3. //если нет ссылки - ошибка
  4. if (!$seolink) { cmsCore::error404(); }
  5.  
  6. //получаем объект по ссылке
  7. $item = $model->getItemBySeolink($seolink);
вставляем вызов события:
  1. $item = cmsCore::callEvent('GET_MAP_OBJECT', $item);
Ну и напоследок добавляем базу данных в таблицу cms_event_hooks событие: в поле event — GET_MAP_OBJECT и в поле plugin_id — номер плагина закладок, посмотреть его можно там же в таблице, например по записи GET_SINGLE_CLUB или GET_FORUM_THREAD, у меня он был 17.
Вроде все:) Файлы выкладывать не стал, т.к. надеюсь что AtlantisWeb поделится решением для объявлений и каталога, тогда и скомпоновать все вместе.
-2
Suslik Suslik 13 лет назад #
а можно карты к клубам прикрутить?
0
RooKee RooKee 12 лет назад #
уже =)
0
Malanas Malanas 13 лет назад #
Спасибо все работает !!!
0
vgorode vgorode 13 лет назад #
+ на 1.6 работать будет?
0
googlebot googlebot 13 лет назад #
Будет, если вставите вызов события
Код PHP:
$item = cmsCore::callEvent('GET_MAP_OBJECT', $item);
в фронтенд компонента карт.
0
seyfer seyfer 12 лет назад #
Что-то я все вставил, эффекта не наблюдаю.

Карты последние, кмс 1.8.
0
seyfer seyfer 12 лет назад #
Запрос в базу забыл. Спасибо!
0
RooKee RooKee 12 лет назад #
2 сердца ))
0
st.Puh st.Puh 12 лет назад #
Поставил на двиг версия 1.9 работает прекрасно только вот проблема выводит по два сердечка в форуме и блоге а в фото и блог нормально.Может кто подскажет как исправить?
+1
st.Puh st.Puh 12 лет назад #
Ой извеняюсь,случайно два раза вывод вставил
0
bondar bondar 11 лет назад #
как правильно сделать запрос в базу??
0
googlebot googlebot 11 лет назад #
В phpmyadmin на закладке sql.
Если для закладок - никаких запросов не надо делать, просто выберите таблицу cms_event_hooks, и на вкладке обзор добавьте новую строчку...
0
googlebot googlebot 11 лет назад #
или примерно так:
Код PHP:
INSERT INTO `имя_базы`.`cms_event_hooks` (`id`, `event`, `plugin_id`) VALUES (NULL, 'GET_MAP_OBJECT', '17');
0
bondar bondar 11 лет назад #
спасибо

Еще от автора

Контекстные ссылки v2.2
Предистория тут и тут
Плагин "Контекстные ссылки" v2.1
Модификация плагина Марата версии 2.0 (с хаком /admin/applets/plugins.php) Основные отличия: 1.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.