А у нас новый сайт ----------------> www.ph-ph.ru!
Finar.ru
web.finar.ru
video.finar.ru
Темы для BootstrapNew!

Гео-локация для NetCat

 Просмотров:1349

Версия NetCat: любая с модулем "Личный кабинет"
Статус: стабильный
Стоимость внедрения ? руб.

Этот рецепт можно установить и на ваш сайт. Внедрение производится после 100% предоплаты. Указана стоимость без учета работ по дизайну, каких-либо индивидуальных доработок и при оплате электронными деньгами. Работоспособность гарантирована. Если по каким-либо причинам рецепт не удается установить на ваш сайт, мы возвращаем все деньги.

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

Welcome! редактировать

Дата обновления 2011-12-02

Внимание: описание и код рецепта на этой странице могут быть актуальнее архива для скачивания!

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

Источники

Внедрения

Лицензия и политика использования

Разработчикам сайтов:

Рецепт распространяется под лицензией Creative Commons Share Alike (BY-SA) .

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

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

Если вам понравился наш рецепт и вы хотите поблагодарить нас, вы можете сделать это следующими способами:

  1. доработать и улучшить рецепт и выслать нам обновление;
  2. прислать нам на web@finar.ru ссылку на внедрение (возможно, она появится в списке внедрений);
  3. на странице вашего сайта поставить ссылку на эту страницу;
  4. поблагодарить нас рублем, переслав любую сумму на наши электронные счета.

Есть идеи по сотрудничеству? Пишите: web@finar.ru

Владельцам сайтов:

Этот рецепт можно установить и на ваш сайт. Внедрение производится после 100% предоплаты. Указана стоимость без учета работ по дизайну, каких-либо индивидуальных доработок и при оплате электронными деньгами. Работоспособность гарантирована. Если по каким-либо причинам рецепт не удается установить на ваш сайт, мы возвращаем все деньги.

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

Welcome! редактировать


Внимание: описание и код рецепта на этой странице могут быть актуальнее архива для скачивания!

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

Рецепт внедрения геолокации на сайт. Предполагается, что для каждого города будет создан поддомен. Например, если вы хотите внедрить данный рецепт на домен domain.ru, то для пользователей из default city нужно будет создать поддомен default.domain.ru. Далее будет растолкована логика работы скрипта при разных условиях

Возможности:

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

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

Для неавторизованного пользователя, город которого наш скрипт не определил или город определен, но его нет в списке наших сайтов, переадресации НЕ будет на какой бы домен не зашел пользователь, но будет появляться окошко, с дополнительной информацией и ссылкой, что делать дальше :)

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

Установка:

1. Закачиваем эти файлы к себе на сервер geo_files.7z (скачиваний: 0)

2. Пишем в браузерной строке http://ВАШ_ДОМЕН/путь_до_папки_geo_files/geo_files/dbedit.php

Примечание: в дальнейшем будет предполагать, что файлы закачаны и имеют следующий путь /images/geo_files/

3. Ждем, до появления 2 строчек:

Вставлено строк в (geo_ips): N-строк
Вставлено строк в (geo_cities): M-строк

4. Переходим к неткату и создаем 2 поля:

В системной таблице "Сайты" добавляем поле City | строка
В системной таблице "Пользователи" добавляем поле SiteLink | строка
Примечание:
* поле SiteLink следует удалить из формы добавления пользователя. А в шаблоны действий -> добавления -> условия добавления объекта записать $f_SiteLink = $_SERVER[HTTP_HOST];
* поле City следует заполнять соответственно городу, которому предназначен данный поддомен. Например: для Москвы - нужно вписать Москва, для Самары - Самара

5. Теперь к макету дизайна. В самое начало Header'а, перед всем html'ом вставляем следующий код:

"; 
 /* используемые переменные
    $_COOKIE['confirmCity'] - ставится при нажатии на 'подтвердить'
    $current_user[SiteLink] - домен сайта на котором регистрировался пользователь
    $_COOKIE[changeCity] - ставится при выборе любого города из списка на сайте
    $location['city_title'] - город посетителя определенный по ip
*/

###переменные для правки###

//путь до файла ip.php
$geo_ip_url = '/images/geo_files/ip.php';
//домен второго уровня с . впереди на коротом производятся все манипуляции
$domain_lvl2 = '.domain.ru';
//ссылка, которая будет показываться не авторизованным пользователям, у которых города нет в списке наших сайтов, либо //город не определился
$no_city = 'www.some_url.ru'

if($AUTH_USER_ID){

    if(isset($_COOKIE['confirmCity']) && $_COOKIE['confirmCity'] != $current_user[SiteLink]){
        listQuery("
UPDATE User SET SiteLink='$_COOKIE[confirmCity]' WHERE User_ID=$current_user[User_ID]") ;
    }

    if($_SERVER[HTTP_HOST] != $current_user[SiteLink] && !isset($_COOKIE[changeCity])){
        header("
Location: http://$current_user[SiteLink]");
        exit();
    }              
}
else{

    if(!isset($_COOKIE['confirmCity'])){

        if(!isset($_COOKIE['changeCity'])){
        //опреледеляем местонахождение
            if(!isset($_COOKIE[location])){
                include_once($DOCUMENT_ROOT.$geo_ip_url);
                setcookie('location', serialize($location), mktime(0,0,0,1,1,2020), '/', $domain_lvl2);
            }  
            else
                $location = unserialize(stripcslashes($_COOKIE[location]));

            //если нашли город - выбираем домен к которому он относится
            if($location['city_title']){
                $res = mysql_query("SELECT Domain FROM Catalogue WHERE City='$location[city_title]'");

                //делаем ссылку на поддомен  
                if($city = mysql_fetch_assoc($res)){
                    $city = $city['Domain'];

                    //если текущий домен не совпадает с выбранным доменом - переадресация         
                    if(!($_SERVER[HTTP_HOST] == $city || $_SERVER[HTTP_HOST] == 'www.'.$city)){
                        header("Location: http://$city");
                        exit();
                    }
                }
                //если нет сайта с городом посетителя показываем окошко
                else{
                    $redir_link = $no_city;
                }  
            }
            //если не определили город - тоже показываем окошко
            else{
                $redir_link = $no_city;
            }  
        }
    }
    //если есть подтвержденный город, url текущий не совпадает с подтвержденным url-ом и нету $_COOKIE[changeCity] - переадресация
    else{  
        if($_SERVER[HTTP_HOST] != $_COOKIE[confirmCity] && !isset($_COOKIE[changeCity])){
            header("Location: http://$_COOKIE[confirmCity]");
            exit();
        }  
    }

}

echo "
Примечание: обратите внимание на ###переменные для правки### в коде. Их нужно менять для вашего сайта исходя из примеров.

6. Подключаем файл frame.js

7. Следующий шаг - сделать переключатель городов. Не зарегистрированные, город которых есть в списке наших сайтов и авторизованные пользователи смогут перейти на другие сайты из списка ТОЛЬКО через эту форму. При попытке ввести URL в браузерной строке мы будем перекидывать их на "нужный" сайт. За основу был взят этот скрипт  и модифицирован под наши требования selectCity.7z (скачиваний: 0)

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

Процесс внедрения:

  • Если нужно подключаем библиотеку jQuery
  • Подлючаем один из двух стилей на выбор
  • Подлючаем jquery.fixedMenu.js
  • В нужном для вас месте пишем код:

<div class='selectCity'>
        <ul>
             <li>
                <span class='big city' style='padding: 0pt; margin: 0pt 7px;'> <a onclick='javascript:selectCity()' class='red color' href='#'>$current_catalogue[City]<span class='arrow'></span></a></span>
                ".s_browse_catalogue($cat_template)."  
            </li>

            <div style='float:left;'>
                <a href='#'> <span onclick='javascript:selectCity()' style='padding: 0pt 7px;'>изменить</span></a>
                ".(!isset($_COOKIE[confirmCity]) || isset($_COOKIE[changeCity]) ? "
                <br><a href='#' id='changeCity'> <span onclick=\"javascript:hide();blockFrame(1, "."'$_SERVER[HTTP_HOST]'".", "."'$domain_lvl2'".");\" style='padding: 0pt 7px;'>подтвердить</span></a>" : NULL)."
            </div>
        </ul>
</div>
 

$cat_template[prefix]= "<ul>";
$cat_template[suffix]= "</ul>";
$cat_template[active]= "";
$cat_template[active_link]= "";
$cat_template[unactive]= "<li><a href=%URL onclick='javascript:blockFrame(".'\"'."change".'\"'.", ".'\"'."".'\"'.", ".'\"'."$domain_lvl2".'\"'.");'>%City </a></li>";
$cat_template[divider]= "";
 

8. Заключительный этап - делаем окошко с дополнительной информацией для не авторизованного пользователя, город которого не из списка наших сайтов или город не был определен. За основу был взят этот скрипт  и модифицирован под наши требования stanlemon-jgrowl.7z (скачиваний: 0)

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

Процесс внедрения:

  • Если нужно подключаем библиотеку jQuery
  • Подключаем css-файл
  • Подключаем 2 js-файла: jquery.ui.all.js, jquery.jgrowl.js
  • В нужном месте пишем код:

".($redir_link ? "

<script type='text/javascript'>

        (function($){

            $(document).ready(function(){

                $('#help').jGrowl(\"К сожалению, мы не нашли сайт для вашего города. Более подробную информацию вы можете узнать <a href='http://".$redir_link."' style='color:#FFF;text-decoration:underline;' target='_blank'>тут</a>\", { header: 'Справка:', sticky: true});
            });
        })(jQuery);

</script>

<div id='help' class='top-left' style='position: fixed;'></div>" : NULL)."
 

To-do:

  • автообновление базы ip-адресов
  • написание модуля на основе всего этого

Оставить комментарий 


Ваше имя:
->

Edit | Source | Attach

админ-панель

напоминалки

шаблоны

edit this