1с битрикс закрыть сайт
Многосайтовость - это возможность системы «1С-Битрикс: Управление сайтом» управлять разными сайтами из единой Панели управления.
В данном курсе рассматриваются особенности системы многосайтовости и принципы работы с многосайтовой конфигурацией.
Перед прохождением данного курса рекомендуется сначала пройти курс Разработчик Bitrix Framework.
Начальные требования к подготовке
Для успешного прохождения курса и изучения работы системы многосайтовости необходимо владеть (хотя бы на начальном уровне):
- основами PHP;
- основами HTML, CSS;
- опытом работы с API.
После изучения курса вам будет предложено пройти тесты для проверки полученных знаний. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.
У нас часто спрашивают, сколько нужно заплатить
Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов - ничего из этого оплачивать не нужно.
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта
В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:
уроке.
Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.
Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
В этот раз поговорим немного о 1C-Bitrix. Про эту систему написано много, как плохого, так и хорошего, но сейчас не об этом. Эта статья первая их серии как о системе в целом, так и о способах решения конкретных проблем. В качестве подопытного будем использовать 15 версию Битрикса. В данном случае рассмотрим задачу закрытия публичной части сайта.
Ограничение доступа к публичной части сайта используется на этапах разработки сайта, когда доступ к нему сторонних пользователей нежелателен ввиду преждевременной публикации промежуточных результатов и, в некоторых случаях, негативного восприятия незавершенного проекта. Какие инструменты для этого нам предлагает Битрикс?
Самый простой способ — это закрыть публичную часть через панель администрирования. Для этого заходим в «Настройки» -> «Настройки продукта» -> «Настройки модулей» -> «Главный модуль» -> блок «Служебные процедуры» -> вкладка «Публичная часть» -> кнопка «Закрыть доступ для посетителей».
После нажатия на заветную кнопку доступ к публичной части будут иметь только пользователи, имеющие полный доступ к главному модулю. Если права доступа групп пользователей после установки системы не изменялись, то доступ к публичной части будут иметь только пользователи из группы «Администраторы». К слову, если вы разлогинились, то что бы попасть в панель администрирования достаточно дописать к адресу вашего сайта /bitrix/admin/.
Но что, если и этого нам не достаточно и необходима более точная настройка доступа? Аналогичным образом можно подставить любое другое значение доступа. Значения можно найти в БД в таблице b_operation, перечень уровней доступа в таблице b_task, связующая таблица b_task_operation. CanDoOperation — это метод класса CUser модуля main, так же можно использовать другие методы класса, описание которых можно найти в официальной документации для разработчиков, а также используя модуль «Живое описание АПИ» или его онлайн-версию.
Причины использования
Такая заглушка используется на время технических работ, чтобы оповестить приходящих посетителей, что над сайтом ведутся работы и он скоро откроется.
С другой стороны сайт может некорректно работать во время тяжелых обновлений, внедрения новых функций и изменения дизайна, что может повлечь за собой потерю репутации.
Еще один вариант использования заглушки сайта — потребность разрекламировать проект прежде чем тот будет запущен.
В этом случае на заглушке размещают:
информацию о проекте;
ознакомительный контент (фотографии ассортимента, видео и т.п.);
таймер обратного отсчёта до полноценного открытия;
форму обратной связи;
ссылки на соцсети;
промокод на первую покупку.
Стандартная страница “Сайт временно закрыт”
В Битриксе такая страница уже предусмотрена. Активация происходит через административный интерфейс в Настройки | Настройки продукта | Настройки модулей | Главный модуль.
Когда доступ к публичной части закрывается, всем посетителям (кроме администраторов) будет показана ну оооочень простая и чудовищно некрасивая страница “Site under construction”.
К слову: страница, которую показывает Битрикс при возникновении критической ошибки выглядит практически идентично.
Такой минимализм — почти гарантированный способ испортить впечатление у нового покупателя. Клиент убежит на сайт конкурента и больше не вернется. В случае если вскоре планируется открытие сайта, то с такой страницей не удастся заинтересовать пользователей и разрекламировать сайт.
Почему 1С-Битрикс до сих пор не облагородил эту страницу науке не известно. Мы просили об этом много раз еще с 2011-го года.
Другие недостатки стандартного закрытия сайта в Битриксе:
Закрыть можно только все сайты сразу (в многосайтовости);
Доступ закрывается для всех посетителей без возможности тонкой настройки;
Для поисковиков страница отдает статус 200, что не всем может подойти.
Тем не менее, создать страничку мечты заглушки можно. Есть три выигрышных стратегии:
создать файл site_closed.php;
создать обработчик события;
использовать готовое решение из Marketplace.
Способ 1. Создать файл Site Closed
Способ подразумевает кастомизацию стандартной заглушки, которая включается в главном модуле, кнопкой “Закрыть публичную часть сайта”.
Стандартная заглушка заменяется посредством создания файла site_closed.php в "/bitrix/php_interface/include" или "/local/php_interface/include".
Такая заглушка - обычная страница, поэтому размещенные на ней компоненты тоже будут работать. В то же время страница может быть собрана в конструкторе лендингов и никак не связана с дизайном сайта.
А такую заглушку мы используем на наших проектах. Если вам понравилась эта заглушка, то не пропустите - в конце статьи будет ссылка на скачивание.
Способ 2. Создать обработчик события
Также существует вариант создать собственную заглушку, используя событие onProlog. Этот способ удобен тем, что мы можем изменить логику показа заглушки: добавить проверку IP, групп пользователей, сайта в многосайтовости и т.п.
В этом примере с помощью обработчика события выводится заглушка по похожему сценарию, что и в первом способе. Например, здесь достаточно доработать логику, если стоит задача внести группу пользователей "Контент-менеджер" в исключения и не показывать им заглушку.
Способ 3. Установить решение из Marketplace
В Marketplace есть готовые решения для заглушки сайта. В том числе и бесплатные, например “Продвинутая заглушка”. Модуль позволяет контент-менеджеру быстро настроить желаемый контент для страницы: время до запуска, предварительную регистрацию пользователей, ссылки “поделиться” для соцсетей.
Выводы
Заглушка сайта — не такой важный фактор успеха проекта, как увеличение скорости работы после проведения технического аудита, удобство работы пользователя и оптимизация для поискового продвижения. Но на время обновлений, пусть это хоть 15 минут раз в неделю, это единственный способ показать посетителям, что всё в порядке, что сайт “живой”. Мы считаем, что разработка заглушки на современном, сложном сайте — правильный и закономерный шаг. Тем более что это простая задача, которую решит даже не-программист.
В декабре 2011 года компания 1С-Битрикс выпустила Управление Сайтом 11.0.10, и вывела управление правами доступа собственных модулей на новый уровень. К “классической триаде” обязательных методов любого модуля (InstallDB, InstallEvents и InstallFiles) добавился еще один, мало кому из программистов сегодня известный — InstallTasks. О нем и всех его аспектах и пойдет сегодня речь, но сначала немного теории.
Права и роли в ПО
Организация управления доступом на основе ролей (RBAC, Role Based Access Control) в ПО известна уже давно и в том или ином виде знакома большинству программистов. Почитать про нее можно в интернете, здесь же отметим ключевые ее особенности:
- Каждому пользователю системы присваивается Роль
- Каждая роль содержит набор Прав или Разрешений
- При выполнении любых операций происходит проверка именно Прав/Разрешений
Операции и уровни доступа в 1С-Битрикс УС
Сразу нужно запомнить — права в исходном коде УС называются не иначе как “operations” или “операции”, роли — “tasks” или “уровни доступа”. Управление операциями (их добавление или удаление) через панель управления невозможно — только через API системы (использование метода CModule::InstallTasks как раз является замечательным примером такого использования). А вот создание уровней доступа возможно не только через API, но и вручную, силами администратора или любого другого привилегированного пользователя по пути “Настройки->Пользователи->Уровни доступа”.
Эта страница должна быть знакома тем специалистам, которые хоть раз да настраивали на сайте доступ для “контент-менеджера” или “модератора” — сотрудников, у которых должен быть доступ в панель управления, но ограниченный. Такая настройка занимает совсем немного времени и не требует участия программиста.
В БУС нельзя напрямую назначать конкретные права на операции конкретным пользователям (в полном соответствии c RBAC ). Связь производится через два промежуточных звена — группы пользователя и уровни доступа. Проиллюстрируем эту связь ER-диаграммой.
Каждая операция характеризуется названием, принадлежностью к модулю, описанием и привязкой (о ней позже). Они задаются один раз, обычно при установке модуля, и редактированию более не подлежат.
Заметка для любопытных: операции хранятся в таблице БД b_operation.
Для создания уровня доступа необходимо задать ему имя, выбрать модуль, который он описывает и дать права на выполнение необходимых операций в этом модуле. Один уровень доступа описывает операции только одного модуля! Дополнительно можно указать букву уровня доступа (символьный код) и описание. Традиционно в стандартных модулях БУС используются следующие символьные коды:
- D для полного запрета
- R для чтения
- W для записи
- X для полного доступа
Еще раз отмечу, что это не правило, а наблюдение. Обратите внимание, уровни доступа, отсортированные по своим символьным кодам, обозначают возрастание привилегий. Нередко можно увидеть в исходниках БУС проверку вида “Если уровень доступа >= R” (вот зачем алфавитный порядок).
Созданные и настроенные уровни доступа хранятся в таблице БД b_task и b_task_operation.
Остальные шаги должны быть известны большинству специалистов по работе с 1С-Битрикс УС: нужно поместить пользователя в нужную нам группу и этой группе задать нужный уровень доступа в нашем модуле.
Например, создадим такую группу пользователей, у которых будет единственная привилегия — сброс кеша в публичной части сайта. И ничего кроме.
Управление кешем — операция главного модуля (main). Букву для уровня создавать не будем.
Теперь у нас есть уровень доступа к главному модулю “Чистильщик кеша”. Осталось закрепить уровень доступа за группой нужного пользователя и протестировать.
Как видно на экране, ничего кроме кнопки сброса кеша у нашего пользователя нет.
Теперь уже можно переходить к программированию.
API для работы с операциями и уровнями доступа
Чтобы ваш модуль при установке создал в системе нужные вам операции, необходимо внести следующие изменения в установщик вашего модуля (/bitrix/modules//install/index.php):
- в методе DoInstall вызвать метод InstallTasks (ну и в DoUninstall не забыть про UnInstallTasks);
- переопределить открытый метод GetModuleTasks. Пример кода из модуля Инфоблоков ниже.
Ключ массива — более или менее читаемый код уровня доступа, в нем есть ключи LETTER для буквы уровня доступа, BINDING для привязки операций и OPERATIONS для перечисления операций, которые входят в данный уровень доступа. Чтобы привязать операцию именно к модулю и работать с ней в обычном режиме, требуется либо не указывать ключ BINDING, либо указать там module.
Установка модуля пройдет без проблем и Ваши уровни появятся в панели управления в общем списке. Только вот у них не будет названия и описания. Вернее, они будут, только в том же виде, в котором вы их объявили в методе: iblock_deny, iblock_read и т.д.
Перевод этих строк происходит в файлах модуля /admin/task_description.php (для перевода уровней доступа) и /admin/operation_description.php (для перевода операций).
Содержимое файлов простое, по сути они должны возвращать данные следующего вида:
Ключи массива соответствуют ключам уровней и операций, а сами массивы содержат название и описание.
Эти файлы подключаются автоматически и не требуют дополнительных хлопот.
Осталось только использовать эти права по назначению — организовать в модуле их проверку.
Для этого есть системный булевый метод CUser::CanDoOperation. Чтобы получить все уровни, которые есть у пользователя, используйте метод CUser::GetAllOperations. Проверка прав использует кеширование в сессии пользователя, так что можно себя не ограничивать и не бояться порождать лишние запросы.
Небольшой пример: попробуем организовать доступ на сайте по следующей матрице прав.
Матрица показывает, какие права есть у какого пользователя в некой компании. Выделено три роли: Глава компании, начальник отдела и рядовой сотрудник. Базовых операций 4 (так же известны как CRUD — Create-Read-Update-Delete), но есть нюансы — например, просмотр доступен в двух вариантах, изменение тоже, часто учитывается принадлежность сотрудников к отделам.
Зная, что права могут поменяться, не будем при установке модуля создавать уровни доступа, только операции.
После анализа матрицы все выделенные операции объявляются в методе модуля GetModuleTasks.
После добавления языковых файлов и установки модуля все готово к воссозданию матрицы прав. Вот так выглядит уровень доступа “Начальник отдела”.
А так — “Глава компании”.
Осталось лишь в коде поставить нужные проверки методом CanDoOperation.
Привязки (BINDING)
Напоследок, вернемся к привязкам. Они не используются в совсем уж простых модулях — можно сказать, это продвинутый уровень.
Обратите внимание на права доступа из модуля Инфоблоков (пример кода в предыдущем разделе). У каждого уровня привязка не к модулю, а к объекту iblock. Как следствие, на странице списка уровней доступа системы (“Настройки->Пользователи->Уровни доступа”) модуль инфоблоков вообще не представлен. Но любой достаточно оптыный специалист скажет, что где-то он уже видел настройку прав доступа для инфоблоков. Но где же?
Ответ прост — модуль инфоблоков дает возможность назначать права каждому инфоблоку персонально и видеть вы это могли на вкладке Доступ при редактировании любого инфоблока и хранятся эти настройки в собственной таблице b_iblock_group.
Получается, что стандартные уровни доступа (с привязкой к модулю) редактируются в стандартном разделе панели управления, а для работы с любыми другими объектами вам нужно создавать свои собственные разделы “админки”. Получается, в 1С-Битрикс УС есть не только продуманная и удобная система прав доступа, но и база для создания своей собственной.
Автор выражает благодарность Сергею Покоеву и Павлу Машанову. Именно наши разговоры об управлении доступом вдохновили меня на эту статью.
Бывает требуется закрыть сайт от индексации, чтобы в поиске гугл или яндекс ссылок на ваш сайт не было. Рассмотрим несколько способов.
Способ от сеошников, через robots.txt
Самый распространённый и простой способ. В корне сайт надо найти файл robots.txt и добавить туда строки
Редактировать файл можно через FTP или через админку Битрикс. Если работаете по второму способу, открывайте файл как PHP, потому что только в этом случае не будет лишнего форматирования файла.
Но этот способ не надежный. Google всё равно может выводить сайт в поиске, только будет указано "Информация об этой странице недоступна." Пояснение гугл по этому поводу
Так же, если вы закрываете от индексации тестовый сайт и используете систему контроля версий, например гит, то файл может перенестись на продакшн сайт.
Способ от программистов. Через тег meta robots
Если вы закрываете от индексации тестовый сайт, то определить его можно через настройку главного модуля "Установка для разработки". Этот параметр должен быть установлен на всех сайтах для разработки, по правилам Битрикс.
В файл /local/php_interface/init.php, либо в /bitrix/php_interface/init.php, в зависимости от того, какой файл у вас есть, добавляем строки
Если вы хотите закрыть продакш сайт, то уберите условие, чтобы свойство устанавливалось всегда.
На всём сайте должна появиться такая строчка в исходном коде
Вот что нам говорит гугл по поводу тега.
Что важно понять - если вы заблокируете индексацию через robots.txt, дополнительно через тег meta, а на сайт есть ссылки из вне - сайт попадет в поиск. Уберите запрет из robots.txt.
От сисадмина. Запрет по Useragent через .htaccess
В корне сайт в файл .htaccess требуется добавить стоки
Так мы запрещает доступ к серверу пользователям, чье имя браузера содержит Googlebot, YandexBot. Так помечают себя поисковики.
Строка "yandex.com/bots" добавлена, так как имя браузера бота яндекса не всегда содержит YandexBot. Может быть "Mozilla/5.0 (compatible; YandexImages/3.0; +http://yandex.com/bots)". Список всех вариантов роботов от Яндекс.
Так поисковики не смогут попасть на сайт, соответственно не смогут его и проиндексировать. Но работать с . htaccess следует аккуратно, так как можно "положить" весь сайт.
Чтобы проверить способ, в браузер потребуется установить расширение для смены useragent. В маркетплейсе расширений ищите "User agent switcher", устанавливайте любое, в котором можно ставить свое значение, а не только выбирать из списка.. В расширении ставите useragent из списка роботов яндекс, ссылка выше.
Определить ваш текущий браузер можно по ссылке. Когда вы установите useragent яндекс бота, в определении браузера должен появиться текст, что вы яндекс бот.
В файл .htaccess следует добавить строки
Чтобы получить файл .htpasswd, загуглите ".htpasswd генератор онлайн".
После при первом заходе на сайт, браузер запросит у вас логин и пароль. Поисковики ничего вводить не будут и на сайт не попадут.
Частные случаи закрытия от индексации
Закрыть от индексации страницы пагинации в Битрикс
Чтобы закрыть от индексации страницы пагинации, добавьте следующую запись в robots.txt. Внимание: добавлять строки надо после строки User-Agent: *
Должно получиться так:
Закрыть страницу от индексации
Тут есть 2 пути:
- Через файл роботс. Добавьте в файл robots.txt в корне вашего сайта строку, после строки User-Agent: *, где /your_page/ - адрес вашей страницы, без указания домена:
Либо через свойства страницы в Битрикс:
Нажмите в панели над сайтом Изменить страницу - Заголовок и свойства страницы - Редактировать в панели управления - Вкладка Свойства - нажмите Еще - там спишите свойство robots, значение noindex. Сохраните
Читайте также: