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

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

[FAQ] Не выводить модуль для отпредённой страны ?

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

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

Пол: Мужской
Сообщений: 85



« : 08.01.2013, 12:21:35 »

Доброго времени суток!
Подскажите пожалуйста, как можно отключить вывод модуля для определённой страны?
Спасибо!  
« Последнее редактирование: 29.08.2013, 10:17:18 от b2z » Записан
b2z
Support Team
*****

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

Пол: Мужской
Сообщений: 7622


Разраблю понемногу


« Ответ #1 : 08.01.2013, 12:39:27 »

Вот интересно, а как Вы хотите страну получить? По IP?
Записан
Magl
Осваиваюсь на форуме
***

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

Пол: Мужской
Сообщений: 85



« Ответ #2 : 08.01.2013, 12:51:26 »

пока что у меня идея взять список ИП страны и с помощью условий (<!--[if условие]> <![endif]-->)
для этих ИП не выводить код
Но это как-то бредово немного мне кажется мне придётся тогда весть диапазон ИП в шаблон вставлять

Посетуйте может другой вариант 
Может можно через php сделать проше определение страны и отключение вывода позиции модуля
« Последнее редактирование: 08.01.2013, 13:03:32 от Magl » Записан
b2z
Support Team
*****

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

Пол: Мужской
Сообщений: 7622


Разраблю понемногу


« Ответ #3 : 08.01.2013, 13:10:34 »

Да вроде нет на PHP ничего такого из коробки... В сети можно конечно поискать. Вот, например.
Записан
Fedor Vlasenko
Профи
********

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

Пол: Мужской
Сообщений: 3826


Все начинается с Value


« Ответ #4 : 08.01.2013, 13:12:48 »

Может этот  - Страна по IP адресу. Сам не тестировал
Записан
Magl
Осваиваюсь на форуме
***

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

Пол: Мужской
Сообщений: 85



« Ответ #5 : 08.01.2013, 14:41:18 »

Да вроде нет на PHP ничего такого из коробки... В сети можно конечно поискать. Вот, например.

Спасибо! воспользовался твоим вариантом и всё получилось
И этой стаи Ссылка взял 2 файла (geoip.inc и GeoIP.dat) которые надо подключить и кинул их в корень сайта
Дальше в шаблоне вставил код где в IF идёт сравнение по стране, если страна не совпала то выводим позицию если совпала то не выводим

Код:
<?php
include("geoip.inc");
$ch = "China";
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
$defaultcountry = geoip_country_name_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
if ($ch!==$defaultcountry){
echo '<jdoc:include type="modules" name="right-use2" style="xhtml" />';
}?>
Записан
b2z
Support Team
*****

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

Пол: Мужской
Сообщений: 7622


Разраблю понемногу


« Ответ #6 : 08.01.2013, 14:44:05 »

Отлично. Добавлю в FAQ, может еще кому будет полезно.
Записан
varX
Живу я здесь
******

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

Сообщений: 1529


разработка компонентов


« Ответ #7 : 08.01.2013, 17:51:40 »

Для определения страны пользователя нет никакой необходимости подключаться к левым базам и делать ненужные запросы. В php есть замечательная функция gethostbyaddr.

Код
$domen = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$cantry = array_reverse(explode('.', $domen));

$cantry[0] выводит ru для России и т.п.
« Последнее редактирование: 08.01.2013, 19:22:41 от lcd25 » Записан
b2z
Support Team
*****

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

Пол: Мужской
Сообщений: 7622


Разраблю понемногу


« Ответ #8 : 08.01.2013, 17:54:48 »

То есть у всех в мире есть свое доменное имя?

Цитировать
Just wanted to let everyone know that gethostbyaddr() takes more than 20 seconds to respond if the IP address is not listed in DNS.

So be careful if you are going to use this function in the production environment. You or your users may not be able to get the response from the server before the timeout occurs. Slow website only makes people very frustrated.
Записан
varX
Живу я здесь
******

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

Сообщений: 1529


разработка компонентов


« Ответ #9 : 08.01.2013, 18:38:04 »

Не пишите глупости. Всем в мире не нужно свое доменное имя. Доменное имя нужно интернет-провайдеру пользователя, и как раз оно, как правило, всегда соответствует стране проживания.

Задержка 20 сек., вообще первый раз слышу такое. Если функция не находит доменное имя узла, то возвращает адрес. Пример
http://www.mirsite.ru/servis/1/2.htm
Вот адрес, который не распознается 199.227.140.1
Где 20 сек.?
Записан
b2z
Support Team
*****

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

Пол: Мужской
Сообщений: 7622


Разраблю понемногу


« Ответ #10 : 08.01.2013, 19:17:53 »

Где 20 сек.?
Не знаю, не проверял и не утверждал. Цитату привел из комментов к функции. Если это не так, то просто замечательно.
Записан
reasons
Давно я тут
****

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

Сообщений: 390

http://dehost.biz


« Ответ #11 : 21.01.2013, 19:53:07 »

а как сделать чтобы модуль выводился для определенной страны?
Записан
b2z
Support Team
*****

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

Пол: Мужской
Сообщений: 7622


Разраблю понемногу


« Ответ #12 : 21.01.2013, 19:59:02 »

Для RU

Код
$domen = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$country = array_reverse(explode('.', $domen));
 
if ($country[0] == 'ru')
{
// module
}
Записан
reasons
Давно я тут
****

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

Сообщений: 390

http://dehost.biz


« Ответ #13 : 21.01.2013, 20:05:43 »

это надо в код модуля запихнуть?
Записан
b2z
Support Team
*****

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

Пол: Мужской
Сообщений: 7622


Разраблю понемногу


« Ответ #14 : 21.01.2013, 21:48:15 »

это надо в код модуля запихнуть?
В шаблон конечно.
Записан
Страниц: [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