Mappy - простое добавление карт на сайт.

Аватар пользователя Niklan

 Mappy - модуль, который позволяет вставлять карты на сайт при помощи простого html-тега, либо фильтра для текста.

ВложениеРазмер
Иконка пакета Модуль4.84 КБ
Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя q2_faith
q2_faith 5 лет назад

подпишусь)

Аватар пользователя igor701
igor701 5 лет назад

Ага, прикольно!

Аватар пользователя josgir
josgir 5 лет назад

Пару точек может отрисовать?

Аватар пользователя Niklan
Niklan 5 лет назад
josgir написал:

Можно сделать, вообще никаких проблем.

Аватар пользователя josgir
josgir 5 лет назад
Niklan написал:

Было бы здорово. Могу даже посильный вклад (в т. ч. и денежный) в разработку модуля.
Было бы здорово, если можно было по списку адресов отрисовывать в карте несколько точек, хотя бы 10 шт, (на сколько я понимаю в этом вопросе, если слишком много точек, то геотаргетинг будет подтормаживать и нужно будет один раз прогнать по адресу и получить координаты).
Я начал делать на основе multiGeocoder, там есть возможность задавать такие данные multigeocoding, но у меня не кастомный вариант.

Аватар пользователя Lotar
Lotar 5 лет назад

Акцептую

Аватар пользователя Niklan
Niklan 5 лет назад

Добавил поддержку множественных адресов.

Пример (адреса разделяются ";" - точкой с запятой):

<mappy:yandex address="г. Пермь, ул. Пермская 200; г. Пермь, ул. Крисанова 16" zoom="14" width="640" height="480"></mappy:yandex>

Аватар пользователя josgir
josgir 5 лет назад

Никита! Крутяк, ващЕ!:)

Аватар пользователя graker
graker 5 лет назад

Толково!

А тексты в баллунах редактируются?

Пожелание: если можно, ссылку на страницу модуля поднять бы над картинками с примерами. В идеале бы и картинки под кат убрать - но это уж хозяин-барин :)

Аватар пользователя Niklan
Niklan 5 лет назад
graker написал:
А тексты в баллунах редактируются?

Когда добавляется балун по одному адресу, то там вообще ничего нету.
Когда добавляется по множеству адресов, то там адреса по которым они расположены.

Можно добавить возможность добавлять в балун текст, когда он один, но вот в чем задача. Как туда его передавать. Можно также в атрибуте, например placemark_text="trattat", но тогда без html. Такое сделать вообще не проблема.

Еще балуны которые появляются при построении маршрута, думаю также вынести в атрибуты.

graker написал:
Пожелание: если можно, ссылку на страницу модуля поднять бы над картинками с примерами. В идеале бы и картинки под кат убрать - но это уж хозяин-барин :)

поправил.

Честно говоря, я еще ищу метод вставки кода, который был бы и удобен для обычных пользователей. Те. сохранял простоту вставки, но был бы удобен для передаче параметров. Этот хорош, но в нем не передать HTML, как я уже написал. Ведь в балунах можно его использовать.

P.s. также хотел и гугл туда впилить сразу, но что-то скрин у дриса заставил притормозить коней. Там написано что скоро состоится тестирование новых карт гугла, поэтому я не уверен что там будет с API

Аватар пользователя Niklan
Niklan 5 лет назад

Добавил гугл карты. Пока по одному адресу. У него API очень капризное.
Гугловский JSAPI подключается постоянно, но реально сработает только по запросу карты, так что на счет загрузки не волнуйтесь.

Также перенес доки в Wiki гитхаба.
Документация по Google.Maps
Документация по Yandex.Maps

kosHta написал:

Оптимизация негодуэ... api-maps.yandex...fix=ymaps2_0_29 имеет размер запроса 2.0KiB Жалуется на повышенные запросы Яндекса,

эм, я никак на яндекс повлиять не могу.

kosHta написал:
хотя карте указана одна страница, главная правда - время загрузки страницы(главной) увеличилось

Не понял. Подробнее можно? А так, яндекс сервисы сами по себе грузят сайт. Посмотрите на анализ скорости сайта в Pingdom с метрикой и без, вы охереете.

kosHta написал:
ещё сумбурная каша с пробками, не очень корректно при размере 300-250

Опять же, отрисовываю не я а яндекс.

По факту этот модуль всего лишь обертка для API карт для более простого взаимодействия. Ну нужно подключать JS, не нужно разбираться в API. Очень удобно для тех кто вообще не знаком с JS, а немного кастомизировать карту хочется. Вот для таких целей модуль и создавался. Также например быстро вставить карту с меткой офиса без темизации и прочих мудреностей. Кому надо гибкость, тому придется разбираться с конкретным API. Сейчас читал у google.Maps, там писец чо делать можно с ними.

Аватар пользователя josgir
josgir 5 лет назад
Niklan написал:
Можно добавить возможность добавлять в балун текст ... Можно также в атрибуте, например placemark_text="trattat", но тогда без html. Такое сделать вообще не проблема.

Для нескольких адресов в балуны можно добавлять простой текст, причем чтобы на каждую метку был свой текст?

Аватар пользователя Niklan
Niklan 5 лет назад

Получил возможность публиковать модули на дорг,  mappy. Собственно теперь качайте оттуда.

kosHta написал:
Потащил модуль к себе, админка ругнулась "Mappy уже установлен."))

В смысле? Если был скачан с гитхаба, лучше переустановить, теперь я его официально на д.орг скинул. А друпал ставит свои метки на модули которых нету в гитхабе.

P.s. напоминаю и разъясняю. Модуль создан для простой вставки карты, с каким-то базовыми параметрами, все. Это не API для API, тут нет и не будет сложных возможностей, ввиду того что это неразумно. При потребностях чего-то сложного лучше учить напрямую API.

Аватар пользователя oksoft
oksoft 5 лет назад

спасибо

Аватар пользователя Niklan
Niklan 5 лет назад

Добавил возможность вставки текста в балуны.
Изменились почти все аттрибуты для Yandex.Карт. Дока

Пример:

<mappy:yandex address="Пермь, пермская 200; Пермь, крисанова 16" zoom="17" width="720" height="480" balloonContent="Для <br><strong>пермской</strong>; Для крисанова"></mappy:yandex>

Ага, html тоже жрет.

В течении 12 часов изменения станут доступны на Drupal.org. Когда модуль обновится у него будет 4 или 5 июня (дата изменения), а сейчас 31 мая (у модуля, разумеется).

Аватар пользователя Niklan
Niklan 5 лет назад

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

Дока: https://github.com/Niklan/mappy/wiki/ru_Google.Maps

Пример:

<mappy:google address="г. Пермь, ул. Крисанова 16; г. Пермь, ул. Крисанова 18А" zoom="17" width="720" height="480" addressPlacemark="true" balloonContent="Это для крисанова 16; Для крисанова <u>18А</u>"></mappy:google>

Аватар пользователя josgir
josgir 5 лет назад

Были проблемы с zoom_control, новая версия я посмотрел в yandex.mappy.js использует zoomСontrol,
хром атрибуты внутри тега yandex переводит в нижний регистр, а джава чувствительна к регистру. Поменял в yandex.mappy.js zoomСontrol на zoomcontrol в строчках 124 и 125, все заработало.
Маленький скролл, маршруты, и пробки не тестировал не смотрел.
И еще, если вставлять в текст ноды в FullHTML, то подходит как у тебя в описании , если вставлять в шаблон то, такая конструкция не прокатила, прокатила «.»
Все остальное работает на ура, балун воспринемают HTML.
Очень получалась гибкая система. Делаю так через views_get_view_result делаю array, задаю адреса, задаю текст балуна, через foreach. Затем вывожу где нужно. Вообщем - огромное спасибо!!!

Аватар пользователя Niklan
Niklan 5 лет назад

Версия хрома какая?
У меня работает на:
Chrome: Версия 26.0.1410.63
Chromium: Версия 25.0.1364.160 Ubuntu 13.04 (25.0.1364.160-0ubuntu3)
FireFox: 21
Opera: 12.15 1748

josgir написал:
И еще, если вставлять в текст ноды в FullHTML, то подходит как у тебя в описании , если вставлять в шаблон то, такая конструкция не прокатила, прокатила .

Разумеется, Drupal прочищает его. Скорее в нем проблема нежели в браузере. Я тестирую через FullHTML и в других не смотрел, надо будет глянуть.

Аватар пользователя josgir
josgir 5 лет назад

Google Chrome 26.0.1410.64 m

Аватар пользователя josgir
josgir 5 лет назад

В Full HTML работает <mappy:yandex ...>»
В tpl работает <yandex ...

Аватар пользователя Niklan
Niklan 5 лет назад

Ну браузер подчищает mappy и вставляет то что после двоеточия. Так что в tpl также должно проканать mappy:yandex По факту можно ставить вообще чисто <yandex .. > и также прокатит. Вообще я хз что за метод написания тега такой с дветочием, но я пошел по пути как делает гугл и фейсбук такие теги. Точного описания не нашел. Разве что у книгилиц он называется FBML.

А что с фильтром друпала делать не придумал. По сути как раз для этого FullHTML и нужен, чтобы такие теги вставлять, ибо ими можно норм накосячить на сайте.

Аватар пользователя iNFerNo
iNFerNo 5 лет назад

А как вставлять код в в комментах??? Не выводит нифига.

А чтобы как поле было что бы там адрес набивать и всё?

Аватар пользователя josgir
josgir 5 лет назад
iNFerNo написал:
Как вставлять то код. Во всех текстовых форматах попробовал и в комментах им в нодах. Не выводится карта.

У меня на drupal 7.21 и кучей модулей тоже не запускалось. Поставил 7.22 чистый появились карты. Не разбирался почему и с чем конфликты были. Возможно из-за того что я до этого напрямую ставил карты яндекса, и подключал скрипты свои, не знаю. Нужно смотреть конкретно может какие-то модули конфликтуют - не разбирался:)

Аватар пользователя iNFerNo
iNFerNo 5 лет назад

Да и как правильно значения заполнять я например ввел г.Москва свою улицу дом...

показало только москву

Аватар пользователя josgir
josgir 5 лет назад

Да, реально, если указать один объект то, не отображает метку, если указать через ";" второй адрес, то нормально работает

Аватар пользователя Niklan
Niklan 5 лет назад
iNFerNo написал:
А чтобы как поле было что бы там адрес набивать и всё?

Для этого есть geofield

iNFerNo написал:
Да и как правильно значения заполнять я например ввел г.Москва свою улицу дом...
показало только москву

Может ошибка в адресе.

josgir написал:
Да, реально, если указать один объект то, не отображает метку, если указать через ";" второй адрес, то нормально работает

Ага, есть в яндексе такой баг. Сейчас поправлю.

UPD. Поправил но из-за такой мелочи пока не буду пушить на д.орг. Может еще чего найдется или сделаю.

Кому надо можно просто открыть файл yandex.mappy.js
В 104 строке заменить

if (address.length > 1) {

на

if (address.length > 0) {
Аватар пользователя iNFerNo
iNFerNo 5 лет назад

Норм теперь.

а geofield - там тоже гугл и яндекс?

Аватар пользователя Niklan
Niklan 5 лет назад
iNFerNo написал:
а geofield - там тоже гугл и яндекс?

Хз не пробовал, но его использует для тех целей что вам надо.

Аватар пользователя iNFerNo
iNFerNo 5 лет назад

Не, там фигня. Какая та. яндекс филд мапс лучше

Аватар пользователя Niklan
Niklan 5 лет назад
iNFerNo написал:
Не, там фигня. Какая та. яндекс филд мапс лучше

Раз такое есть зачем мне это же делать =\

Аватар пользователя iNFerNo
iNFerNo 5 лет назад

логично

Аватар пользователя Niklan
Niklan 5 лет назад

Сделал стабильную версию.  Mappy
Должна работать железно.

Аватар пользователя Lotar
Lotar 5 лет назад

Ай да малаца ты Никлан. Даже документацию сделал. Держи пять. Но вот кнопки контроля зума никак не хотят появляться. Зато остальное работает.

Аватар пользователя Niklan
Niklan 5 лет назад
Lotar написал:
Ай да малаца ты Никлан. Даже документацию сделал. Держи пять. Но вот кнопки контроля зума никак не хотят появляться. Зато остальное работает.

Спасибо на добром слове. У какой карты не появляются кнопки зума? У гугла просто через true\false управление, а у яндекса появляется при указании координатов.

Аватар пользователя Lotar
Lotar 5 лет назад

Яндекс карты добавил себе. zoom_control="20,50" или смол зум пробую. Даже тупо пример от сюда https://github.com/Niklan/mappy/wiki/ru_Yandex.Maps копирую кнопари не появляются.

Аватар пользователя Niklan
Niklan 5 лет назад
Lotar написал:

zoomControl="20,50"

Я примеры не обновил, а атрибуты у яндекс карт вообще полностью перелопачены. В таблице актуальные.

Аватар пользователя Niklan
Niklan 5 лет назад

Ща разберусь.

Аватар пользователя Niklan
Niklan 5 лет назад

Так, один косяк нашел. В гуглокартах надо юзать не zoomControl а zoom_control. Хз, замохал закоммитить видимо.

kosHta написал:
Контакты Раньше ползунок был и работал(до выхода модуля в свет)

Код который вставляете, у меня в блоках все пашет.


Аватар пользователя Niklan
Niklan 5 лет назад
kosHta написал:
Кэш чистить надо на сайте при переинсталляциях.

угумс

Аватар пользователя Niklan
Niklan 5 лет назад
kosHta написал:
Всплыл Гугловсий косяк, его величество игнорирует отрисовку карт населённых пунктов менее 6000 чел... Здравствуй Яндекс!

Гугл вообще слабо в россии развит. Например в позапрошлом году в моем городе им пользоваться было вообще нереально. Сейчас же, он знает больше яндекс и умнее, удобнее и правильнее. Но все равно дома некоторые дворовые не определяет, хотя яндекс тем же грешит в моем городе.

Аватар пользователя josgir
josgir 4 года назад

Понадобилось мне в Яндекс карте, чтобы центр карты был в месте отличном от первого адреса, и чтобы метка не выводилась, сделал так: в файл yandex.mappy.js после строчки
var address = $("yandex").attr("address").split(";");
Добавил условие наличия тэга centerAddress

if (void 0 === $("yandex").attr("centerAddress")){//Проверка есть ли атрибут centerAddress
                var center_address = address;//если атрибута нет, то центром карты будет первый адрес в строчке address
        }
        else{
                var center_address = $("yandex").attr("centerAddress").split(";"); //если атрибут есть, то берем из этого атрибута
        }

После этого меняем строчку

на

 url: 'http://geocode-maps.yandex.ru/1.x/?format=json&geocode=' + center_address[0] + '&result=1',

Код вывода карты получился следующий (93.47, 66.46 - это приблизительные координаты географического центра России)

<yandex zoomControl="20,50" centerAddress="93.47, 66.46" address="Томск; Москва " addressplacemark="true" ballooncontent="Томск; Москва" height="300" width="640" zoom="2" >
</yandex>
Аватар пользователя Boozenok
Boozenok 4 года назад

на заметку

Аватар пользователя Niklan
Niklan 4 года назад

В dev добавлена версия для Drupal 8.

В обозримом будущем добавлю функционал построения маршрута на гуглокартах. Уже готов, надо до ума довести.

Аватар пользователя Niklan
Niklan 4 года назад
drupby написал:
$(document).ready(function() {});
эквивалентен
$(function() {})(jQuery);
http://api.jquery.com/ready/


спасибо, не знал

Аватар пользователя josgir
josgir 4 года назад
Niklan написал:

А кластеризацию для Яндекс.карт можно добавить?

Аватар пользователя Niklan
Niklan 4 года назад
josgir написал:

Почитаю на досуге. В приоритете Гуглокарты. ИМХО качественнее, уже точны не хуже яндекса в большинстве регионов, функционал выше, быстрее, мощнее и т.д. и т.п. А еще WebGL версию API вроде как пилят.

Аватар пользователя josgir
josgir 4 года назад
Niklan написал:
Почитаю на досуге. В приоритете Гуглокарты. ИМХО качественнее, уже точны не хуже яндекса в большинстве регионов, функционал выше, быстрее, мощнее и т.д. и т.п. А еще WebGL версию API вроде как пилят.

Если будут кластеры для Гуглокарты еще лучше даже.

Аватар пользователя Dalay
Dalay 4 года назад
/**
 * Implements hook_page_build().
 */

function mappy_page_build(&$page) {
...

Зачем для всех страниц загружать скрипты? Это не серьезно. Хотя бы в виде фильтра надобно сделать или поля.

Зачем нужна в коробке модуля папка inc и пустой файл в ней?

пс
Предыдущие комменты не читал. Если эти вопросы уже задавались, то извиняюсь.

Аватар пользователя josgir
josgir 4 года назад

Для яндекс не разобрался как делать кластеры, но для гуглокарты сделал:
Версия mappy у меня 7.x-1.1+0-dev, не обновлял и не смотрел чем отличается от последней версии, но думаю Никита включит в новую версию эту правку с учетом всех изменений:
вот что добавил:

var balloonContent = ($("google").attr("balloonContent")) ? $("google").attr("balloonContent").split(";") : false;
+//добавляем атрибут для включения кластеров
+ var clustersOn = $("google").attr("clustersOn") == "false" ? false : true;

...
// Add markers on the map.
            if ($("google").attr("addressPlacemark") != "false") {
+ var markers = [];
...
// Add balloon with content.
                    function addInfoWindow(marker, message) {
...
}
addInfoWindow(marker, placemarkContent);
+ markers.push(marker);
}
+//If cluster On
+                               if ($("google").attr("clustersOn") == "true"){
+                                       var markerCluster = new MarkerClusterer(map, markers);
+                               }
}
                       
                }
               
    }});
})(jQuery);

Аватар пользователя Niklan
Niklan 4 года назад
Dalay написал:

Зачем нужна в коробке модуля папка inc и пустой файл в ней?

Да надо бы вычестить грязь.

josgir, спасибо, разберусь. Если ваш код пашет, я в дев ветку пушну его. Если есть аккаунт на Drupal.org то укажите его. Я сделаю пуш от вашего имени.

Аватар пользователя josgir
josgir 4 года назад
Niklan написал:
Если ваш код пашет, я в дев ветку пушну его.

Как проверите отпишитесь, могу скинуть полностью файл, а то вдруг при наборе текста что-нибудь упустил.

Niklan написал:
Если есть аккаунт на Drupal.org то укажите его. Я сделаю пуш от вашего имени.

это не обязательно, в принципе, но если что ник на д.орге josgir.

Аватар пользователя Niklan
Niklan 4 года назад

Кластеризация для Google Maps добавлена в дев 7.x и 8.x

<mappy:google address="г. Пермь, крисанова 16; г. Пермь, крисанова 18Б" clusters="true" height="480" width="720" zoom="17"></mappy:google>

Аватар пользователя Niklan
Niklan 4 года назад
Dalay написал:
Зачем для всех страниц загружать скрипты? Это не серьезно. Хотя бы в виде фильтра надобно сделать или поля.

А что в данной реализации плохого? Там грузится JS размером 1кб. Остальные скрипты подгружаются по мере необходимости, т.е. когда на странице найден тег.

Аватар пользователя Dalay
Dalay 4 года назад
Niklan написал:
А что в данной реализации плохого? Там грузится JS размером 1кб. Остальные скрипты подгружаются по мере необходимости, т.е. когда на странице найден тег.

Тут, минимум, два момента.

1. Еще забыли про https://www.google.com/jsapi. Но дело даже не в этом. А в том, что этот ненужный код еще и ВЫПОЛНЯЕТСЯ на каждой, без исключения, странице. Еще и учитывая, что выборка организована не самым лучшим образом:

if ($("body *").is(...) // Будет проверяться КАЖДЫЙ дочерний элемент body.

2. Теперь представьте, что среди модулемейкеров не Вы один с таким подходом.

Аватар пользователя jsv
jsv 4 года назад

Полезная штука

Аватар пользователя Niklan
Niklan 4 года назад
Dalay написал:

Ваши предложения по данному поводу.

Аватар пользователя Dalay
Dalay 4 года назад
Niklan написал:
Ваши предложения по данному поводу.

Чутка подтянуться по JS.

Ну и то, что уже постил выше: оформить функционал модуля в виде фильтра или кастомным полем. То, что есть сейчас, оптимальнее реализовывать внутри темы, не модулем.

Аватар пользователя Niklan
Niklan 4 года назад
Dalay написал:
в виде фильта

не понял

Dalay написал:
кастомным полем

зачем? Гибкость пропадает сразу же.

Аватар пользователя Dalay
Dalay 4 года назад
Niklan написал:

не понял

Фильтра, виноват.

Niklan написал:
зачем? Гибкость пропадает сразу же.

) Да тут, какбы, все от Вас зависит, целиком и полностью. АПИ знатное. На крайняк - экстра-полем.

Niklan написал:
Суть простая, вы вставляете HTML код с нужными параметрами, а на его месте появляется карта. Все просто.

)

Аватар пользователя Niklan
Niklan 4 года назад
Dalay написал:
Фильтра, виноват.

Хм... очень интересно, почитаю на досуге. Если это то, что я понял с беглого взягляда, то да, это крутой способ. Но он же в фильтре, а что делать если человек хочет в тему влепить напрямую?

Да и учитывая что все крутиться вокруг JS, логичнее всего делать на нем же.

Аватар пользователя Dalay
Dalay 4 года назад
Niklan написал:
Хм... очень интересно, почитаю на досуге. Если это то, что я понял с беглого взягляда, то да, это крутой способ. Но он же в фильтре, а что делать если человек хочет в тему влепить напрямую?

Да и учитывая что все крутиться вокруг JS, логичнее всего делать на нем же.

И про поля обязательно почитайте, там еще все интересней. На случай, если человек захочет в тему влепить напрямую, Вы ему такую возможность должны предоставить. И тут тем более напрашивается поле.

Аватар пользователя Niklan
Niklan 4 года назад

Вопрос к Dalay.

Кароче сел и решил сделать фильтром. Все разобрался, но я не понял участия фильтра в этом. Суть то в чем? Ну могу я подменить что на что мне надо. Но код карты генерирует JS API карт гугл и яндекс, тут как не верти и не крути все на JS завязано, никак вообще шаг в сторону не сделать.

Разве что ловить фильтр и где найдет цеплять JS, но не проще ли тогда мне допилить JS которая подключает остальные по необходимости, нежели воротить непонятно что.

Аватар пользователя Dalay
Dalay 4 года назад
Niklan написал:
Вопрос к Dalay.

В чем вопрос? Я не знаю, Никита, кому-чего проще.) Мое мнение о реализации написано выше, но не обломаюсь повториться: в настоящем своем виде модуль, как модуль Друпал, совершенно ниочем. Более того - Друпал ему совсем не нужен.

Если нужны какие то конкретные ответы, то задавай конкретные вопросы.

Аватар пользователя Niklan
Niklan 4 года назад
Dalay написал:

Ну вобщем я и задал. Зачем это делать фильтрами? Что это даст? Принципиальное отличие какое? Все завязано на JS яндекса и гугла, ну выловлю я фильтрами свой тег, дальше то что, я его ни на что не могу заменить, его меняют JS'ки карт.

Никто и не заставляет модуль как модуль друпала юзать, спокойно подключается и standalone на нужной странице.

Аватар пользователя Dalay
Dalay 4 года назад
Niklan написал:
Ну вобщем я и задал. Зачем это делать фильтрами? Что это даст? Принципиальное отличие какое? Все завязано на JS яндекса и гугла, ну выловлю я фильтрами свой тег, дальше то что, я его ни на что не могу заменить, его меняют JS'ки карт.

Зачем делать фильтром - это лучше самого себя спросить. Про фильтры мною было упомянуто среди прочих вариантов.

Ну фильтр, так фильтр. Судя по предыдущему монологу с этим моментом ты тоже что-то не догнал. Суть работы фильтра состоит в поиске определенных токенов/меток с их последующей заменой на произвольное значение.

Пример токена: [mappy:yandex (опционально атрибуты, если нет, то используются заданные по-умолчанию в настройках фильтра)]. Далее, при нахождении токена в теле текста(при сохранении), происходит его обработка и замена на все-чего-угодно с аттачем нужных файлов.

Нафиг оно надо, если можно тупо вставлять в текст уже готовый html-код:
1. Более лаконичный код токена супротив html-каши.
2. Есть возможность задавать некие дефолтные настройки.
3. Нет надобности при постоянно копипастить html-обертки с нужными классами и идентификаторами. То бишь, ответственность за корректный ввод с плеч пользователя перекладывается на обработчики, реализованные в модуле.
4. При каких-либо изменениях в синтаксисе тегов вызова карты со стороны map-сервиса нет надобности искать и править html-код везде, куда его уже влепили. Надо будет всего лишь внести коррективы в код обработчика.
5. Появляется повод избежать говнокодерства. Начиная с 7-ры, в Друпале принято подключать js/сss-файлы сторонних скриптов регистрацией соответствующих библиотек. С последующим их вызовом через drupal_add_library(), а не через getScript в js-файлах модуля. Кстати, единственная функция, реализованная в модуле (mappy_page_build()) не нужна совершенно: подобные подключения делаются через module.info.
6. В продолжении п. 5. Возможность подключать необходимые файлы только на тех страницах, где они реально нужны, а не на всех без исключения.

Аватар пользователя Niklan
Niklan 4 года назад
Dalay написал:
Пример токена: [mappy:yandex (опционально атрибуты, если нет, то используются заданные по-умолчанию в настройках фильтра)]. Далее, при нахождении токена в теле текста(при сохранении), происходит его обработка и замена на все-чего-угодно с аттачем нужных файлов.

Это я понял.

Попробую из фильтров подкиывать JS'ку.

Аватар пользователя Niklan
Niklan 4 года назад

Весь Drupal.org перерырыл, ибо встал на те грабли, которые я в принципе и ожидал.

Dalay написал:
Возможность подключать необходимые файлы только на тех страницах, где они реально нужны, а не на всех без исключения.

Как это делается на основе фильтров? Как определить что на странице использован был фильтр?

Фильтр объявил.
Библиотеку объявил.

Но на каком этапе подключается drupal_add_library?

Аватар пользователя Niklan
Niklan 4 года назад
Dalay написал:

Ты на drupal.org искал мануал по работе с регулярными выражениями?

Не мучайся. Возьми за образец, почти идентичный функционал.

Т.е. при каждой загрузке страницы мне регуляркоми искать код? А чем тогда это лучше подключения JS? JS хотябы на стороне клиента выполняется.

А код того модуля я прочитал, и не его одного. Я говорю, загвоздка лишь в том, чтобы подключить JS на нужной странице, а именно, на странице где сработал фильтр. Они никак абсолютно не помечаются. А по поводу регулярок абзац выше.

P.S. Да фильтры это круто. Но на данном этапе, я не могу понять принципиальной разницы. Это всеравно что менять шило на мыло. Ну не будет JS на каждой странице подключаться, но зато будет регулярками искаться код, а потом всеравно подлючаться JS'ка (если найдено конечно). Но ведь по факту подключить JS намного проще в плане нагрузки, чем регулярками разгребать. И в итоге всеравно весь код отрабатываться в JS будет. Я не смогу на стороне сервера генерировать карту, так или иначе код всеравно придется кормить JS'кам.

Аватар пользователя Dalay
Dalay 4 года назад
Niklan написал:
Т.е. при каждой загрузке страницы мне регуляркоми искать код? А чем тогда это лучше подключения JS? JS хотябы на стороне клиента выполняется.

Зачем "регулярками искать код" на каждой странице то, только при сохранении текста.)) Давай ты уже соберешься с силами и освоишь суть работы фильтров до конца и самостоятельно.

Niklan написал:
А код того модуля я прочитал, и не его одного.

Значит дело теперь за малым - понять "прочитанное".)

Аватар пользователя Niklan
Niklan 4 года назад
Dalay написал:
Зачем "регулярками искать код" на каждой странице то, только при сохранении текста.))

Мне кажется я никак не могу донести суть своих слов.

Я сделал фильтр, который ищет нужный мне тег, потом его подготоваливать и процессит. Заменят на то что мне нужно. Это я понял и сделал.

Я спрашиваю, как подключить JS на той странице, где отработал фильтр. Через preapre и process код выполняется единожды и кешируется, соответственно там drupal_add_library сработает единожды, при сбросе кеша содержимого (которые отдельно от кэша страниц). В лучшем случае раз в сутки без сброша кеша будет подключатсья JS'ка у первого кто посетит страницу в момент его сброса. Остальные же ничего не увидят. А страницы где я фильтром заменил, никак не помечены этим, что именно тут сработал ткаой фильтр. Поэтому исходя из предложений, тут единственный логичный выход регулярками искать код при загрузке страницы.

Аватар пользователя Niklan
Niklan 4 года назад
Dalay написал:
Заменяй токен на рендер-массив, к нему лайбы и приаттачиш.

Получилось, но опять же, как я и писал. Она подключается после обработки. Потом кешируется и JS уже не подключается.

Аватар пользователя Dalay
Dalay 4 года назад
Niklan написал:
Получилось, но опять же, как я и писал. Она подключается после обработки. Потом кешируется и JS уже не подключается.

Ну да, логично. Надо подумать.

Аватар пользователя Dalay
Dalay 4 года назад

Пожалуй, друпалвейно в случае с фильтрами, все не сделать. Тогда, конеш, подключай js по-своему. Сам функционал фильтров только оставь. Ибо, окромя последних двух пунктов, все написанное остается в силе:

1. Более лаконичный код токена супротив html-каши.
2. Есть возможность задавать некие дефолтные настройки.
3. Нет надобности при постоянно копипастить html-обертки с нужными классами и идентификаторами. То бишь, ответственность за корректный ввод с плеч пользователя перекладывается на обработчики, реализованные в модуле.
4. При каких-либо изменениях в синтаксисе тегов вызова карты со стороны map-сервиса нет надобности искать и править html-код везде, куда его уже влепили. Надо будет всего лишь внести коррективы в код обработчика.
5. Появляется повод избежать говнокодерства. Начиная с 7-ры, в Друпале принято подключать js/сss-файлы сторонних скриптов регистрацией соответствующих библиотек. С последующим их вызовом через drupal_add_library(), а не через getScript в js-файлах модуля. Кстати, единственная функция, реализованная в модуле (mappy_page_build()) не нужна совершенно: подобные подключения делаются через module.info.
6. В продолжении п. 5. Возможность подключать необходимые файлы только на тех страницах, где они реально нужны, а не на всех без исключения.

Только в своем JS обязательно перепиши:

<?php
if ($("body *").is("сервис")
?>

на хотя бы:

<?php
if ($("сервис").length
?>

И кнопок не забудь для редакторов набабахать.

Аватар пользователя Niklan
Niklan 4 года назад

В 7.x-1.x-dev пушнул новый функционал.

+ Добавлен новый фильтр (включается в настрйоках фильтра, называется как и модуль). Позволяет использовать токены.
+ Добавлены значения по умолчанию для параметров zoom (17), width (640), height (480). Теперь достаточно указать лишь адрес чтобы появилась карта. В дальнейшем планирую добавить административную панель где эти значения можно будет менять.
+ Теперь грузится всеголишь mappy.js, google jsapi по требованию.

Как включить фильтр:
Конфигурация > Форматы текста > В нужном формате жмем изменить и ставим галочку.
Configuration > Text formats > ^^^

Теперь при этом формате текста будут обрабатываться токены.
Например стандартный код:

<mappy:google address="г. Пермь, ул. Крисанова 16" zoom="17" width="720" height="480"></mappy:google>

С включеным фильтром можно записать как

[mappy:google address: 'г. Пермь, ул. Крисанова 16' zoom: 17 width: 720 height: 480]

Ввиду того что теперь есть значения по умолчанию, достаточно записать лишь:

<mappy:google address="г. Пермь, ул. Крисанова 16"></mappy:google>

или

[mappy:google address: 'г. Пермь, ул. Крисанова 16']

P.s. проверьте с яндексом. У меня какого-то ихняя JS никак не грузится.
P.p.s кто может поправить мой ломанный английский в комментариях кода, буду признателен.

Аватар пользователя Niklan
Niklan 4 года назад

В 7.x-1.x-dev добавлена административная панель: admin/config/content/mappy/settings
В ней можно настроить адреса где будет подгружать Mappy.js (чтобы лишний раз не грузить).
А также можно задать ширину и высоту для карт по умолчанию (если карта вставляется лишь с параметром "адрес")

Аватар пользователя grob.82
grob.82 4 года назад

Спасибо за модуль.
Только функция "zoomControl" у меня не заработала.
и в настройки не смог попасть, ведет на admin/structure
сейчас попробую может dev поедет...

Аватар пользователя grob.82
grob.82 4 года назад

установил dev, в настройки попал, а вот функция так и не работает...

Аватар пользователя Niklan
Niklan 4 года назад
grob.82 написал:
и в настройки не смог попасть, ведет на admin/structure

Да, в стабильной нет настроек а файл админки есть ><

grob.82 написал:
а вот функция так и не работает...

У Yandex или Google карт? У них по разному они работают.

UPD.
О ужс, у меня яндекс карты не работали из-за аддона Disconnect.me
Учитывая что он набирает популярность и яндекс карты с ним не пашут, то очень интересно развитие. Видимо какая-то следилка в них заложена, ибо гуглокарты пашут как надо.

Аватар пользователя grob.82
grob.82 4 года назад

Да извеняюсь, забыл - Яндекс карты.

Аватар пользователя Niklan
Niklan 4 года назад
grob.82 написал:

Да извеняюсь, забыл - Яндекс карты.

Проблему нашел. Заключается в case sensivity. вводя zoomControl, его обрабатывает браузер\друпал в нижний регистр и поулчается zoomcontrol, а скрипт ищет zoomControl.

Если это горит, то в файле js/yandex.mappy.js

Строки 124 - 125

            if ($("yandex, mappy\\:yandex").attr("zoomСontrol")) {
                var zoom_control = $("yandex, mappy\\:yandex").attr("zoomСontrol").split(",");

заменить на

            if ($("yandex, mappy\\:yandex").attr("zoomcontrol")) {
                var zoom_control = $("yandex, mappy\\:yandex").attr("zoomcontrol").split(",");

Сейчас буду думать как решать проблему с регистром.

Также не советую использовать пока фильтр где юзается более одного параметра с кавычками '', тоже багает, буду править.

P.s. если есть у кого идеи по поводу регистра, принимаю пожелания. По сути, правильнее либо сводить все к нижниму регистру, либо через дифис, но тогда у всех кто сейчас использует модуль отвалятся карты на сайтах, надо править на стороне скриптов.

UPD.
вместо .attr() придется скорее всего использовать .get(0).getAttribute(), он не чуствителен к регистру.

Аватар пользователя grob.82
grob.82 4 года назад
Niklan написал:
а скрипт ищет zoomControl.

Исправил, спасибо.
Мне конечно не горело!

Вообще скорость работы понравилась, намного шустрее грузит карту по сравнению со стандартным методом!

Аватар пользователя Niklan
Niklan 4 года назад
grob.82 написал:
Вообще скорость работы понравилась, намного шустрее грузит карту по сравнению со стандартным методом!

С каким стандартным?
Я не думаю что быстрее если под стандартным имеется непосредственная работа API. Может совпадение.

Аватар пользователя grob.82
grob.82 4 года назад

Ну как с каким )) Как обычно заходишь на карты , будь то google или яндекс, и получаешь код карты, затем пихаешь ее на сайт.
Я так обычно делал )

Аватар пользователя grob.82
grob.82 4 года назад

Google maps не захотел отображаться вообще ((

Вижу в обновление модуля не вошёл фикс с зумом яндекса?

Аватар пользователя Niklan
Niklan 4 года назад
grob.82 написал:

ага, вчера дев вытащил, тоже гуглокарты не сработали по каким-то причинам. Они чот мутят. В стабильной версии вообще кнопка "сообщить об ошибке" появилась. Все руки не доходят.

grob.82 написал:

Вижу в обновление модуля не вошёл фикс с зумом яндекса?

Поблема не с ним, а вообще со всеми атрибутами которые имеют большие буквы. jquery attr() чуствителен к регистру.

Тут вроде я находил можно его заменить на .get(0).getAttribute(). Кароче дефолтный JS метод. Я думаю на него все перегнать но может кто знает иные выходы из ситуации?

Аватар пользователя Niklan
Niklan 4 года назад

Я хз кароче, хотел починить багу, а уже все и так пашет. и с zoomcontrol и с zoomControl.
Магия какая-то.

А яндекс красавцы. Запилили Яндекс.Карты 2.1 без обратной совместимости. При этом 2.0 JS тянет карты от 2.1. Эпик фэил. Так что тем кто только начинает юзать модуль, советую цеплять гуглокарты, я скорее всего яндекс уберу из модуля, он какой-то мудреный стал, обновляется все как хз что, а толку ноль, кроме новых картинок. Позже, когда они выведут их из беты я верну их.

Вероятнее всего такое движение выльется в ветку 2.0, на одних гуглокартах, и улучшу их, постараюсь сделать множественное добавление карт и т.д.

В общем ушел в раздумия.

Аватар пользователя Niklan
Niklan 4 года назад

В дeв ветку пушнута новая версия. В ней:
- полностью переписан JS для гугло карт, он теперь читабельнее и "правильнее".
- в следствии первого, теперь гуглокарты на странице могут быть в нескольких экземплярах. Теоретически неограниченно) Хоть 100500 карт на странице.

Аватар пользователя Niklan
Niklan 4 года назад

Проблема с чувствительностью к регистру атрибутов исправлена для гугл карт в дев ветке.

Сейчас возьмусь за Яндекс. Буду разгребать его. Нашел решение его резких перемен. Будет возможность выбора между версиями карт, по дефолту 2.0

Аватар пользователя Niklan
Niklan 4 года назад

В дев ветке пополнение.

Полностью переработан JS для Yandex:
+ Возможность использовать несколько карт на одно странице. Включая возможность построения маршрута для каждой из них (http://i.imgur.com/w9jrvtE.png)
+ Исправлена ошибка с zoomControl
+ Теперь атрибуты не чувствительны к регистру

Нужны тесты со стороны. Ибо в текущем состоянии это хороший претендент на стабильную версию 7.x-1.3

Аватар пользователя Niklan
Niklan 4 года назад

С фильтрами пока есть проблемы. Если цеплять еще доп параметры, кроме адреса. В общем будет время, починю.

Непосредственная вставка тега пашет на ура, проверил на трех сайтах (накатил дев версию поверх 1.2), все подцепилось и продолжило работать.

Сейчас буду документацию переделывать.

Аватар пользователя Niklan
Niklan 4 года назад

Выпустил стабильную версию 7.x-1.3
Пока инфа тут: https://github.com/Niklan/mappy/releases/tag/7.x-1.3

Сейчас буду переделывать документацию, а затем напишу что к чему поменялось. Если всплывут ошибки при апдейте долбите на http://niklan.net/contact, чтобы я отреагировал как можно быстрее. Хотя я столько проверил и перепроверил, включая рабочие сайты со старой версией, что если что и сбойнет, то только фильтры, коих и не было вовсе, так что думаю все будет ок.

Аватар пользователя Niklan
Niklan 4 года назад

Описание изменений Mappy 7.x-1.3 и информация про фильтры.

Аватар пользователя simeiz
simeiz 4 года назад

Отличный модуль! Автор, подскажи плиз почему не перезаписывает свойства элемента если прописать в цсс для #mappy-google-0 ширину и высоту ?

Аватар пользователя Niklan
Niklan 4 года назад
.mappy.google {
    width: 100% !important;
}

также на id, с important, чтобы перебить стиль от гугла

Аватар пользователя grob.82
grob.82 2 года назад

Никита у меня такой баг вылез.
При вставке двух карт яндекс друг под другом (ну или рядом) они дублируются по два раза (вроде 2 х.з.) см.скрин

upd: Странно, иногда появляется дубликаты, а иногда нет! Мистика пряммм...

Аватар пользователя Niklan
Niklan 4 года назад

Код вставки в студию

Аватар пользователя grob.82
grob.82 4 года назад
<?php

<mappy:yandex address="г.Норильск, ул. Талнахская 30" zoom="15" width="960" height="250" addressPlacemark="true" zoomControl="20,50"></mappy:yandex>

<

mappy:yandex address="г.Талнах, ул. Бауманская 30" zoom="15" width="960" height="250" addressPlacemark="true" zoomControl="20,50"></mappy:yandex>
.
?>
Аватар пользователя Niklan
Niklan 4 года назад


У меня, как видно, выводит обе карты и никаких дублей.

Как вставляется? В исходном коде не обрублен ли тег? В консоли F12 какие ошибки выдает?

Аватар пользователя grob.82
grob.82 4 года назад

Проблема видна только в firefox, ошибок не нашел
закономерность такая, перегружаешь страницу - все хорошо
жамаешь на вкладку "Контакты" тогда лезут дубликаты
masterok-124.ru/contact

Аватар пользователя Niklan
Niklan 4 года назад

Чот не могу понять в чем проблема.
Нашел что в Firefox не грузится: http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU
Если точнее не отрабатывает:
$.getScript("http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU", function () {

В общем я хз даже, у меня бошка взорвется ща сегодня столько всего натворил и еще это.

Самое удивительно что последние 3-4 дня я ждал когда же всплывут ошибки, нигде не всплыло, а ща везде такое появилось. Я даже хз что и где поменялось ведь я код не трогал. Причем где-то продолжает работать а гдето отвалилось

Аватар пользователя grob.82
grob.82 4 года назад

непереживай, отдохнешь и завтра все починешь :)
неправильно две карты на одну страницу ставить!

Аватар пользователя Niklan
Niklan 4 года назад
grob.82 написал:

да я не переживаю я просто не вьезжаю что происходит
Я понимаю я бы намудил, этот код что сейчас в стейбле, по сути у меня на деве месяц стоял, я только его до ума довел, продержал пару дней и пушнул в релиз, стояло как стена, и сейчас сбойнуло разом.

Причем еще от браузера сбой зависит. Я код последние 5 дней не трогал, все работало, пока ща частично не отвалилось. Причем один и тот же код где-то пашет, а где-то нет, еще браузеры мудят.

Вот собственно одна и таже страница, один и тот же сайт\модуль\скрипты\коды и т.д. и т.п., разные результаты

Проблема то в том что даже копать некуда, они даже не еррорят падлы.

Аватар пользователя drupby
drupby 2 года назад

c яндексом такое случается к сожалению - гугл в этом плане более надежен

а что кстати за два приложения?

Аватар пользователя Niklan
Niklan 4 года назад
drupby написал:
c яндексом такое случается к сожалению - гугл в этом плане более надежен

Проблема в том что гугл тоже отвалился в фаерфоексе. Может аномалия какая-то. Просто если бы я мог прожить хоть какую-то цепочку событий того что я делал и могло сломать, но я ничего не делал =\ Ни на локальном сервере, ни на тестовом сайте, ни на других сайтах где проводилась проверка и последние дни проверялась работоспособность модуля, но сегодня вот такая вот беда.

Подождем завтра ибо тут чинить нечего.

Аватар пользователя Niklan
Niklan 4 года назад
drupby написал:
c яндексом такое случается к сожалению - гугл в этом плане более надежен
а что кстати за два приложения?

1) Shutter - он позволяет делать различные скрины с экрана, править их, и моментально выгружать в различные сервисы и давать прямую ссылку на картинку, либо сейвить на комп.
2) PlayOnLinux - обертка для wine, чтобы виндовые проги запускать, юзаетсо для игор когда приспичит)

p.s. чот я сегодня перетрудился, по клаве мажу, все путаю и висну. Пойду попроюсь в сети)

UPD. Пополаз по сайтам где карта вставляется обычным способом (вообще даже не друпалы), тоже на фаерфоксе яндекс отпал. В общем тут их проблемы, я уже писал что они пилят 2.1 версию, которая каким-то образов иногда вливается в 2.0 скрипт, они там вообще черти что творят. А то что гугл отпал также, это тоже хер его знает. Может гугл что делал они упали, а яндекс в очередной раз "копипастя" идеи скопировали и ошибку. Вот такое моё дерзкое заключение :о

Аватар пользователя simeiz
simeiz 4 года назад

да, во всех браузерах гуглокарты отпали

Аватар пользователя Niklan
Niklan 4 года назад
simeiz написал:

у меня где-то работают.

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

Аватар пользователя grob.82
grob.82 4 года назад

проверил на одном (обычным кодом) от яндекса норм!

Аватар пользователя Niklan
Niklan 4 года назад
grob.82 написал:

и в Firefox? вот у меня многие карты в firefox отвалились даже где далеко не друпал. Просто модуль как бы не трогал уже получается 6 дней, как его накрыть то мого так резко.. Темболее там особо ничего не менялось кроме php файла.

Аватар пользователя grob.82
grob.82 4 года назад
Niklan написал:
и в Firefox?

проверил еще на 2-х сайтах (обычный код яндекс) все нормуль и в Фаерфокс.
могу сыль дать!

upd: проверил еще на других сайтах mappy тоже работает :)

Аватар пользователя Niklan
Niklan 4 года назад
grob.82 написал:
проверил еще на 2-х сайтах (обычный код яндекс) все нормуль и в Фаерфокс.
могу сыль дать!
upd: проверил еще на других сайтах mappy тоже работает :)

ну я вообще ничего не понимаю в происходящем.
где вчера пропали гуглокарты они появились, в фаерфоксе... зато в хроме пропали... что за

Аватар пользователя Niklan
Niklan 4 года назад

У меня все везде само заработало. Хогвардская магия, а ведь её нельзя использовать вне школы.

Аватар пользователя artemrrr
artemrrr 4 года назад

Супер!!!!!!!!!!!! А вот если бы еще для 6-ого Друпала был, то число скачиваний и установок на Drupal.org заметно вырос - (и мы староверы, пользовались бы) - нас ведь щаз 70% в сети из всех Друполят.

p.s. Не спроста буржуи продолжат 6-ую ветку модулей поддерживать, да что там, сам ОРГ токо вот перешел на 7-ку.

Аватар пользователя grob.82
grob.82 4 года назад
artemrrr написал:

Сам себя убеждаешь!

Аватар пользователя Niklan
Niklan 4 года назад
artemrrr написал:
Супер!!!!!!!!!!!! А вот если бы еще для 6-ого Друпала был, то число скачиваний и установок на Drupal.org заметно вырос - (и мы староверы, пользовались бы) - нас ведь щаз 70% в сети из всех Друполят.

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

artemrrr написал:
.s. Не спроста буржуи продолжат 6-ую ветку модулей поддерживать

наоборот их никто не поддерживывает и не развивает. Почти все основные модули заглохли на стабильной и только её поддерживают.

Недавно натыкался на пару модуелй и обратил внимание что у них по 6.x-1.x, когда у семерки уже 7.x-3.x Поддерживают то что осталось, нового капля в море. И буржуие первые кто свалит при выходе 8 с 6.

artemrrr написал:
сам ОРГ токо вот перешел на 7-ку.

дак это больше вам на размышление чем мне) Показательно, что уже вот вот да поддержки не станет.

Аватар пользователя artemrrr
artemrrr 4 года назад

Эх...,не получилось..., жаль...., ну, ладно когда будет 7-ка тогда и попробую. Заодно и модуль к этому времени обкатается.
p.s. Пока поставлю закладочку.

Аватар пользователя artemrrr
artemrrr 4 года назад

А к ССК поле не планируется делать?

Аватар пользователя Niklan
Niklan 4 года назад
artemrrr написал:

Зачем? Это делают другие модули. Вы можете сами создать cck поле какое нужно, например текстовое, и туда вбивать адрес, а в темизации ноды этот адрес подставлять в код mappy.

Также каты можно вставлять непосредственно в тексте по типу токенов. В общем для полей есть отдельные модули, геофилд вроде.

Аватар пользователя artemrrr
artemrrr 4 года назад
Niklan написал:
Вы можете сами создать cck поле какое нужно, например текстовое, и туда вбивать адрес, а в темизации ноды этот адрес подставлять в код mappy.

Помогите..Как подставить адрес в код mappy. - в какое место и как он должен выглядеть.

Аватар пользователя Niklan
Niklan 4 года назад

Ну создаете поле текстовое, называете например address, оно получает системное имя field_address.
Затем в node--NODE-TYPE.tpl.php

<?php
if (isset($node->field_address)) {
    
$address $node->field_address['und'][0]['value'];
    
$map "<mappy:google address='{$address}' zoom='17' width='600' height='300'></mappy:google>";
    print 
$map;
}
?>
Аватар пользователя artemrrr
artemrrr 4 года назад
Niklan написал:
mappy:google address

я могу вместо гугл подставить яндекс?

Аватар пользователя Niklan
Niklan 4 года назад
artemrrr написал:

да

Аватар пользователя artemrrr
artemrrr 4 года назад

Спасибо, буду пробовать.

Аватар пользователя drupby
drupby 4 года назад
Niklan написал:
Ну создаете поле текстовое

как вариант сделай форматтер для text field , хотя под поля хватает модулей

Аватар пользователя Niklan
Niklan 4 года назад
drupby написал:
как вариант сделай форматтер для text field , хотя под поля хватает модулей

Я просто не понимаю зачем мне городить то что уже есть и не в одном варианте.
Для каждой задачи - свои инструменты.

Аватар пользователя artemrrr
artemrrr 4 года назад

Не отображаются карты, вставляю в шаблон странице даже не код приведенный выше, а стандартный с github.com
и что то пусто (модуль включил, исключений не делал) в чем может быть косяк?

p.s.Шаблон подключен правильно, все отображает кроме карты.

Аватар пользователя Niklan
Niklan 4 года назад

Что-то делаете не правильно инфа 100

Аватар пользователя artemrrr
artemrrr 4 года назад
Niklan написал:
инфа 100

1 шаг. установил и включил последнею версию модуля с орга.
2 шаг. создал шаблон странице типа материала node--sport.tpl (проверил он подключен)
3 шаг. зашел и проверил в настройках модуля, нет ограничений для моей странице.
4 шаг. вставил в шаблон код:<?php<mappy:google address="г. Пермь" zoom="17" width="600" height="300"></mappy:google>?>
php - в начале и в конце нет это друпал.ру глючит

Аватар пользователя Niklan
Niklan 4 года назад
<google address="г. Пермь" zoom="17" width="600" height="300"></google>

А так?

У вас доктип у документа такой?

<!DOCTYPE html>

Если другой то могут быть офк проблемы. Это HTML5 тема (так теги указывать и те которых не существует). С други мдоктьюпом движки браузерво могут его выпиливать как неправильный.

Аватар пользователя artemrrr
artemrrr 4 года назад

так, тоже нет

Аватар пользователя Niklan
Niklan 4 года назад
artemrrr написал:

а доктайп правильный?

Аватар пользователя artemrrr
artemrrr 4 года назад
artemrrr написал:

точно! нет этого !DOCTYPE html, у меня базовая тема Adaptive Theme а под тема - Pixture Reloaded, как мне быть? что делать?

Аватар пользователя Niklan
Niklan 4 года назад
artemrrr написал:

html.tpl.php
там она, вопрос в том как себя поведет тема после смены доктайпа. По сути ничего не изменится но черт его знает)

Аватар пользователя artemrrr
artemrrr 4 года назад

Да есть там это, а мне что нужно сделать?

Аватар пользователя Niklan
Niklan 4 года назад
small dead peach написал:
Им насрать … Они полагают, что DTD не нужен … В хроме то он зашит наверняка, а как остальные браузеры?
Что там в тег закопали понимать смысла нет :D

Для мена загадка что вы хотели этим сказать. :D

artemrrr написал:
Да есть там это, а мне что нужно сделать?

Сделаеть его таким как я написал.

Аватар пользователя errand
errand 4 года назад

Воу! Потрясный модуль! Автору большой респект!

Кто-нить уже подружил модулек с цкэдитором или визивигом?

Аватар пользователя Boozenok
Boozenok 4 года назад

Подскажите, можно организовать маршрут без input? Чисто прописать два адреса, которые будут соединены маршрутом

Аватар пользователя Niklan
Niklan 4 года назад
errand написал:
Кто-нить уже подружил модулек с цкэдитором или визивигом?

Дружит из коробки. При помощи фильтра. Или же надо настраивать фильтр для висифига чтобы он не рубил теги

Boozenok написал:
Подскажите, можно организовать маршрут без input? Чисто прописать два адреса, которые будут соединены маршрутом

два - нет, стартовый - да. Онли на яндекс картах.

Сори что не отвечаю, я на друпал.ру не захожу. Крайне редко.

Аватар пользователя tomcon
tomcon 4 года назад

подписался

Аватар пользователя Niklan
Niklan 4 года назад

UPD.
В dev версии Yandex карты с поддержкой API 2.1.x (т.е. новые).
Добавлена возможность указывать вместо адреса координаты ШИРОТА,ДОЛГОТА

У новой версии новая документация: https://github.com/Niklan/Mappy/wiki/[ru]-Mappy-документация-Ya.Maps-2.1.x

Если обновляетесь со старой версии, не забудьте сделать update.php, если собираетесь использоватьс тарую версию яндекс карт.

Ах, да. Чуть не забыл. У гуглокарт теперь есть аттрибут options. В него можно передавать дополнительные настройки для карты. Например: options="{minZoom: 10, maxZoom: 11}"

Аватар пользователя olegcvc
olegcvc 3 года назад

Подскажите пожалуйста, почему Mappy не отрисовывает карту? Включил модуль, активировал фильтр Mappy, формат Full Html, в файле темы html.tpl.php , кэш чистил, пробовал и в Мозилле и в Хроме, и на рабочем сайте и на чистом Друпале, вставлял и Html тэгом и с квадратными скобками - упорно не хочет работать....

Аватар пользователя molp
molp 3 года назад
olegcvc написал:
Подскажите пожалуйста, почему Mappy не отрисовывает карту? Включил модуль, активировал фильтр Mappy, формат Full Html, в файле темы html.tpl.php , кэш чистил, пробовал и в Мозилле и в Хроме, и на рабочем сайте и на чистом Друпале, вставлял и Html тэгом и с квадратными скобками - упорно не хочет работать....

Та же беда!
Подбирал и тестировал модуль на drupal 7.37, все работало.
Позже обновился до 7.38 и карта не отрисовывается :(

Аватар пользователя Niklan
Niklan 3 года назад

В Full HTML и прочих есть допустимые теги для использования. Разумеется там нету mappy, yandex, google тегов. Их надо добавить, или, лучше всего, включить фильтр и использовать формат токена. В таком случае никаких проблем ни с одним форматом не будет.

Читайте тут: http://niklan.net/blog/49

Аватар пользователя molp
molp 3 года назад
Niklan написал:
В Full HTML и прочих есть допустимые теги для использования. Разумеется там нету mappy, yandex, google тегов. Их надо добавить, или, лучше всего, включить фильтр и использовать формат токена. В таком случае никаких проблем ни с одним форматом не будет.

Читайте тут: http://niklan.net/blog/49

Все делал по инструкции.
Подскажите в чем может быть дело, ведь изначально карта работала, а потом вдруг перестала.
При обновлении страницы в статусной строке показывает соединение с яндекс-мэп.
Что должно присутствовать в коде страницы?

Аватар пользователя molp
molp 3 года назад

Тестировал на чистом друпале версий 37 и 38 - карта не отображается.

Аватар пользователя Niklan
Niklan 3 года назад
molp написал:

После сохранения в Full HTML многие тегы CKEditor вырезает и т.д. Может битые, может вообще вырезаны. Используйте токены чтобы таких проблем не было

Аватар пользователя Virkom
Virkom 2 года назад

У меня тоже та же проблема. Как не пытаюсь вставлять карту - не выходит. Открыл консоль браузера и получил такую картинку:

Суть в том, что google.mappy.js и yandex.mappy.js находятся не по пути http://localhost/modules/mappy/js/ а по пути http://localhost/sites/test/modules/mappy/js/
Открыл код модуля, а там идет формирование пути вот так:
$.getScript("/" + Drupal.settings.mappy_location + "/js/google.mappy.js");

Вот и вопрос, что содержит Drupal.settings.mappy_location? Где я что не так наворотил или это ошибка в формировании пути в модуле?

Аватар пользователя josgir
josgir 2 года назад

Попробуйте отладкой посмотреть что пишет в Drupal.settings.mappy_location
для этого напишите строчку ниже или выше
console.log(Drupal.settings.mappy_location);
Затем зайдите в отладку (в хроме для этого нужно октрыть дебагер F12, а затем нажать ESC - откроется консоль, где выведется та переменная которую укажите - удобный инструмент)

А там уже и ошибку сможете найти

Аватар пользователя Virkom
Virkom 2 года назад
josgir написал:
Попробуйте отладкой посмотреть что пишет в Drupal.settings.mappy_location
для этого напишите строчку ниже или выше
console.log(Drupal.settings.mappy_location);
Затем зайдите в отладку (в хроме для этого нужно октрыть дебагер F12, а затем нажать ESC - откроется консоль, где выведется та переменная которую укажите - удобный инструмент)

А там уже и ошибку сможете найти

Drupal.settings.mappy_location содержит 'modules/mappy'
Вот как эту ошибку исправить - для меня пока непонятно.
Штука в том, что, насколько я могу понимать, путь верный в модуле. Вопрос в том, почему Drupal неправильно выдает путь к модулю. Может, я где-то что-то недонастроил...

Аватар пользователя Niklan
Niklan 2 года назад
Virkom написал:
Drupal.settings.mappy_location содержит 'modules/mappy'

Вы что, модуль в /modules поставили что ли?

Аватар пользователя Virkom
Virkom 2 года назад

Да, скопировал каталог Mappy в каталог modules и установил из админки, как и все другие модули.
Разве нужно по-другому?

Аватар пользователя Virkom
Virkom 2 года назад

Все, ошибку понял. Малый опыт работы с Drupal. Буду исправляться, всем спасибо.

P.S.: Хотя нет. Переустановил модуль в /sites/all/modules и та же картина.
не может найти http://localhost/sites/all/modules/mappy/js/google.mappy.js
ссылка должна быть http://localhost/sites/test/sites/all/modules/mappy/js/google.mappy.js
каталог для web-проектов не стандартный /var/www/

Аватар пользователя Virkom
Virkom 2 года назад
Niklan написал:
`/sites/test/sites/all/modules/` - что это за путь такой. Я бы еще поверил в /sites/test/modules,но не то что у вас написано.

Объясню.
Сайт находится в /home/user/work/sites/test/.
Оттуда симлинк сделан в /var/www/http/
Т.е. фактически, путь для апача выглядит так: /var/www/http/sites/test/
Это значит, что сайт доступен по адресу http://localhost/sites/test/
Изначально модуль Mappy стоял в каталоге /modules (т.е. /var/www/http/sites/test/modules/)
Потом я перенес модуль в /sites/all/modules/ (т.е. /var/www/http/sites/test/sites/all/modules или он же в браузере: http://localhost/sites/test/sites/all/modules/)

Поэтому путь такой. И если открыть в браузере ссылку http://localhost/sites/test/sites/all/modules/mappy/js/google.mappy.js, то открывается скрипт, который вполне находится по этому адресу. Но консоль пишет, что не может найти этот скрипт. Потому что путь к нему где-то неправильно формируется.

Аватар пользователя Studio VIZA
Studio VIZA 2 года назад
Virkom написал:
test

Двумя словами - для чего создана эта папка?

Аватар пользователя Virkom
Virkom 2 года назад
Director cemetery написал:
Virkom написал:
test

Двумя словами - для чего создана эта папка?

В ней находится тестовый сайт на Drupal 7

Аватар пользователя Studio VIZA
Studio VIZA 2 года назад
Virkom написал:
В ней находится тестовый сайт

В папке локалхост должен быть корень сайта, в корне - сайтес. И никаких тестов.

Аватар пользователя Virkom
Virkom 2 года назад
Director cemetery написал:
Virkom написал:
В ней находится тестовый сайт

В папке локалхост должен быть корень сайта, в корне - сайтес. И никаких тестов.

Где написано, что он должен? Сайтов на локалхосте может быть хоть сотня.
Да, есть решение в виде "придумать доменное имя и перенаправить запросы на него". Но все же, друпалу должно быть пофиг, в каком каталоге он стоит и путь он должен отдавать правильный. Однако, нет.

Аватар пользователя Studio VIZA
Studio VIZA 2 года назад
Virkom написал:
Где написано, что он должен?

Папка "Локалхост" это доменное имя из коробки, по умолчанию. Когда создадите любое своё, папка с новым именем и Локалхост - станут рядышком.

Аватар пользователя Virkom
Virkom 2 года назад
Director cemetery написал:
Папка "Локалхост" это доменное имя из коробки, по умолчанию. Когда создадите любое своё, папка с новым именем и Локалхост - станут рядышком.

Это все верно. Но все же я считаю, что движок должен выдавать пути правильно. Хоть прописано доменное имя, хоть нет. А не предполагать по умолчанию, что он будет находиться по пути http://localhost/
Я - программист, и меня всегда учили, что программа должна динамически вычислять пути в любых условиях. Где бы ее не запустили, она должна работать. А не привязать к одному определенному пути и кидать эрроры, если прогу запустили не из этого каталога.

Аватар пользователя Studio VIZA
Studio VIZA 2 года назад
Virkom написал:
А не предполагать по умолчанию, что он будет находиться по пути

Это сервер делает для совсем уж неопытных такую папку. При чём здесь движок?
Папку локалхост можно спокойно удалить, придумать папку с названием мойсайт. Тогда путь будет выглядеть - мойсайт/сайтеc/алл/модулес/картымап/итд

Аватар пользователя Virkom
Virkom 2 года назад
Director cemetery написал:
При чём здесь движок?

Drupal.settings.mappy_location
Этот путь дает друпал, а не веб-сервер, насколько я понимаю.
Все ссылки отлично открываются по тому пути, по которому я сейчас работаю с сайтом. Т.е. http://localhost/sites/test/, все модули работают, все скрипты работают, все картинки на месте. Это значит, что Drupal знает, где он находится и выдает правильные пути веб-серверу, который их обрабатывает. Кроме Mappy. Задача сервера - пропустить через себя файлы, которые он не должен обрабатывать и выдать их в браузер в том же виде, и пропустить через себя файлы, которые он должен обрабатывать (*.php) и выдать результат их работы в браузер. Веб-сервер всего лишь отдает файлы по путям, которые сформированы в php-коде или js-коде. Это значит, что если бы путь формировался правильно к каталогу сайта, то js-скрипт mappy был бы найден и отдан браузеру.
Веб-сервер не формирует пути. Он всего лишь заменяет /var/www/http/ на http://localhost/. Так кто неправильно формирует путь? Mappy или Drupal?
Если все модули прекрасно работают и сам сайт работает, кроме Mappy, то подозреваем Mappy. Но в то же время в функции формирования пути есть "Drupal.settings" это наводит на мысли, что виновен движок.

Да, конечно, я сейчас решу проблему с помощью прописывания своего локально прописанного домена, но неправильное поведение останется. И еще десятки таких как я (которым лень прописывать на каждый чих новый домен) долго будут искать причину, почему же карта не показывается.

Аватар пользователя Studio VIZA
Studio VIZA 2 года назад
Virkom написал:
это наводит на мысли, что виновен движок

Трудно наполнить чашу которая полна(С)Аватар

Director cemetery написал:
В папке локалхост должен быть корень сайта, в корне - сайтес. И никаких тестов.
Аватар пользователя Niklan
Niklan 2 года назад

https://github.com/Niklan/Mappy/blob/7.x-1.x/mappy.module#L49

Вот тут в JS передается путь до модуля - достается через Drupal API, если он отдает не верный путь, скорее всего неверно расположено у вас.

Я почти уверен что проблема в вашем окружении как вы сайты открываете. Не надо никаких localhost/sites/test/, сделайте чтобы по localhost/ открыался или по локальному домену. Советы выше вам дали.

Аватар пользователя Virkom
Virkom 2 года назад
Niklan написал:
https://github.com/Niklan/Mappy/blob/7.x-1.x/mappy.module#L49

Вот тут в JS передается путь до модуля - достается через Drupal API, если он отдает не верный путь, скорее всего неверно расположено у вас.

Я почти уверен что проблема в вашем окружении как вы сайты открываете. Не надо никаких localhost/sites/test/, сделайте чтобы по localhost/ открыался или по локальному домену. Советы выше вам дали.

Да, я уже от нечего делать раскопал все. Видел и эту строку.
Дело в том, что это единственный (у меня) модуль, в котором пути на js-скрипты формируются в jquery.
В других модулях используется функция drupal_add_js().
Здесь же с помощью drupal_add_js() добавляется только скрипт mappy.js. К остальным js-скриптам путь динамически вычисляется в функции jquery. Где-то вот тут и косяк. Ну да ладно. Домен так домен.

Аватар пользователя drupby
drupby 2 года назад

Можно и нужно просто в подобном случае в settings.php прописать
$base_url = 'http://localhost/sites/test';
и не забыть про эту строку при переносе в production

Аватар пользователя Studio VIZA
Studio VIZA 2 года назад
Virkom написал:
которым лень прописывать на каждый чих новый домен

В Винде, зайдите в папку domains,обычно это диск С/OpenServer, правой кнопкой мыши "создать папку", назовите её по английски test, перезагрузите сервер. Скачайте с орга ядро, распакуйте, и все эти папки и файлы(включая sites) скопируйте в папку test, это есть корень сайта.

Создайте базу и инсталлируйте движок, он должен теперь открываться в браузере по имени http://test/

ТС - сорри за как бы флуд.

Аватар пользователя Virkom
Virkom 2 года назад
Director cemetery написал:
В Винде, зайдите в папку domains,обычно это диск С/OpenServer, правой кнопкой мыши "создать папку", назовите её по английски test, перезагрузите сервер. Скачайте с орга ядро, распакуйте, и все эти папки и файлы(включая sites) скопируйте в папку test, это есть корень сайта.

Создайте базу и инсталлируйте движок, он должен теперь открываться в браузере по имени http://test/

ТС - сорри за как бы флуд.

Да, спасибо. Я знаю, как это делается. Кроме того, у меня Linux.

Аватар пользователя Orion76
Orion76 2 года назад

в settings.php найдите, раскоментируйте эту строчку:
# $base_url = 'http://www.example.com'; // NO trailing slash!

вместо http://www.example.com укажите URL с путем до корня сайта.
Чуть выше этой строчки в settings.php есть несколько простеньких примеров.

Аватар пользователя The Doctor
The Doctor 2 года назад

Drupal 8, получаю такую ошибку при активации модуля:

Fatal error: Class Drupal\mappy\Form\MappySettingsForm contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Drupal\Core\Form\ConfigFormBase::getEditableConfigNames) in W:\domains\vds-eng\modules\mappy\src\Form\MappySettingsForm.php on line 13

Аватар пользователя xSPiRiTx
xSPiRiTx 1 год назад

Все отлично, но!....если еще раз зайти и отредактировать ноду, то теги модуля mappy слетают и приходится заново их вставлять в код.