База знаний

Наш портал будет работать быстро ТОЛЬКО на хостинге TimeWeb Лучший хостинг для городского портала

Информация о версиях

12.11.2019
4.2
3.9.13
7.2
5.6

Требования к хостингу

CMS Joomla 3!
ionCube 10
UTF- 8
7.2
5.6

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

Так же обновлена система управления, до последней актуальной Joomla 3.9.11, добавлена возможность обновления версии PHP с 7.1 до 7.2 (7.1 перестанет поддерживаться в конце 2019 года)

Номер версии: 3.9

 Что нового?

  • Версия PHP 7.2
  • Обновлена CMS Joomla до версии 3.9.11
  • Переделаны Яндекс Карты (добавлена кластеризация)
  • Добавлены общие карты во всех каталогах
  • Добавлена reCaptcha в комментарии

Инструкция по обновлению портала до версии 3.9

ВЕРСИЯ PHP

Начиная с версии 2.2 портал будет работать только на версии PHP 7.1. Так же на хостинге обязательно наличие ionCube 10 (не ниже)

Убедитесь, что Ваш хостинг поддерживает эти версии и только после этого производите обновление портала

Важно!

После обновления все файлы шаблона будут заменены на стандартные, поэтому, если Вы делали какие-то собственные доработки в файлах,они будут заменены стандартным кодом. Учитывайте это при обновлении и ОБЯЗАТЕЛЬНО делайте резервные копии!

ОБЯЗАТЕЛЬНО!

Перед этим обновлением сделайте полную резервную копию портала, вместе с базой данных

Важно!

После этого обновления все адреса в портале будут подгружаться из поля Координата, а не по адресу объекта.

Обновляем файлы шаблона

Для общего обновления файлов шаблона.

  1. Вам необходимо пройти авторизацию на сайте
  2. Перейти на страницу с порталом
  3. Под кнопкой Скачать портал, Вы увидите кнопку Скачать обновление
  4. После того, как Вы скачаете архив с обновлением , Вам необходимо перейти Расширения/Менеджер расширений/Установка
  5. В архиве pro_portal_update.zip найдите подархив update_3_9.zip. перетащите его в поле Перетащите и отпустите файл сюда для загрузки.

Обновляем компонент JComments

Переходим Расширения/Менеджер расширений/Установка и устанавливаем архив Jcomments-Recaptcha2.zip (он находится в папке Расширения)

Переходим в плагин CAPTCHA-reCAPTCHA, опубликовываем его и вставляем ключи от Google (инструкция по получению ключей)

Далее переходим в Компоненты/JComments/Настройки, переходим на вкладку Вид, листаем вниз и в поле каптчи выбираем CAPTCHA - reCAPTCHA (Joomla)

Добавление меток в формы добавления

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

Для начала проверим наличие поле Координата (поле должно было появится у Вас после обновления с Народной картой)

Перейдем в Поля и найдем это поле. Запомним его id = 109 (если Вы обновлялись самостоятельно до предыдущих версий, это поле у Вас может иметь другое id - его нужно запомнить).

Войдем в это поле и установим Все категории и значение по умолчанию 0,0

Если такое поле у Вас отсутствует совсем, тогда создаем его.

Переходим в форму Добавить организацию на вкладку Свойства. В левом меню открываем CSS и Javascript. В поле Javascript вставляем код

<script>
ymaps.ready(init);
function init() {
    var myPlacemark,
        myMap = new ymaps.Map('Ymap', {
            center: [58.58267654585965,49.570856499999984],
            zoom: 10,
 controls: []
        }, {
          
        });

    // Слушаем клик на карте.
    myMap.events.add('click', function (e) {
        var coords = e.get('coords');

  input = document.getElementById('coord'); // целевой тег <input>
  coord.value = coords;      

  // Если метка уже создана – просто передвигаем ее.
        if (myPlacemark) {
            myPlacemark.geometry.setCoordinates(coords);
        }
        // Если нет – создаем.
        else {
            myPlacemark = createPlacemark(coords);
            myMap.geoObjects.add(myPlacemark);
            // Слушаем событие окончания перетаскивания на метке.
            myPlacemark.events.add('dragend', function () {
                getAddress(myPlacemark.geometry.getCoordinates());
            });
        }
        getAddress(coords);
    });

    // Создание метки.
    function createPlacemark(coords) {
        return new ymaps.Placemark(coords, {
            iconCaption: 'поиск...'
        }, {
            preset: 'islands#DotIconWithCaption',
            iconColor: '#0066cc',
            draggable: true
        });
    }
    // Определяем адрес по координатам (обратное геокодирование).
    function getAddress(coords) {
        myPlacemark.properties.set('iconCaption', 'поиск...');
        ymaps.geocode(coords).then(function (res) {
            var firstGeoObject = res.geoObjects.get(0);

            myPlacemark.properties
                .set({
                    // Формируем строку с данными об объекте.
                    iconCaption: [
                        // Название населенного пункта или вышестоящее административно-территориальное образование.
                        firstGeoObject.getLocalities().length ? firstGeoObject.getLocalities() : firstGeoObject.getAdministrativeAreas(),
                        // Получаем путь до топонима, если метод вернул null, запрашиваем наименование здания.
                        firstGeoObject.getThoroughfare() || firstGeoObject.getPremise()
                    ].filter(Boolean).join(', '),
                    // В качестве контента балуна задаем строку с адресом объекта.
                    balloonContent: firstGeoObject.getAddressLine()

                });
        });
    }
}
  
</script>

в коде есть координата центра карты и zoom. Их нужно поменять на свои

            center: [58.58267654585965,49.570856499999984],
            zoom: 10

 

Далее в этой же форме переходим на вкладку Компоненты и создаем 2 новых поля:

1. Свободный текст. Называем его map_code и вставляем код

<p class="map_txt">Поставьте точку на карте, что бы организация отображалась в общем списке</p>
<div id="Ymap"></div>

После сохранения Вы можете переместить это поле с помощью мыши в нужное место в самой форме

2. Текстовое поле. Его называем просто coord. (обратите внимание, что это поле не будет отображаться в форме добавления, оно скрыто в стилях)

Теперь переходим на вкладку Свойства. В левом меню Сопоставления. Создаем новое сопоставление.

field_id = id поля Координата, которое создавали в начале обновления, у нас оно = 109.

item_id = {item_id:value}

value = {coord:value}

После этого закрываем форму и пробуем добавить организацию.

Добавление меток в формы Редактирования

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

Переходим в форму Редактировать организацию на вкладку Свойства. В левом меню открываем CSS и Javascript. В поле Javascript вставляем код

<script>
ymaps.ready(init);
function init() {
    var myPlacemark,
        myMap = new ymaps.Map('Ymap', {
            center: [58.58267654585965,49.570856499999984],
            zoom: 10,
 controls: []
        }, {
          
        });

    // Слушаем клик на карте.
    myMap.events.add('click', function (e) {
        var coords = e.get('coords');

  input = document.getElementById('coord'); // целевой тег <input>
  coord.value = coords;      

  // Если метка уже создана – просто передвигаем ее.
        if (myPlacemark) {
            myPlacemark.geometry.setCoordinates(coords);
        }
        // Если нет – создаем.
        else {
            myPlacemark = createPlacemark(coords);
            myMap.geoObjects.add(myPlacemark);
            // Слушаем событие окончания перетаскивания на метке.
            myPlacemark.events.add('dragend', function () {
                getAddress(myPlacemark.geometry.getCoordinates());
            });
        }
        getAddress(coords);
    });

    // Создание метки.
    function createPlacemark(coords) {
        return new ymaps.Placemark(coords, {
            iconCaption: 'поиск...'
        }, {
            preset: 'islands#DotIconWithCaption',
            iconColor: '#0066cc',
            draggable: true
        });
    }
    // Определяем адрес по координатам (обратное геокодирование).
    function getAddress(coords) {
        myPlacemark.properties.set('iconCaption', 'поиск...');
        ymaps.geocode(coords).then(function (res) {
            var firstGeoObject = res.geoObjects.get(0);

            myPlacemark.properties
                .set({
                    // Формируем строку с данными об объекте.
                    iconCaption: [
                        // Название населенного пункта или вышестоящее административно-территориальное образование.
                        firstGeoObject.getLocalities().length ? firstGeoObject.getLocalities() : firstGeoObject.getAdministrativeAreas(),
                        // Получаем путь до топонима, если метод вернул null, запрашиваем наименование здания.
                        firstGeoObject.getThoroughfare() || firstGeoObject.getPremise()
                    ].filter(Boolean).join(', '),
                    // В качестве контента балуна задаем строку с адресом объекта.
                    balloonContent: firstGeoObject.getAddressLine()

                });
        });
    }
}
  
</script>

в коде есть координата центра карты и zoom. Их нужно поменять на свои

            center: [58.58267654585965,49.570856499999984],
            zoom: 10

Далее в этой же форме переходим на вкладку Компоненты и создаем 2 новых поля:

1. Свободный текст. Называем его map_code и вставляем код

<p class="map_txt">Поставьте точку на карте, если Вы хотите изменить адрес организации</p>
<div id="Ymap"></div>

После сохранения Вы можете переместить это поле с помощью мыши в нужное место в самой форме

2. Текстовое поле. Его называем просто coord. (обратите внимание, что это поле не будет отображаться в форме добавления, оно скрыто в стилях) в это поле вставляем код

//<code>
$doc = JFactory::getDocument();
$item_id = JRequest::getInt('id');
$db = JFactory::getDbo();
$db->setQuery("SELECT `value` FROM #__fields_values WHERE `item_id` = '$item_id' AND `field_id` = '109'");
$coord = $db->loadResult();
return $coord;
//</code>

где field_id = 109, 109 меняем на id поля Координата (если оно отличается)

Далее добавляем Сопоставление на обновление поле Координата при редактировании организации. Показал ниже все скриншотами

Создание модуля вывода карт

Переходим Расширения/Модули. Создаем модуль с типом Материалы - Список материалов категории. Позиция модуля top_map (вставляется просто руками). Все остальные настройки показаны на скриншотах

Отзывы и комментарии

Taldomaleks Taldomaleks
Taldomaleks Taldomaleks
04.09.2019 23:51
Что-то я не нашел подархив update_3_9.zip Подскажите где конкретно искать
Александр Новиков
Александр Новиков ведущий разработчик
05.09.2019 11:23
Добрый день. Мы не заменили файл с обновлениями. Скачайте, пожалуйста, обновление еще раз

Для того, что бы оставить отзыв или комментарий, Вам необходимо Войти

Скачать городской портал

Возможности нашего городского портала

Последние отзывы и комментарии

Скачать городской портал на Joomla 3 PRO-portal.info © 2017 г.

Наш продукт на CMS Joomla 3 - Городской портал "мой Город" принадлежит исключительно и только PRO-PORTAL.info. Любое его распространение, копирование, тиражирование, перепродажа, без согласования с разработчиком, категорически ЗАПРЕЩЕНЫ!

Информация, представленная на сайте, не является публичной офертой