Геолокация с помощью Sypex Geo
Добрый день.
Задался вопросом использовать возможности автоматического определения местоположения пользователя для развития одного интернет-ресурса. В частности, интересовала возможность реализации автоматической подстановки города в метатеги и заголовки сайта.
Для этого использовал базу SypexGeo. Код сниппета [[!SypexGeo]]:
Все работает хорошо. Но вот как быть со склонениями? Кто подскажет как модифицировать данный срипт для того, чтобы можно было без труда вставлять названия города и области со склонениями? Ведь к примеру он дает нам «в Москв(а)», а нам нужно «в Москв(е)».
Задался вопросом использовать возможности автоматического определения местоположения пользователя для развития одного интернет-ресурса. В частности, интересовала возможность реализации автоматической подстановки города в метатеги и заголовки сайта.
Для этого использовал базу SypexGeo. Код сниппета [[!SypexGeo]]:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
require_once($modx->config['base_path']."sxgeo/SxGeo.php");
$SxGeo = new SxGeo($modx->config['base_path'].'sxgeo/SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY);
$region = $SxGeo->getCityFull($ip);
$regionname = $region["region"]["name_ru"];
$regioncity = $region["city"]["name_ru"];
switch ($regioncity) {
case 'Москва':$output = "1"; break;
default:
$output = "0";
};
$modx->setPlaceholder('regionname',$regionname);
$modx->setPlaceholder('regioncity',$regioncity);
Таким образом, на сайте мы можем использовать плейсхолдер [[+regioncity]], который даст нам название города? а также плейсхолдер [[++regionname]], в который попадает название области, края, республики.Все работает хорошо. Но вот как быть со склонениями? Кто подскажет как модифицировать данный срипт для того, чтобы можно было без труда вставлять названия города и области со склонениями? Ведь к примеру он дает нам «в Москв(а)», а нам нужно «в Москв(е)».
Комментарии: 4
самый простой и быстрый вариант завести или в сниппете или в базе таблицу соответствия названия => склонение
Типа такого?
И в БД носить тоже можно. Но по идее можно ограничиться только крупными городами и областными центрами.
Подскажите как с БД связать, мне кажется будет лучше через БД.
case 'Москва':$output = "в Москве"; break;
Но городов масса. получается кода будет ооочень много.И в БД носить тоже можно. Но по идее можно ограничиться только крупными городами и областными центрами.
Подскажите как с БД связать, мне кажется будет лучше через БД.
есть компонент на основе базы Sypex Geo, там есть возможность редактировать описание. Можно его поставить и брать данные оттуда. Или создать свою страничку в админке и там все редактировать.
ps. Описание компонента сейчас добавлю.
ps. Описание компонента сейчас добавлю.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.