Александр Лемягов написал: Сделал всё как написано.. не работает.... Пишет что доступ к файлу /bitrix/admin/index.php закрыт.... Вопрос. сам сайт должен быть открыт в админке при этом?
Если Вы проделаете все из приведенного сообщения, то в админке сайт нужно открыть. Так как, сайт будет "закрываться" автоматически при заходе пользователя из определенной группы (условие в коде формируете самостоятельно на свое усмотрение), например, "Незарегистрированные пользователи"
P.S> нажмите, пожалуйста, "мне нравится", если мой совет оказался полезен
Как закрыть публичную часть сайта только для определённой группы пользователей?
Данный функционал можно реализовать на основе обработки события OnProlog (вызывается в начале визуальной части пролога сайта).
Для этого Вам надо в файл /bitrix/php_ibterface/init.php добавить приведённый ниже код:
function CloseAccessForGroup() { //объявляется глабальный объект "Пользователь" и "Приложение" global $USER, $APPLICATION;
//смотрим в какой группе находится текущий пользователь (функция возвращает ID группы). $mas = $USER->GetUserGroupArray();
/*проверяем, что пользователь находится хотя бы в одной группе и с помощью PHP функции in_array проверяем находится ли группа пользователя в списке запрещённых групп для доступа к публичной части сайта*/ if (count($mas)>0 && in_array(1, $mas) && (strpos($APPLICATION->GetCurPage(),'/bitrix/admin/'))===false) { /*здесь можно вставить произвольное сообщение о запрете доступа (но надо обязательно выполнить функцию die()*/ die('Access denied'); }
}
//Здесь мы привязываем обработчик события к нашей функции AddEventHandler("main", "OnProlog", "CloseAccessForGroup");
Примеры использования функции in_array():
in_array(4, $mas) - закрыть доступ к публичной части группе с ID=4
in_array(Array (4, 6), $mas) закрыть доступ к публичной части группам с ID=4 и ID=6
Для кастомизации выводимой при этом странцы нужно создать файл /bitrix/php_interface/include/site_closed.php с содержимым для страницы закрытого сайта.
Евген Юрьевич написал: Только я думаю правильно было бы получать ID раздела - это проще сделать ))
Супер
Можно и с ID и с CODE (символьный код) привязать, только не забудьте, что при некоторых настройках импорта с 1С раздел может удалиться, а при последующем импорте создаться заново. В таком случае у него будет уже другой ID и придется вносить эту правочку в таблицу соответствия свойств и разделов. А символьный код, как правило, не меняется.
Сразу скажу, что все написанное снизу - "костыль", а не красивое решение. Правильным подходом было бы исправить косяк импорта из 1с.
- Итак, у нас заранее известно, как называется свойство (например, PROFILE) у каждого из разделов (у раздела игрушки - это материал, у раздела мебель - это высота). - Загоняем эти соответствия в массив (или другую удобную для вас структуру данных)
- Пишем функцию, которая будет возвращать название свойства для нужного нам раздела. Делать это она будет на основе входящих данных и вышеуказанного массива, содержащего соответствия названий свойств для каждого раздела. А входящими данными будут две переменные : раздел, для которого нужно узнать название свойства и код свойства инфоблока, например, тот самый PROFILE.
- Размещаем функцию в разделе php_interface. Подробнее тут Это даст нам возможность не дублировать в будущем данный функционал в каждом месте, где потребуется работать со свойствами, а вызывать все из одного места. Поддерживать и вносить изменения в будущем будет, так же, значительно легче.
- Вызываем функцию в любом месте, например, в шаблоне фильтра , передавая ей раздел и код свойства и получаем нужное нам название этого свойства в данном разделе
P.S> нажмите, пожалуйста, "мне нравится", если мой совет оказался полезен
Ну тогда я бы написал классификатор - функцию, которая будет по входящим параметрам - ID раздела, в котором лежит элемент и по ID / коду свойства выдавать нужное название данного свойства в данном инфоблоке.
Разместил бы её в php_interface и вызывал в шаблонах фильтра/каталога.
То есть, в битрикс вы тоже выгружаете разные по смыслу свойства (высота и профиль, например) в одно единственное свойство инфоблока (например, PROFILE) ?
Если речь идет о компоненте "Список заказов" в публичной части, то проще всего зайти на страницу , на которой вызывается данный компонент через текстовый редактор и изменить параметр "ORDERS_PER_PAGE" вручную, например, прописав 20 - как и было.
Единоразово сбросить кеш можно комбинацией клавиш: Cntrl+F5. Еще более надежно проверять результат в режиме инкогнито ( сейчас почти все браузеры поддерживают эту фишку)
Для отключения кеша:
Откройте Google Chrome.
Нажмите комбинацию клавиш Ctrl+Shift+i. Появится окно, в нижнем правом углу которого отыщите вот такую кнопку (Settings - Настройки):
Отметьте чекбокс "Disable cache" (Отключить кэш):
В результате - вы успешно отключите кэш в Google Chrome.
Для Mozila Firefox:
- Введите в адресной строке браузера Firefox команду about:config - В окне браузера появится страница с предупреждением об осторожности, подтвердите, что будете осторожны. - После этого посредством встроенного поиска найдите следующие параметры, и измените их значения:
Ольга Стафиевская написал: То есть разделы указанного инфоблока появляются. Но когда мы переходим в раздел инфоблока, в меню должны появиться подразделы этого раздела, в котором мы находимся - вот этого не происходит.
Так это уже совсем другая задача
При использовании данного компонента потребуется ручное "допиливание". В фильтре ГетЛиста "из коробки" не предусмотрен фильтр по активному разделу.
Либо вирус, либо постороннее вторжение) Требуется целый комплекс мер для защиты. Как минимум: - Выявить и удалить весь зловредный код - Сменить все пароли (от доступов FTP, SSH, от учеток админа итд) - По логам и анализу безопасности выявить способ , которым был осуществлен взлом.
Не следует путать понятие "раздела" - физической директории на диске и понятие "раздела инфоблока" , которое здорово описано в справочных материалах >ссылка<
В Вашем случае необходимо разместить в разделе сайта (например, в папке /news/) файл .top.menu_ext.php (где .top.menu - название типа меню. Может быть еще .left.menu , либо произвольным,если тип меню Вы создавали вручную).
В меню появятся разделы указанного Вами инфоблока. P.S> не забудьте поставить галочку в настройках компонента меню "Подключать файлы ext" (дословно не помню, но смысл таков)
P.P.S> жмите "мне нравится", если мой совет оказался полезен
Если не хочется пилить свой компонент, могу предложить "некрасивый", но быстро реализуемый вариант : перед вызовом news.list делать запрос на получение первой новости.
Например, если у Вас порядок новостей определяется датой: - получаем GetList'ом и сохраняем в переменную $sFromDate дату первой новости - формируем фильтр для компонента по типу:
Код
global $arrFilter;
$arrFilter = Array("<DATE_ACTIVE_FROM" => $sFromDate);
Теперь news.list выведет лишь элементы,которые "старее", чем первая новость.
P.S> жмите "мне нравится", если мой совет оказался полезен
Олег Дроздов написал: В двух разных инфоблоках) Подскажите решение, пожалуйста
Элемент инфоблока может быть привязан ко многим разделам, но лишь к одному инфоблоку.
Если у вас уже есть готовая структура каталога, то опишите ,пожалуйста, ее и саму задачу поподробнее ( что нужно сделать,а главное, для чего это нужно на ваш взгляд?)
Если структура еще нету, то предлагаю следующий вариант: Для каталога создается два инфоблока. В одном будут сами товары,во втором Тороговые предложения данного товара.
Например, товар "Iphone 6" будет иметь несколько товарных предложений ( черный айфон, белый айфон, золотой итд).
Вообще, дополнительный гетлист здорово заменять SubQuery() http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/SubQuery.php Однако, в Вашем случае немного не пойму, при чем тут " TEST.NAME". Это свойства лишь в массиве SELECT, т.е. будет возвращено его значение для элементов, но оно ни как не участвует в фильтре.
Во-первых, начать с прохождения "Монитора качества" Битрикса. Он позволяет выявить множество критичных моментов. Если нужно копать глубже и оценивать качество кода,а не просто определить "работает / не работает" заявленный функционал , то обратитесь к профессионалам в разработке на Битрикс за аудитом в разделе "Вакансии и резюме" данного форума.