Геолокация

Опубликовано: 15 Фев 2016

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

Сниппет geo

<?php
// строчка в скрипте, key='бла-бла-бла'
// вот то что после равно, это персональный ключ карт для сайта, получить можно тут https://tech.yandex.ru/maps/keys/get/
echo '
<script type="text/javascript" src="assets/templates/style/js/jquery-1.5.min.js"></script>
<script charset="utf-8" src="http://api-maps.yandex.ru/1.1/index.xml?key=бла-бла-бла" type="text/javascript"></script>
<div class="your_city">
<script type="text/javascript">
$(document).ready(function() {
if (YMaps.location.city !="") {
$("#city").val("" + YMaps.location.city +"");
}
Ymaps.location.city
})
</script>
<p></p>
<form style="display:none" method="post" id="myform">
<input type="text" name="city" id="city">
<input type="submit" name="send" id="send">
</form>
</div>';
session_start();
if (isset($_POST['city']))
{
 $_SESSION['city']  = $_POST['city']; // присваиваем посланные данные в сессию
}
if (!isset ($_SESSION['city'])){
    //нет сесии посылаем форму
 echo '
<script type="text/javascript">
$(document).ready(function() {
$("#myform").submit();
})
</script>';   
}else{
    //присваиваем переменной сессию и выводим город, если такое не надо просто закоментить
  $city=$_SESSION['city'];  
  return $city;
}

Сниппет geocity

<?php
if (!isset ($_SESSION['city'])){
 $city=167;  //то, что покажет, если  нет сессии, это вообщето не должно случится, но так на всяк случай, провека для дурака
}else{
  $city=$_SESSION['city'];  
    switch ($city) {
case 'Запорожье':
    $city=11;
    break;
case 'Харьков':
    $city=12;
    break;
case 'Черкассы':
    $city=105;
    break;// ну и до бесконечности, сколько нужно городов, циферка - это id ресурса-родителя, в конце можно еще по умолчанию, город сделать, если человек зайдет из города не из списка.
}
  return $city;
}

[ [!geo]]
[ [!getResources?
&parents=`[ [!geocity]]`
&tpl=`news`
&sortby=`{«id»:«ASC»}`
&depth=`0`
&includeContent=`1`
&includeTVs=`1`
&processTVs=`1`
]]

Комментарии (0)


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




Разрешённые теги: <b><i><br>Добавить новый комментарий: