Форум русской поддержки Joomla!® CMS
09.12.2016, 19:33:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Выбор города при входе на сайт

 (Прочитано 782 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dannik
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 108


« : 24.12.2015, 14:37:48 »

Здравствуйте! Хочу сделать выбор города на сайте как здесь -  https://shop.kz/ При выборе города цены меняются, а вот домен остается тот-же. Как это можно организовать на Joomla 3? Кто-нибудь делал подобное? Из расширений нашел только My City Selector, но как я понял там все равно нужно делать поддомены.
Так же смотрел на Chameleon, но там все как то замудрено. Существует ли вариант попроще? Если у кого видео или статьи есть на эту тему поделитесь пожалуйста.
Заранее благодарен  Smiley
Записан
Dannik
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 108


« Ответ #1 : 24.12.2015, 15:00:42 »

Скидываю идею на рассмотрение - Что если просто создать выпадающее меню с названием городов, а затем привязать модули с показом товаров к каждому городу (Упс, простите сразу не сказал, делаю интернет магазин, и нужно что бы цены на товары менялись в зависимости от выбора города).
Так вот - модули будут показывать товары отображаясь там где указали. Получится что два сайта в одном. Или фигня получится? )))
Записан
caleblt
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 56


« Ответ #2 : 24.12.2015, 15:33:07 »

Я делал это с помощью Яндекс карт. Просто в модуле. Правда давно делал и на коленке, но это вполне рабочий вариант, обрабатывается клиентом, а не сервером, что опять же плюс. Можно сделать при выборе города обычный each jQuery для всех цен. Ну а дальше куки в руки.
Код:
<script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
<style>
#modal_form {
    width: 700px;
    height: 340px;
    border-radius: 5px;
    background: #fff;
    position: fixed;
    top: 45%;
    left: 50%;
    margin-top: -170px;
    margin-left: -350px;
    display: none;
    opacity: 0;
    z-index: 5;
    padding: 20px 10px;
}

#modal_form #modal_close {
    width: 21px;
    height: 21px;
    position: absolute;
top: 10px;
right: 10px;
cursor: pointer;
display: block;
}

#overlay {
z-index: 3;
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
cursor: pointer;
display: none;
}
#insol-map-modal{width:315px; height:315px;float:right;margin:10px;}
#spisok-gorodov{width:345px;height:460px;margin:10px;float:left;}
#spisok-gorodov table{width:100%;}
#spisok-gorodov td{text-decoration:underline;cursor:pointer;}
</style>

<div id="select-city-go">выбор города</div>
<div id="modal_form">
<span id="modal_close">X</span>
<div id="spisok-gorodov">
<table>
<tr><td>Архангельск</td><td>Омск</td></tr>
<tr><td>Астрахань</td><td>Орел</td></tr>
<tr><td>Барнаул</td><td>Оренбург</td></tr>
<tr><td>Владивосток</td><td>Пенза</td></tr>
<tr><td>Волгоград</td><td>Пермь</td></tr>
<tr><td>Вологда</td><td>Петрозаводск</td></tr>
<tr><td>Воронеж</td><td>Ростов-на-Дону</td></tr>
<tr><td>Екатеринбург</td><td>Рязань</td></tr>
<tr><td>Ижевск</td><td>Самара</td></tr>
<tr><td>Иркутск</td><td>Санкт-Петербург</td></tr>
<tr><td>Казань</td><td>Саратов</td></tr>
<tr><td>Кемерово</td><td>Тольятти</td></tr>
<tr><td>Красноярск</td><td>Томск</td></tr>
<tr><td>Краснодар</td><td>Тула</td></tr>
<tr><td>Липецк</td><td>Тюмень</td></tr>
<tr><td>Махачкала</td><td>Ульяновск</td></tr>
<tr><td>Москва</td><td>Уфа</td></tr>
<tr><td>Набережные Челны</td><td>Хабаровск</td></tr>
<tr><td>Нижний Новгород</td><td>Челябинск</td></tr>
<tr><td>Новокузнецк</td><td>Ялта</td></tr>
<tr><td>Новосибирск</td><td>Ярославль</td></tr>
</table>
</div>
<div id="insol-map-modal"></div>
</div>
<div id="overlay"></div>

<script>

jQuery('#select-city-go').click(function() {
jQuery('#overlay').fadeIn(400,
function(){
jQuery('#modal_form')
.css('display', 'block')
.animate({opacity: 1, top: '50%'}, 200);
});

jQuery('#select-city-go').click( function(event){
event.preventDefault();
jQuery('#overlay').fadeIn(400,
function(){
jQuery('#modal_form')
.css('display', 'block')
.animate({opacity: 1, top: '50%'}, 200);
});
});

jQuery('#modal_close, #overlay').click( function(){
jQuery('#modal_form')
.animate({opacity: 0, top: '45%'}, 200,
function(){
jQuery(this).css('display', 'none');
jQuery('#overlay').fadeOut(400);
}
);
});
});

  function setCookie(name, value) {
    document.cookie = name + "=" + value;
  }
  function getCookie(name) {
    var r = document.cookie.match("(^|;)?" + name + "=([^;]*)(;|$)");
    if (r) return r[2];
    else return "";
  }
  function deleteCookie(name) {
    var date = new Date();
    date.setTime(date.getTime() - 1);
    document.cookie = name += "=; expires=" + date.toGMTString();
  }

//jQuery("#spisok-gorodov td").click(function(){ alert(jQuery(this).text()); });

ymaps.ready(function () {
    geolocation = ymaps.geolocation;
    var myMapMod = new ymaps.Map('insol-map-modal', {
            center: [47.22, 39.71],
            zoom: 12,
            controls: []
        });

    geolocation.get({
        provider: 'yandex',
        mapStateAutoApply: true
    }).then(function (result) {
        result.geoObjects.options.set('preset', 'islands#blueIcon');
        myMapMod.geoObjects.add(result.geoObjects);
        var firstGeoObject = result.geoObjects.get(0);
        coords = firstGeoObject.geometry.getCoordinates();
        myMapMod.setZoom(12);
city_name=firstGeoObject.properties.get('name');
jQuery('#select-city-go').html(city_name);
        setCookie("city_name", city_name);
    });

jQuery("#spisok-gorodov td").click(function(){
city_click=jQuery(this).text();
jQuery('#select-city-go').html(city_click);
        setCookie("city_name", city_click);
    ymaps.geocode(city_click, { results: 1  }).then(function (res) {
            var firstGeoObject = res.geoObjects.get(0),
            coords = firstGeoObject.geometry.getCoordinates(),
            bounds = firstGeoObject.properties.get('boundedBy');
            myMapMod.geoObjects.add(firstGeoObject);
            myMapMod.setBounds(bounds, { checkZoomRange: true });
        });
});
   
        mySearchControl = new ymaps.control.SearchControl({
            options: {
                noPlacemark: true,
                position: { left: 0, top: 0 }
            }
        });
    // Результаты поиска будем помещать в коллекцию.
        mySearchResults = new ymaps.GeoObjectCollection(null, {
            hintContentLayout: ymaps.templateLayoutFactory.createClass('$[properties.name]')
        });
    myMapMod.controls.add(mySearchControl);
    myMapMod.geoObjects.add(mySearchResults);

    // Выбранный результат помещаем в коллекцию.
    mySearchControl.events.add('resultselect', function (e) {
        var index = e.get('index');
        var results = mySearchControl.getResultsArray(); coords = results[index].geometry.getCoordinates();
        myMapMod.setZoom(12);
        city_name=results[index].properties.get('name');
        jQuery('#select-city-go').html(city_name);
        setCookie("city_name", city_name);
        mySearchControl.getResult(index).then(function (res) {
           mySearchResults.add(res);
        });
        }).add('submit', function () {
            mySearchResults.removeAll();
        });
});
</script>
Записан
Dannik
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 108


« Ответ #3 : 24.12.2015, 16:11:56 »

Я делал это с помощью Яндекс карт. Просто в модуле. Правда давно делал и на коленке, но это вполне рабочий вариант, обрабатывается клиентом, а не сервером, что опять же плюс. Можно сделать при выборе города обычный each jQuery для всех цен. Ну а дальше куки в руки.
Код:
<script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>

<style>
#modal_form {
    width: 700px;
    height: 340px;
    border-radius: 5px;
    background: #fff;
    position: fixed;
    top: 45%;
    left: 50%;
    margin-top: -170px;
    margin-left: -350px;
    display: none;
    opacity: 0;
    z-index: 5;
    padding: 20px 10px;
}

#modal_form #modal_close {
    width: 21px;
    height: 21px;
    position: absolute;
top: 10px;
right: 10px;
cursor: pointer;
display: block;
}

#overlay {
z-index: 3;
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
cursor: pointer;
display: none;
}
#insol-map-modal{width:315px; height:315px;float:right;margin:10px;}
#spisok-gorodov{width:345px;height:460px;margin:10px;float:left;}
#spisok-gorodov table{width:100%;}
#spisok-gorodov td{text-decoration:underline;cursor:pointer;}
</style>

<div id="select-city-go">выбор города</div>
<div id="modal_form">
<span id="modal_close">X</span>
<div id="spisok-gorodov">
<table>
<tr><td>Архангельск</td><td>Омск</td></tr>
<tr><td>Астрахань</td><td>Орел</td></tr>
<tr><td>Барнаул</td><td>Оренбург</td></tr>
<tr><td>Владивосток</td><td>Пенза</td></tr>
<tr><td>Волгоград</td><td>Пермь</td></tr>
<tr><td>Вологда</td><td>Петрозаводск</td></tr>
<tr><td>Воронеж</td><td>Ростов-на-Дону</td></tr>
<tr><td>Екатеринбург</td><td>Рязань</td></tr>
<tr><td>Ижевск</td><td>Самара</td></tr>
<tr><td>Иркутск</td><td>Санкт-Петербург</td></tr>
<tr><td>Казань</td><td>Саратов</td></tr>
<tr><td>Кемерово</td><td>Тольятти</td></tr>
<tr><td>Красноярск</td><td>Томск</td></tr>
<tr><td>Краснодар</td><td>Тула</td></tr>
<tr><td>Липецк</td><td>Тюмень</td></tr>
<tr><td>Махачкала</td><td>Ульяновск</td></tr>
<tr><td>Москва</td><td>Уфа</td></tr>
<tr><td>Набережные Челны</td><td>Хабаровск</td></tr>
<tr><td>Нижний Новгород</td><td>Челябинск</td></tr>
<tr><td>Новокузнецк</td><td>Ялта</td></tr>
<tr><td>Новосибирск</td><td>Ярославль</td></tr>
</table>
</div>
<div id="insol-map-modal"></div>
</div>
<div id="overlay"></div>

<script>

jQuery('#select-city-go').click(function() {
jQuery('#overlay').fadeIn(400,
function(){
jQuery('#modal_form')
.css('display', 'block')
.animate({opacity: 1, top: '50%'}, 200);
});

jQuery('#select-city-go').click( function(event){
event.preventDefault();
jQuery('#overlay').fadeIn(400,
function(){
jQuery('#modal_form')
.css('display', 'block')
.animate({opacity: 1, top: '50%'}, 200);
});
});

jQuery('#modal_close, #overlay').click( function(){
jQuery('#modal_form')
.animate({opacity: 0, top: '45%'}, 200,
function(){
jQuery(this).css('display', 'none');
jQuery('#overlay').fadeOut(400);
}
);
});
});

  function setCookie(name, value) {
    document.cookie = name + "=" + value;
  }
  function getCookie(name) {
    var r = document.cookie.match("(^|;)?" + name + "=([^;]*)(;|$)");
    if (r) return r[2];
    else return "";
  }
  function deleteCookie(name) {
    var date = new Date();
    date.setTime(date.getTime() - 1);
    document.cookie = name += "=; expires=" + date.toGMTString();
  }

//jQuery("#spisok-gorodov td").click(function(){ alert(jQuery(this).text()); });

ymaps.ready(function () {
    geolocation = ymaps.geolocation;
    var myMapMod = new ymaps.Map('insol-map-modal', {
            center: [47.22, 39.71],
            zoom: 12,
            controls: []
        });

   geolocation.get({
        provider: 'yandex',
        mapStateAutoApply: true
    }).then(function (result) {
        result.geoObjects.options.set('preset', 'islands#blueIcon');
        myMapMod.geoObjects.add(result.geoObjects);
        var firstGeoObject = result.geoObjects.get(0);
        coords = firstGeoObject.geometry.getCoordinates();
        myMapMod.setZoom(12);
city_name=firstGeoObject.properties.get('name');
jQuery('#select-city-go').html(city_name);
        setCookie("city_name", city_name);
    });

jQuery("#spisok-gorodov td").click(function(){
city_click=jQuery(this).text();
jQuery('#select-city-go').html(city_click);
        setCookie("city_name", city_click);
     ymaps.geocode(city_click, { results: 1  }).then(function (res) {
            var firstGeoObject = res.geoObjects.get(0),
            coords = firstGeoObject.geometry.getCoordinates(),
            bounds = firstGeoObject.properties.get('boundedBy');
            myMapMod.geoObjects.add(firstGeoObject);
            myMapMod.setBounds(bounds, { checkZoomRange: true });
        });
});
    
        mySearchControl = new ymaps.control.SearchControl({
            options: {
                noPlacemark: true,
                position: { left: 0, top: 0 }
            }
        });
    // Результаты поиска будем помещать в коллекцию.
        mySearchResults = new ymaps.GeoObjectCollection(null, {
            hintContentLayout: ymaps.templateLayoutFactory.createClass('$[properties.name]')
        });
    myMapMod.controls.add(mySearchControl);
    myMapMod.geoObjects.add(mySearchResults);

    // Выбранный результат помещаем в коллекцию.
    mySearchControl.events.add('resultselect', function (e) {
        var index = e.get('index');
        var results = mySearchControl.getResultsArray(); coords = results[index].geometry.getCoordinates();
        myMapMod.setZoom(12);
        city_name=results[index].properties.get('name');
        jQuery('#select-city-go').html(city_name);
        setCookie("city_name", city_name);
        mySearchControl.getResult(index).then(function (res) {
           mySearchResults.add(res);
        });
        }).add('submit', function () {
            mySearchResults.removeAll();
        });
});
</script>
Записан
Dannik
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 108


« Ответ #4 : 24.12.2015, 16:13:03 »

Благодарю за ответ, а можно немного детальней, просто я не так силен в программирование. Я на этот код еще часа два буду смотреть. Куда его сунуть? Что с ним делать? В какой модуль ставить и тд. Я в это пока чайник ))))
Записан
caleblt
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 56


« Ответ #5 : 24.12.2015, 17:34:48 »

Если не силён в программировании, то тут сложнее конечно. Код естественно нужно модифицировать под Ваши нужды, а значит их нужно знать более подробно. Я бы рекомендовал поискать знакомого js программиста, дать ему доступ к сайту, что бы он всё сделал как надо. Я бы например внёс кое какие коррективы в код магазина, там где отображаются цены.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet