Joomla 4. Компонент K2 и форк K2ForJ4 (18 янв 2024)

Если вас, как и меня, достало выслушивать (вычитывать) бесконечные обещания разработчика K2 опубликовать версию компонента K2 под Joomla 4 (без чего невозможно реализовать апгрейд from Joomla 3 to Joomla 4) - воспользуйтесь форком K2ForJ4. Который в данный момент установлен и без каких-либо проблем работает на этом веб-сайте.

Google карта в постах форума

Больше
10 года 1 мес. назад #11 от АлексейК
АлексейК ответил в теме Google карта в постах форума
Поймалась, зараза! В той же папке, файл bbcode.php.

// Display only link in activity streams etc..
if (!empty($bbcode->parent->forceMinimal) || !($document instanceof JDocumentHTML)) {
$url = ' maps.google.com/?q='.urlencode ($bbcode->UnHTMLEncode($content));
return '<a href="'.$url.'" rel="nofollow" target="_blank">'.$content.'</a>';
}

if ($id === false) {
$document->addScript(' maps.google.com/maps/api/js?sensor= '.($sensor == true ? 'true' : 'false'));
$id = 0;
}

Теперь надо придумать, что с этим сделать... :huh:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 2
Больше
9 года 10 мес. назад #12 от АлексейК
АлексейК ответил в теме Google карта в постах форума
Продолжаю борьбу с кривой картой. Пришёл к выводу, что собака покопалась вот именно в этой строчке:

maps.google.com/maps/api/js?sensor='.($sensor == true ? 'true' : 'false'));

Кунена использует безключевую, версию гугл-мап, от сего и ущербность.
Вот как выглядит эта строка в рекомендациях от картографического сервиса Гугл:
maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE">

Как я понимаю, для использования нормальной карты, надо использовать бесплатный API-ключ от Гугла.
Подробнее тут: ссылка
Причём, что интересно, при использовании соответствующего ключа, можно вставлять весь спектр приложений Гугл этого направления - Гугл энджен, Гугл-трек, и т.п. (см. список ключей на их страничке).
Остается как-то нормально вписать это в файл bbcode.php, где все танцы вокруг карты начинаются с 1058 строчки.
Я совершенно беспомощен в PHP, но буду пробовать. Буду признателен за помощь.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 10 мес. назад - 9 года 10 мес. назад #13 от АлексейК
АлексейК ответил в теме Google карта в постах форума
Ага, ну в принципе ничего жуткого. Получив нужный API, я немного переписал файлик, и стала вставляться несколько иная карта. Причем ее параметры можно менять, это не сложно.
Но вот беда с неверным размещением маркера на карте, по координатам вписанным между терами - осталась.
Маркер по прежнему убегает к ближайшей трассе или населенному пункту, никак не желая ставиться "в чистом поле".
Не ужели баг в прописке отображения координат? :blink:
Да и вообще, честно говоря, не доработка какая-то. Нажимаем кнопку "ссылка", к примеру, и получаем два окошка - одно для вставки урла, второе - для вписания его названия.
Не ужели нельзя было при нажатии кнопки "Карта" сделать такие же два окошка - в одном "ввод координат/адреса" во втором - название маркера, а не мучать пользователя изобретательством между терами map ?! :unsure:
Последнее редактирование: 9 года 10 мес. назад пользователем АлексейК.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 10 мес. назад #14 от АлексейК
АлексейК ответил в теме Google карта в постах форума
Да, действительно, недоработка есть. Правильней - упрощение. Вот фрагмент кода, отвечающего за наложение маркера на подгружаемую карту:
Code:
$document->addScriptDeclaration(" // <![CDATA[ var geocoder; var $mapid; window.addEvent('domready', function() { geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(37.333586,-121.894684); var myOptions = { zoom: $map_zoom, disableDefaultUI: $map_control, center: latlng, mapTypeId: google.maps.MapTypeId.$map_type }; $mapid = new google.maps.Map(document.id('".$mapid."'), myOptions); var address = ".json_encode($content)."; if (geocoder) { geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { $mapid.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ position: results[0].geometry.location, map: $mapid });
Видно, что применена библиотека геокодера, и ни строчки об отображении точки (point) по заданным координатам.
Геокодер преобразует координаты введенные пользователем между терами map в точку, наиболее приближенную к известным библиотеке объектам. Соответственно, "в чистом поле" какие не тыкай координаты, точки не будет.
Надо дописывать код, для точного отображения маркером введенных координат.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум