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

Аватар пользователя Niklan Niklan 23 мая 2013 в 19:38

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

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

Комментарии

Аватар пользователя josgir josgir 24 мая 2013 в 12:14
"Niklan" wrote:

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

Аватар пользователя Niklan Niklan 24 мая 2013 в 14:05

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

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

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

Аватар пользователя graker graker 24 мая 2013 в 14:16

Толково!

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

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

Аватар пользователя Niklan Niklan 24 мая 2013 в 15:21
"graker" wrote:

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

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

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

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

"graker" wrote:

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

поправил.

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

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

Аватар пользователя Niklan Niklan 25 мая 2013 в 16:46

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

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

"kosHta" wrote:

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

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

"kosHta" wrote:

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

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

"kosHta" wrote:

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

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

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

Аватар пользователя josgir josgir 3 июня 2013 в 21:13
"Niklan" wrote:

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

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

Аватар пользователя Niklan Niklan 4 июня 2013 в 19:59

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

"kosHta" wrote:

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

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

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

Аватар пользователя Niklan Niklan 4 июня 2013 в 22:43

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

Пример:

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

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

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

Аватар пользователя Niklan Niklan 5 июня 2013 в 15:34

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

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

Пример:

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

Аватар пользователя josgir josgir 6 июня 2013 в 10:37

Были проблемы с 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 6 июня 2013 в 10:38

Версия хрома какая?
У меня работает на:
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" wrote:

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

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

Аватар пользователя Niklan Niklan 6 июня 2013 в 10:52

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

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

Аватар пользователя iNFerNo iNFerNo 6 июня 2013 в 11:32

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

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

Аватар пользователя josgir josgir 6 июня 2013 в 11:37
"iNFerNo" wrote:

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

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

Аватар пользователя iNFerNo iNFerNo 6 июня 2013 в 11:40

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

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

Аватар пользователя josgir josgir 6 июня 2013 в 12:44

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

Аватар пользователя Niklan Niklan 6 июня 2013 в 14:24
"iNFerNo" wrote:

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

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

"iNFerNo" wrote:

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

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

"josgir" wrote:

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

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

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

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

if (address.length > 1) {

на

if (address.length > 0) {
Аватар пользователя Niklan Niklan 6 июня 2013 в 15:19
"iNFerNo" wrote:

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

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

Аватар пользователя Niklan Niklan 6 июня 2013 в 16:11
"iNFerNo" wrote:

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

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

Аватар пользователя Lotar Lotar 8 июня 2013 в 19:40

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

Аватар пользователя Niklan Niklan 8 июня 2013 в 19:52
"Lotar" wrote:

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

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

Аватар пользователя Niklan Niklan 8 июня 2013 в 20:12
"Lotar" wrote:

zoomControl="20,50"

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

Аватар пользователя Niklan Niklan 8 июня 2013 в 20:55

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

"kosHta" wrote:

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

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


Аватар пользователя Niklan Niklan 8 июня 2013 в 22:19
"kosHta" wrote:

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

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

Аватар пользователя josgir josgir 28 июля 2013 в 15:16

Понадобилось мне в Яндекс карте, чтобы центр карты был в месте отличном от первого адреса, и чтобы метка не выводилась, сделал так: в файл 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>
Аватар пользователя Niklan Niklan 24 августа 2013 в 22:19

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

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

Аватар пользователя Niklan Niklan 27 августа 2013 в 14:15
"josgir" wrote:

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

Аватар пользователя josgir josgir 29 августа 2013 в 19:38
"Niklan" wrote:

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

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

Аватар пользователя Dalay Dalay 29 августа 2013 в 20:16
/**
 * Implements hook_page_build().
 */

function mappy_page_build(&$page) {
...

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

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

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

Аватар пользователя josgir josgir 29 августа 2013 в 20:35

Для яндекс не разобрался как делать кластеры, но для гуглокарты сделал:
Версия 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 29 августа 2013 в 21:36
"Dalay" wrote:

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

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

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

Аватар пользователя josgir josgir 30 августа 2013 в 6:14
"Niklan" wrote:

Если ваш код пашет, я в дев ветку пушну его.

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

"Niklan" wrote:

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

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

Аватар пользователя Niklan Niklan 30 августа 2013 в 13:16

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

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

Аватар пользователя Niklan Niklan 30 августа 2013 в 12:49
"Dalay" wrote:

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

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

Аватар пользователя Dalay Dalay 30 августа 2013 в 14:35
"Niklan" wrote:

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

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

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

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

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

Аватар пользователя Dalay Dalay 30 августа 2013 в 16:21
"Niklan" wrote:

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

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

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

Аватар пользователя Niklan Niklan 30 августа 2013 в 16:00
"Dalay" wrote:

в виде фильта

не понял

"Dalay" wrote:

кастомным полем

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

Аватар пользователя Dalay Dalay 30 августа 2013 в 16:22
"Niklan" wrote:

не понял

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

"Niklan" wrote:

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

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

"Niklan" wrote:

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

)

Аватар пользователя Niklan Niklan 30 августа 2013 в 16:38
"Dalay" wrote:

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

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

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

Аватар пользователя Dalay Dalay 30 августа 2013 в 16:54
"Niklan" wrote:

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

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

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

Аватар пользователя Niklan Niklan 11 сентября 2013 в 13:45

Вопрос к Dalay.

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

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

Аватар пользователя Dalay Dalay 11 сентября 2013 в 18:51
"Niklan" wrote:

Вопрос к Dalay.

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

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

Аватар пользователя Niklan Niklan 11 сентября 2013 в 19:30
"Dalay" wrote:

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

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

Аватар пользователя Dalay Dalay 13 сентября 2013 в 10:52
"Niklan" wrote:

Ну вобщем я и задал. Зачем это делать фильтрами? Что это даст? Принципиальное отличие какое? Все завязано на 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 13 сентября 2013 в 11:28
"Dalay" wrote:

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

Это я понял.

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

Аватар пользователя Niklan Niklan 13 сентября 2013 в 15:14

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

"Dalay" wrote:

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

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

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

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

Аватар пользователя Niklan Niklan 13 сентября 2013 в 16:25
"Dalay" wrote:

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

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

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

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

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

Аватар пользователя Dalay Dalay 13 сентября 2013 в 16:47
"Niklan" wrote:

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

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

"Niklan" wrote:

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

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

Аватар пользователя Niklan Niklan 13 сентября 2013 в 17:09
"Dalay" wrote:

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

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

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

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

Аватар пользователя Niklan Niklan 13 сентября 2013 в 20:13
"Dalay" wrote:

Заменяй токен на рендер-массив, к нему лайбы и приаттачиш.

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

Аватар пользователя Dalay Dalay 13 сентября 2013 в 20:23
"Niklan" wrote:

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

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

Аватар пользователя Dalay Dalay 13 сентября 2013 в 21:20

Пожалуй, друпалвейно в случае с фильтрами, все не сделать. Тогда, конеш, подключай 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 15 сентября 2013 в 17:21

В 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 18 сентября 2013 в 11:59

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

Аватар пользователя grob.82 grob.82 27 сентября 2013 в 14:26

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

Аватар пользователя Niklan Niklan 27 сентября 2013 в 15:04
"grob.82" wrote:

и в настройки не смог попасть, ведет на admin/structure

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

"grob.82" wrote:

а вот функция так и не работает...

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

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

Аватар пользователя Niklan Niklan 27 сентября 2013 в 15:46
"grob.82" wrote:

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

Проблему нашел. Заключается в 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 27 сентября 2013 в 17:34
"Niklan" wrote:

а скрипт ищет zoomControl.

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

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

Аватар пользователя Niklan Niklan 27 сентября 2013 в 18:35
"grob.82" wrote:

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

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

Аватар пользователя grob.82 grob.82 27 сентября 2013 в 18:50

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

Аватар пользователя grob.82 grob.82 13 октября 2013 в 12:04

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

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

Аватар пользователя Niklan Niklan 14 октября 2013 в 11:51
"grob.82" wrote:

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

"grob.82" wrote:

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

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

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

Аватар пользователя Niklan Niklan 22 октября 2013 в 19:41

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

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

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

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

Аватар пользователя Niklan Niklan 25 октября 2013 в 21:33

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

Аватар пользователя Niklan Niklan 26 октября 2013 в 11:25

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

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

Аватар пользователя Niklan Niklan 26 октября 2013 в 13:34

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

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

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

Аватар пользователя Niklan Niklan 28 октября 2013 в 19:57

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

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

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

Аватар пользователя Niklan Niklan 30 октября 2013 в 17:49

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

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

Аватар пользователя simeiz simeiz 3 ноября 2013 в 19:00

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

Аватар пользователя Niklan Niklan 3 ноября 2013 в 21:07
.mappy.google {
    width: 100% !important;
}

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

Аватар пользователя grob.82 grob.82 10 ноября 2015 в 11:49

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

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

Аватар пользователя grob.82 grob.82 4 ноября 2013 в 17:36
<?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 ноября 2013 в 18:21


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

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

Аватар пользователя grob.82 grob.82 4 ноября 2013 в 18:38

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

Аватар пользователя Niklan Niklan 4 ноября 2013 в 19:20

Чот не могу понять в чем проблема.
Нашел что в 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 ноября 2013 в 19:32

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

Аватар пользователя Niklan Niklan 4 ноября 2013 в 19:42
"grob.82" wrote:

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

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

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

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

Аватар пользователя drupby drupby 10 ноября 2015 в 11:49

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

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

Аватар пользователя Niklan Niklan 4 ноября 2013 в 20:13
"drupby" wrote:

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

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

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

Аватар пользователя Niklan Niklan 4 ноября 2013 в 20:24
"drupby" wrote:

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

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

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

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

Аватар пользователя Niklan Niklan 5 ноября 2013 в 11:36
"simeiz" wrote:

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

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

Аватар пользователя Niklan Niklan 5 ноября 2013 в 12:24
"grob.82" wrote:

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

Аватар пользователя grob.82 grob.82 5 ноября 2013 в 12:30
"Niklan" wrote:

и в Firefox?

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

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

Аватар пользователя Niklan Niklan 5 ноября 2013 в 13:09
"grob.82" wrote:

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

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

Аватар пользователя Niklan Niklan 5 ноября 2013 в 19:44

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

Аватар пользователя artemrrr artemrrr 7 ноября 2013 в 21:25

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

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

Аватар пользователя Niklan Niklan 7 ноября 2013 в 21:47
"artemrrr" wrote:

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

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

"artemrrr" wrote:

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

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

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

"artemrrr" wrote:

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

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

Аватар пользователя artemrrr artemrrr 7 ноября 2013 в 22:10

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

Аватар пользователя Niklan Niklan 7 декабря 2013 в 17:23
"artemrrr" wrote:

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

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

Аватар пользователя artemrrr artemrrr 7 декабря 2013 в 17:40
"Niklan" wrote:

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

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

Аватар пользователя Niklan Niklan 7 декабря 2013 в 18:15

Ну создаете поле текстовое, называете например 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;
}
?>
Аватар пользователя drupby drupby 7 декабря 2013 в 22:08
"Niklan" wrote:

Ну создаете поле текстовое

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

Аватар пользователя Niklan Niklan 7 декабря 2013 в 22:54
"drupby" wrote:

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

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

Аватар пользователя artemrrr artemrrr 8 декабря 2013 в 15:31

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

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

Аватар пользователя artemrrr artemrrr 8 декабря 2013 в 15:53
"Niklan" wrote:

инфа 100

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

Аватар пользователя Niklan Niklan 8 декабря 2013 в 15:56
<google address="г. Пермь" zoom="17" width="600" height="300"></google>

А так?

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

<!DOCTYPE html>

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

Аватар пользователя artemrrr artemrrr 8 декабря 2013 в 16:02
"artemrrr" wrote:

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

Аватар пользователя Niklan Niklan 8 декабря 2013 в 16:06
"artemrrr" wrote:

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

Аватар пользователя Niklan Niklan 8 декабря 2013 в 17:08
"small dead peach" wrote:

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

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

"artemrrr" wrote:

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

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

Аватар пользователя errand errand 25 января 2014 в 12:00

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

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

Аватар пользователя Boozenok Boozenok 14 февраля 2014 в 15:00

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

Аватар пользователя Niklan Niklan 21 февраля 2014 в 15:05
"errand" wrote:

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

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

"Boozenok" wrote:

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

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

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

Аватар пользователя Niklan Niklan 15 июня 2014 в 20:41

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 21 января 2015 в 12:46

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

Аватар пользователя molp molp 1 июля 2015 в 0:31
olegcvc wrote:

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

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

Аватар пользователя Niklan Niklan 1 июля 2015 в 13:16

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

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

Аватар пользователя molp molp 1 июля 2015 в 20:04
Niklan wrote:

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

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

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

Аватар пользователя Niklan Niklan 15 июля 2015 в 7:42
"molp" wrote:

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

Аватар пользователя Virkom Virkom 16 октября 2015 в 9:37

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

Суть в том, что 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 16 октября 2015 в 9:44

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

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

Аватар пользователя Virkom Virkom 16 октября 2015 в 9:54
josgir wrote:

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

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

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

Аватар пользователя Niklan Niklan 16 октября 2015 в 12:29
"Virkom" wrote:

Drupal.settings.mappy_location содержит 'modules/mappy'

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

Аватар пользователя Virkom Virkom 16 октября 2015 в 13:30

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

Аватар пользователя Virkom Virkom 16 октября 2015 в 13:57

Все, ошибку понял. Малый опыт работы с 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 18 октября 2015 в 23:41
Niklan wrote:

`/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, то открывается скрипт, который вполне находится по этому адресу. Но консоль пишет, что не может найти этот скрипт. Потому что путь к нему где-то неправильно формируется.

Аватар пользователя Virkom Virkom 19 октября 2015 в 9:12
Director cemetery wrote:
"Virkom" wrote:

test

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

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

Аватар пользователя Studio VIZA Studio VIZA 19 октября 2015 в 9:21
"Virkom" wrote:

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

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

Аватар пользователя Virkom Virkom 19 октября 2015 в 9:42
Director cemetery wrote:
"Virkom" wrote:

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

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

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

Аватар пользователя Studio VIZA Studio VIZA 19 октября 2015 в 10:07
"Virkom" wrote:

Где написано, что он должен?

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

Аватар пользователя Virkom Virkom 19 октября 2015 в 10:17
Director cemetery wrote:

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

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

Аватар пользователя Studio VIZA Studio VIZA 19 октября 2015 в 10:44
"Virkom" wrote:

А не предполагать по умолчанию, что он будет находиться по пути

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

Аватар пользователя Virkom Virkom 19 октября 2015 в 10:55
Director cemetery wrote:

При чём здесь движок?

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 19 октября 2015 в 12:11
"Virkom" wrote:

это наводит на мысли, что виновен движок

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

"Director cemetery" wrote:

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

Аватар пользователя Niklan Niklan 19 октября 2015 в 12:29

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

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

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

Аватар пользователя Virkom Virkom 19 октября 2015 в 13:45
Niklan wrote:

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 19 октября 2015 в 12:48

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

Аватар пользователя Studio VIZA Studio VIZA 19 октября 2015 в 13:05
"Virkom" wrote:

которым лень прописывать на каждый чих новый домен

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

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

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

Аватар пользователя Virkom Virkom 19 октября 2015 в 13:37
Director cemetery wrote:

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

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

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

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

Аватар пользователя Orion76 Orion76 19 октября 2015 в 15:04

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

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

Аватар пользователя The Doctor The Doctor 6 июля 2016 в 16:25

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 17 января 2017 в 11:20

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