День добрый нуждаюсь в помощи перелопачивания
меню чтоб отдельное меню для отдельных IP были под Joomla 3
вот пример под старую версию Joomla
1. Открываем в PHP-редакторе файл /modules/mod_menu/mod_menu.xml.
2. Добавьте новый параметр после field name="showAllChildren"
Код:
<field
name="allowed_ip"
type="textarea"
filter="safehtml"
label="Разрешенные IP-адреса"
description="Показывать меню только для указанных IP-адресов" rows="10" cols="20" />
Должно выглядеть вот так:
Новый параметр "Разрешенные IP-адреса"

Не забудьте сохранить в UTF8.
3. Откройте теперь файл шаблона /templates/beez_20/htm/modules.php. Учитывая, что менюшки отображаются в позиции №7 со стилем "beezDivision", то наш код следует добавить в функцию modChrome_beezDivision, причем в самое начало:
Код:
$userIP = $_SERVER['REMOTE_ADDR'];
if (trim($params->get('allowed_ip', ''))) {
$allowedIP = explode( "\r\n", trim($params->get('allowed_ip')) );
if (is_array($allowedIP) && !in_array($userIP, $allowedIP)) return;
}
Должно выглядеть вот так:
Обработка нового параметра "Разрешенные IP-адреса"

4. Сохраняем. Переходим к нужному модулю меню в админке и добавляем нужные IP-адреса в новый параметр "Разрешенные IP-адреса". Для теста на локали можно указать 127.0.0.1. Сохраняем и смотрим во фронте -- модуль есть. Указываем другой адрес -- 127.0.0.2. Сохраняем и смотрим во фронте -- модуля нет. Если надо указать несколько адресов -- каждый адрес с новой строки.
ВУАЛЯ!
Пример параметра "Разрешенные IP-адреса"

Меняем наш код на следующий:
Код
$userIP = $_SERVER['REMOTE_ADDR'];
$iUserIP = @ip2long($_SERVER['REMOTE_ADDR']);
$allowed = false;
if (trim($params->get('allowed_ip', ''))) {
$allowedIP = explode( "\r\n", trim($params->get('allowed_ip')) );
if (is_array($allowedIP) && count($allowedIP) && !in_array($userIP, $allowedIP)) {
foreach($allowedIP as $IP)
if (strpos($IP, '-')!== false) {
$rngIP = explode( "-", $IP );
if ($iUserIP >= @ip2long($rngIP[0]) && $iUserIP <= @ip2long($rngIP[1])) {
$allowed = true;
break;
}
}
} else {
$allowed = true;
}
if ($allowed === false) return;
}
Диапазон указывать через дефис, т.е. следующим образом:
127.0.0.1-127.0.0.234.
