1с битрикс как удалить инфоблок
В сегодняшней статье мы продолжаем изучение CMS Bitrix. Более подробно остановимся на создании и настройках инфоблоков.
Что такое инфоблоки?
С помощью инфоблоков легко стандартизировать оформление разделов сайта. Такая архитектура достаточно практичная, так как можно эффективно управлять информационными блоками сайта (редактировать, перемещать, добавлять).
Создание новых инфоблоков в Битрикс
Заходим через админку в раздел инфоблоков. Для начала удалим существующие, чтобы очистить пространство для работы.
Опускаемся ниже. Выбираем галочками все пункты, удаляем.
После обновим страницу. Список инфоблоков (слева/ на предыдущем слайде выделен зеленым маркером) будет пуст.
Начнем создавать новые. Возвращаемся в раздел «Контент», «инфоблоки», «Типы инфоблоков». Создадим инфоблок content. Вводим название и жмем «добавить новый тип».
Заполняем указанные поля. Ставим галочку «Использовать древовидный классификатор элементов по разделам:». Галочка нужна в случае если предусмотрено несколько подуровней: раздел, подраздел и т.д. В оранжевой рамке показано раздел «Проекты», который в процессе обучения будет выводиться в инфоблоках. Во вкладке «Дополнительно» изменения не вносим. Сохраняем.
После обновления в списке появится созданный нами тип «Контент».
Во вкладке «Инфоблок» прописываем название блока и транслит. Также в соответствии с примером ставим галочки. Во вкладке SEO никаких действий не совершаем.
Во вкладке «Поля» устанавливаем начало активности. Настройка означает, что новость должна выводиться, показываться сразу после публикации на сайте.
Детальная картинка – изображение на странице статьи. Задаем размер для всех статей блока. Сделаем по примеру страницы «Проекты». Чтобы определить размер изображения, кликаем левой кнопкой мышки на картинке в выпадающем списке выбираем «проверить объект». Помним, в коде ниже ищем строку, отвечающую за элемент. При наведении возле картинки появится обозначение с информацией. Переносим размеры в настройки.
Также проставляем галочки в соответствии с примером ниже. При необходимости можно размещать авторский знак в виде картинки или теста (настройки обозначены зеленым маркером).
Картинка анонса – миниатюра изображения в ленте новостей с кратким описанием инфоблока. Можем подбирать отдельно или указываем «создавать из детальной картинки». Прописываем тот же размер. Другие настройки по примеру ниже.
Основное изображение и миниатюра, настройки Другие параметры вкладки «Поле»
Указываем название. Тип оставляем «Строка», хотя в выпадающем меню есть много вариантов. Обязательно указываем код в верхнем регистре. Почему именно в верхнем расскажу позже.
Настройки для вкладки «Поля разделов».
Настройки для вкладки «Доступы».
Заполняем поля вкладки «Подписи» по примеру выше.
«Журнал событий» не заполняем и жмем «Сохранить».
В списке слева появился новый инфоблок.
Переходим в Блог и создадим новую категорию. На слайде выше видна возможность добавлять, статьи и категории – кнопки «добавить категорию»; «добавить статью» (обозначено зеленым маркером). Напомним, что при создании типа инфоблока отмечено галочкой «использовать древовидный классификатор элементов по разделам» (в рамке). Благодаря чему и появляются кнопки «добавить категорию» и «добавить статью».
Создание подкатегорий раздела инфоблока
Кликнуть на кнопку «Добавить категорию». Во вкладке «категория» прописываем название «Категория 1». Названию особого внимания не уделяем, так как цель урока научиться создавать категории и подкатегории. Символьный код прописывается автоматически. Что мы также указывали в настройках при создании типа инфоблока. Сохраняем.
Аналогично создаем еще три категории, которые после отображаются в списке. Теперь можем зайти в категорию (двойным щелчком мыши) и наполнять раздел новостями.
Как добавить контент в новую категорию?
Во вкладке «Статья» заполняем поле «Название». Для наглядного примера используем страницу «Проекты» (в оранжевой рамке слева). Можно использовать для обучения любую новость из Интернета или размещать свою.
Символьный код прописывается автоматически, согласно заданным настройкам типа инфоблока. Начало активности (1) – стоит текущая дата, также задано при создании типа. Без этой галочки нужно постоянно прописывать вручную дату, когда статья будет показываться.
«Подробно». Заливаем подробную картинку. Изображение внутри статьи, из которого Битрикс формирует обложку блока для анонса согласно заданным параметрам.
Сохраняем изображение примера (Проекты). Кликнуть мышкой на поле для фото, выбрать из выпадающего списка нужный файл. Загружаем.
«SEO» оставим без изменений. Во вкладке «Категории» указываем, к какому подпункту относится новость, где она будет показываться. Сохраняем.
Теперь статья видна в списке соответствующего раздела. Создадим еще несколько новостей. Картинки и контент берем с той же страницы. Чтобы не создавать новые статьи, можно скопировать существующую. Кликнув на бургер, из выпадающего списка выбираем нужное действие. Меняем картинку, название и содержание. Сохраняем.
Зеленым маркером выделены созданные статьи в категории 1. При необходимости можно выбрать несколько разделов, к которым будет относиться новость. Настройка в оранжевой рамке.
Метод удаляет элемент информационного блока. Также удаляются значения свойств типа "Привязка к элементу" указывающие на удаляемый. При установленном модуле поиска элемент удаляется из поискового индекса. Перед удалением вызываются обработчики события OnBeforeIBlockElementDelete из которых можно отменить это действие. После удаления вызывается обработчик события OnAfterIBlockElementDelete. Метод статический.
Параметры вызова
Возвращаемое значение
Примеры использования
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Как удалить элементы инфоблока битрикс из меню
Современные сайты наполняются содержанием с помощью специального программного обеспечения: CMS.
Соответственно, контент-менеджер (или редактор сайта) — это специалист, работающий с CMS.
Для кого этот курс?
Курс Контент-менеджер адресован тем, кто работает с содержанием сайта: наполнение, изменение текста, загрузка и размещение картинок и так далее.
- работать с элементами управления в интерфейсе системы;
- приемам работы в визуальном редакторе — основном инструменте при работе над содержанием сайта;
- работать с информационными блоками — местом хранения большей части информации на сайте;
- работать с компонентами — инструментом вывода информации на страницах сайта;
- работать с некоторыми модулями системы.
У нас часто спрашивают, сколько нужно заплатить
Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов — ничего из этого оплачивать не нужно.
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта
В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:
уроке.
Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат — это если общее число набранных Вами баллов отличается от максимального на 1-2%.
Практика и тесты
При изучении курса рекомендуется повторять описываемые действия на демонстрационной версии сайта, установленной локально или в Виртуальной лаборатории.
После изучения курса пройдите тесты на сертификацию. При успешной сдаче последовательности тестов со страницы Моё обучение скачайте сертификат об успешном прохождении курса в формате PDF.
Для преподавания оффлайн
Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 2 дня (16 академических часов).
Если нет интернета
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла — от 20.10.2021.
Битрикс: как деактивировать все разделы и элементы инфоблока
01.02
Задача: в нашем распоряжении инфоблок с разделами и элементами. Необходимо массово деактивировать все элементы/разделы.
Решение достаточно простое. Начнем с элементов. Для их выключения нам понадобятся два метода: CIBlockElement::GetList и CIBlockElement::Update. С помощью первого — собираем уникальные идентификаторы всех элементов, с помощью второго — снимаем активность элемента. Код будет следующим:
В переменной $iblock должен содержаться ID вашего инфоблока.
C разделами инфоблока — ситуация аналогичная. Нам потребуется класс CIBlockSection.
Добрый день!
Подскажите пожалуйста как массово и достаточно быстро удалить все разделы в инфоблоке?
Всего разделов 55к
Через админку всё виснет, несмотря на больше max execution time.
Скрипт такой набросал, но как-то долговато работает.. Или это норма?
Скрипт уже закончил работу?
Я так понимаю, Вы запустили скрипт, а потом написали вопрос.
Оптимизировать можно следующим образом:
- в метод GetList добавить массив с полями выборки array("ID"), чтобы не тянуть из базы значения, которые не нужны
- выполнять метод Delete прямо в теле цикла while, чтобы не собирать без надобности массив
Если все еще не хватает времени на выполнение, написать простенькую клиентскую часть с AJAX-запросом. Будет работать медленно, но гарантировано выполнит задачу и не уйдет в таймаут.
При большом количестве разделов (30к+), Bitrix начинает вставлять палки в колеса как разработчику, так и пользователю, который будет работать с такими ИБ.
- Списки элементов ИБ будут безбожно тормозить в интерфейсе. На каждом хите будет добавляться фильтр по разделу.
- Редактировать их становится очень затруднительно, опять же из за долгой загрузки интерфейса и большого времени изменения.
Всё это из за того что разделы это NESTED SETS деревья. При добавлении/удалении раздела происходит вычисление LEFT_MARGIN и RIGHT_MARGIN для каждого раздела во всем инфоблоке.
Для добавления и обновления (CIBlockSection::Add, CIBlockSection::Update) есть параметр метода $bResort, который позволяет отключить этот перерасчёт в момент их выполнения.
Только после этого ОБЯЗАТЕЛЬНО надо выполнять CIBlockSection::Resort.
Это можно использовать при большом количестве операций Update и Add. Сначала выполняете все операции Update и Add с $bResort=false, а после них CIBlockSection::Resort
- пересчет границ NESTED SETS,
- CIblockElement::GetList (поиск вложенных элементов)
- CIblockElement::Delete (если в разделе были элементы),
- Запрос к таблице которая хранит множественные привязки элемента к разделам (поиск значений и их удаление)
- CIBlockSection::GetList (поиск вложенных разделов)
- CIBlockSection::Delete (удаление вложенных разделов)
- Переиндексирование поиска
- Запросы к UF_* полям раздела (поиск значений и их удаление)
- При заполненных SEO полях, запросы к таблицам которые их хранят (поиск значений и их удаление)
- При расширенном управлении правами это еще запросы к таблицам которые хранят эти настройки (поиск значений и их удаление)
и это скорее всего не полный список, а только то что могу назвать по памяти.
Нельзя быстро удалить разделы стандартным API без написания своих запросов к БД которые проделают всё что описано выше. В идеале надо взять код стандартного CIBlockSection::Delete, внимательно его изучить и написать свой метод который будет с помощью прямых запросов делать тоже самое, но оптимально.
Если же вопрос стоит в том чтобы удалить эти разделы за ЛЮБОЕ количество времени, тогда можно написать страничку с пошаговым удалением разделов, через ajax запросы. Причем надо учитывать, что вначале разделы будут удаляться ОЧЕНЬ медленно и ajax запрос может отвалиться по таймауту, поэтому надо будет за один шаг удалять пару разделов. А ближе к границе в 10к разделов, за один шаг можно будет удалять уже большее количество.
Тривиальная задача удаления лишнего сайта из списка сайтов в 1С-Битрикс может оказаться не такой уж и простой. Пройдемся по процедуре на практике.
Шаг 1. Удаление сайта
Идем в Настройки - Сайты - Список сайтов
Ставим галочку возле ненужного сайта
Жмем удалить записи, получаем . ошибка по типу 1
Шаг 2. Ошибка при удалении в CForumNew::OnBeforeLangDelete
Шаг 3. Ошибка при удалении в CIBlock::OnBeforeLangDelete (iblock):
Система сообщает нам об ошибке CIBlock::OnBeforeLangDelete (iblock) и даже подсказывает, что надо удалить несколько инфоблоков:
Идентификаторы в каждом случае свои, но метод решения одинаковый.
Идем в Контент - Инфоблоки - Типы инфоблоков и удаляем инфоблоки с указанными id (у нас это 11, 20, 21, 22, 23, 24).
Скорее-всего нужные нам "жертвы" раскиданы по разным типам инфоблоков и проверить придется все.
При удалении инфоблока - Каталог вероятно появление ошибки по типу 3
Шаг 4. Ошибка удаления. Возможно есть ссылающиеся объекты.
Данная ошибка более таинственна, для ее решения необходимо войти в инфоблок (нажать изменить)
Перейти на вкладку "Торговый каталог" и снять галочку у параметра Инфоблок имеет торговые предложения
Cохранить изменения
Повторить попытку удалить инфоблок
После удаления инфоблоков возвращаемся в Настройки - Сайты - Список сайтов
Ставим галочку возле ненужного сайта
Жмем удалить записи, получаем . ошибка по типу 4
Шаг 5. Ошибка при удалении в CSalePersonType::OnBeforeLangDelete
Очередная ошибка связана с наличием лишних типов плательщиков от которых тоже нужно избавиться.
Идем в Магазин - Типы плательщиков
Ставим галочки у лишних плательщиков
Жмем удалить записи, получаем . ошибка по типу 5
Шаг 6. В заказах используется тип плательщика с > Как все догадались - нужно стереть заказы. Идем в Магазин - Заказы и удаляем лишние заказы
Возвращаемся в Магазин - Типы плательщиков
Удаляем плательщиков привязанных к удаляемому магазину
Возвращаемся в Настройки - Сайты - Список сайтов
Ставим галочку возле ненужного сайта
Жмем удалить записи, получаем . ошибка по типу 6
Шаг 7. Ошибка при удалении в CRubric::OnBeforeLangDelete
Ошибка на данном этапе снова снабжена подсказкой:
Ошибка при удалении в CRubric::OnBeforeLangDelete (subscribe): Существуют ру��рики (1) связанные с удаляемым сайтом. Сначала удалите или свяжите их с другим сайтом.
Для решения проблемы отправляемся в Сервисы - Рассылки - Список рассылок и удаляем лишние рассылки
Возвращаемся в Настройки - Сайты - Список сайтов
Ставим галочку возле ненужного сайта
Жмем удалить записи, . ВАУУУУ - сайт удален
Итоги
Естественно, мы привели пример одного из случаев (далеко не худшего) и у Вас могут не возникнуть указанные ошибки или возникнуть ошибки не всех типов. Сайт может удалиться намного проще, но помните, алгоритм всегда одинаков.
Подготовим подключение пространства имен, модуля хайлоад блоков и функцию, которая создаёт класс для работы с таблицей.
Этот участок кода будем использовать во всех приведенных ниже примерах.
Поясню, что происходит в функции GetEntityDataClass. HLBT::getById($HlBlockId)->fetch() вернет массив информацию о highload-блоке $HlBlockId — ID, NAME и TABLE_NAME HLBT::compileEntity($hlblock) возвращает сущность(Bitrix\Main\Entity\Base) для работы с highload-блоком $hlblock т.е. простым языком делает за вас всю черную работу — создает класс и методы для работы с таблицей.
В следующих примерах я пропускал этот участок кода. Не забудьте про него!
Получить название полей highload-инфоблока
Получаем массив, где ключи это поля highload-блока, а значения — объекты, соответствующие типу поля (строка — Bitrix\Main\Entity\StringField, число — Bitrix\Main\Entity\IntegerField).
Тип можно получить следующим образом(ID имя поля):
Получить все элементы highload-инфоблока
Получить количество элементов highload-инфоблока
Фильтр по полю типа да/нет
Получить поля ‘Имя’ и ‘Значение’ активных элементов highload-инфоблока
Имеется свойство ‘UF_ACTIVE’ типа ‘Да/Нет’
1 — да
0 — нет
В select указываем нужные поля : ‘UF_NAME’ и ‘UF_VALUE’
Фильтр со сложной логикой
Получить цвета, имена которых начинаются на С или К.
Форматы фильтров остались прежние, можно посмотреть тут.
По умолчанию логика фильтра — AND, описанный выше фильтр пример логики — OR. Пример посложнее от Антипова Андрея
Добавить новый элемент в highload-инфоблок
Удалить элемент highload-инфоблока
Обновить элемент highload-инфоблока
В качестве доп. информации советую почитать страницу документации, где описывается метод getList на новом API D7. Так как все сущности теперь имеют стандартизированный метод getList, то и всё в этой статье справедливо для метода getList highload-инфоблоков.
Читайте также: