четверг, 5 сентября 2013 г.
О GeoIP в TYPO3
Многим известна популярная библиотека PHP - GeoIP, с помощью которой по IP адресу клиента можно узнать его местоположение - континент, страну и пр. Как же её подключить и использовать в TYPO3?
Подключить GeoIP к TYPO3 довольно легко. Для этого я взял из репозитория плагин - ml_geoip. Несмотря на то, что я работал с версией TYPO3 - 6.1.1, а этот плагин последний раз обновлялся в марте 2009 (4 года назад!), он прекрасно установился и заработал.
Теперь, для чего я его поставил и как я его использовал?
Во-первых, есть замечательный экст - rlmp_language_detection, который умеет автоматически направлять пользователя на определенную языковую версию сайта в зависимости от локализации его браузера или географического местоположения. Географию клиента определяет, как вы догадались, именно ml_geoip.
Во-вторых, иногда требуется видоизменять сайт в зависимости от страны клиента. Как это делается? С помощью userfunc! Рассказываю...
1. Создаём директорию внутри fileadmin, например - user_funcs.
2. Создаём файл - fileadmin\user_funcs\tools.php :
пример для typoscript:
Ну вот и всё! Юзайте себе на здоровье!
Подключить GeoIP к TYPO3 довольно легко. Для этого я взял из репозитория плагин - ml_geoip. Несмотря на то, что я работал с версией TYPO3 - 6.1.1, а этот плагин последний раз обновлялся в марте 2009 (4 года назад!), он прекрасно установился и заработал.
Теперь, для чего я его поставил и как я его использовал?
Во-первых, есть замечательный экст - rlmp_language_detection, который умеет автоматически направлять пользователя на определенную языковую версию сайта в зависимости от локализации его браузера или географического местоположения. Географию клиента определяет, как вы догадались, именно ml_geoip.
Во-вторых, иногда требуется видоизменять сайт в зависимости от страны клиента. Как это делается? С помощью userfunc! Рассказываю...
1. Создаём директорию внутри fileadmin, например - user_funcs.
2. Создаём файл - fileadmin\user_funcs\tools.php :
<?php3. Итак, наш userfunc возвращает "1" если клиент не из Украины или России, и возвращает "0" в противном случае. Теперь об этом должна "узнать" TYPO3. Делается это так:
// Подключаем библиотеку GeoIP из директории плагина ml_geoip
require_once(t3lib_extMgm::extPath('ml_geoip').'class.tx_mlgeoip.php');
class user_tools {
function isEnglishVersion(){
$ip_address = $_SERVER['REMOTE_ADDR'];
$my_geoip = t3lib_div::makeInstance('tx_mlgeoip');
$gi_country_name = $my_geoip->getCountryNameByAddress($ip_address);
if (($gi_country_name==='Russia')||($gi_country_name==='Ukraine')){
return 0;
}
return 1; }}?>
includeLibs.tools = fileadmin/user_funcs/tools.php4. Теперь можно использовать наш объект -lib.isEnglishVersion либо в шаблоне fluid, либо в typoscript. Например:
lib.isEnglishVersion = USER
lib.isEnglishVersion {
userFunc = user_tools->isEnglishVersion
}
<f:if condition="{f:cObject(typoscriptObjectPath: 'lib.isEnglishVersion')} != 1">
<f:render partial="header/mypartial"/>
</f:if>
пример для typoscript:
[userFunc = isEnglishVersion()]
...
[else]
...
[global]
Ну вот и всё! Юзайте себе на здоровье!
Подписаться на:
Комментарии к сообщению (Atom)
О себе

- Вадим Гиркало
- Фрилансер, веб-разработчик сайтов на базе бесплатной, мощнейшей и очень гибкой CMS системы - TYPO3.
Мой сайт
Позвонить мне в Skype
TOP - 3
-
Как я уже писал в одной своей заметке ( SEO и общие рекомендации ), для сайта очень важно, чтобы при обращении к заведомо несуществующей ст...
-
Дорабатывая очередной свой сайт столкнулся с такой проблемкой. В шапке сайта есть две флэш вставки - банер, который вставлен через конструкц...
-
Несмотря на то, что материала по данной тематике вроде бы и достаточно, но весь он носит кусочно-латочно-разрозненный характер, что мешает б...
0 коммент.:
Отправить комментарий