Представляем вам модуль для dle Country Filter 2.0 добавляет в DLE 8.3 - 10.4 для создание функционала фильтрации контента в зависимости от страны посетителя, сама фильтрация осуществляется на основе базы данных IP адресов полезный мод если вы хотите запретить просмотр вашего сайта определенной страны и т.д., также не забывайте смотреть у нас и другие модули для dle уверены вы найдете для своего проекта много интересного и нужного.
[/spoiler]
Модуль добавляет теги:
[country=RU] показано только для RU, скрыто от остальных <br />[/country]
[country=RU,UA] показано только для RU и UA, скрыто от остальных <br />[/country]
[not-country=RU] скрыто только от RU, показано для всех остальных <br />[/not-country]
[not-country=RU,UA] скрыто только от RU и UA, показано для всех остальных <br />[/not-country]
и т.д. можно задавать код любой из стран или их список через запятую. Данные теги можно использовать как непосредственно в тексте новостей (краткой, полной и выводимых тегом custom) так и в файлах шаблона.
Что нового в этой версии:
1. База данных используется от сервиса DB-IP.
2. Инструкция по установке подстраивается под версию DLE.
3. Добавлена админка и инструкцию по импорту базы IP-адресов.
4. Оптимизирован поиск по базе страны посетителя.
5. Поддержка IPv6.
Установка:
Режим отладки/проверки работы модуля:
Что бы отладить/проверить работу модуля, в самом начале engine/modules/sitelogin.php заменить:
$_IP = get_ip();
на нужный IP, например:
$_IP = "192.168.0.1";
Внимание! В целях безопасности не стоит это делать на общедоступном сайте!
Для проверки определённой страны нужно в engine/modules/show.full.php, перед правками вставленными по инструкции установки модуля, добавить:
echo $member_id['user_country'];
и если вверху страницы полной новости выведется не страна для которой скрывается, в данном случае RU, то надо перелогинится на сайт, или если отлаживалось подменой IP, как описано выше, то удалить эту отладку, либо наоборот, в случае локальной проверки, вписать IP нужной страны.
Пример использование с настройкой доп. поля:
Создаём доп.поле:
Название: not_ru
Описание: Скрыть от РФ
Тип: список
Значение: первая строка пустая, вторая строка: да

В шаблоне применяем тег:
[xfgiven_not_ru][not-country=RU] доп.поле = да, видят все, кроме RU [/not-country][/xfgiven_not_ru]
[xfnotgiven_not_ru] доп.поле = пусто, видят все [/xfnotgiven_not_ru]
Пример удаление тегов attachment с текста полной новости с настройкой через доп. поле:
Доп. поле используется созданное в прошлом примере. В engine/modules/show.full.php, перед правками вставленными по инструкции установки модуля, добавить:
#****** Country Filter *** remove attachment ******#
if( $xfieldsdata['not_ru'] == "да" AND $member_id['user_country'] == "RU" ) {
$tpl->result['content'] = preg_replace( "#\[attachment=(.+?)\]#is", "", $tpl->result['content'] );
}
Пример использование со списком стран через доп. поле:
Удалить правки, что вносились по инструкции установки модуля, engine/classes/templates.class.php и создать доп.поле:
Название: country
Описание: Скрыть от стран
Тип: одна строка
Использовать при желании (можно оставить поле пуcтым)

В новости указать символьный код страны или стран через запятую от которых надо скрыть часть контента.
Пример использования в шаблоне:
[xfgiven_country][not-country=[xfvalue_country]] доп.поле не пустое, видят все, кроме [xfvalue_country] [/not-country][/xfgiven_country]
[xfnotgiven_country] доп.поле пустое, видят все [/xfnotgiven_country]
Внимание! Теги модуля после этого будут работать только в текстах и шаблонах краткой, полной и кустом новостей. В остальных шаблонах сайта теги модуля не будут отработаны.
Пример использование тегов attachment с текста полной новости со списком стран через доп. поле:
Доп. поле используется созданное в прошлом примере. В engine/modules/show.full.php, перед правками вставленными по инструкции установки модуля, добавить:
#****** Country Filter *** remove attachment ******#
if( $xfieldsdata['country'] != "" ) {
if( in_array( $member_id['user_country'], explode( ",", $xfieldsdata['country'] ) ) ) {
$tpl->result['content'] = preg_replace( "#\[attachment=(.+?)\]#is", "", $tpl->result['content'] );
}
}
Все!
Поправили, перекачайте архив.