1С УПРАВЛЕНИЕ ТОРГОВЛЕЙ И ИНТЕРНЕТ-МАГАЗИН БИТРИКС

2 Ноября 2017
Версия для печати

Урок 5. Инфоблоки битрикс (структура и создание)

Приветствую! Продолжаем осваивать страшный и ужасный Битрикс! (ну потому что если почитать отзывы о нем в интернете, то именно такие впечатления останутся о нем). Я же попробовал и другие CMS по этому скажу, что не так все печально с Битрикс, а на мой взгляд даже более позитивно, чем у других.
Ну хватил лирики. В прошлом уроке мы создали структуру сайта, а в этом уроке мы познакомимся с ключевой сущностью в Битрикс Инфоблоком.

Что такое Инфоблок Битрикс

Мне не понравилось ни одно определение инфоблоков, которые мне удалось найти, по этому приведу свой вариант:

Инфоблок - это сущность объединяющая в себе несколько таблиц в базе данных. Он позволяет работать с базой данных не задумываясь о структуре таблиц и взаимосвязях между ними. Для работы с инфоблоком существует специальное API. Так же инфоблок представлен в административной части сайта и имеет весь необходимый набор визуальных команд для просмотра и редактирования информации в инфоблоке. Практически всё, что делается в системе в той или иной мере завязано на этот модуль, даже если это и не отображается явно.

Давайте посчитаем сколько таблиц входит в инфоблок, чтобы получить представление на сколько это мощная и надо сказать тяжелая сущность.
  • Типы информационных блоков (b_iblock_type)
  • Информационные блоки (b_iblock)
  • Элементы (b_iblock_element)
  • Группы (разделы) информационных блоков (b_iblock_section)
  • Привязка элементов к разделам. Автоматическая таблица. (b_iblock_section_element)
  • Свойства разделов инфоблока (b_iblock_section_property)
  • Поля элементов инфоблока (b_iblock_fields)
  • Свойства элементов инфоблока (b_iblock_property)
  • Варианты значений свойств типа "список" (b_iblock_property_enum)
  • Значения cвойств (b_iblock_element_property)
  • SEO свойства (b_iblock_iproperty)
  • Привязка инфоблоков к сайтам (b_iblock_site)
  • Права доступа к инфоблоку в стандартном режиме прав (b_iblock_group)
  • Права доступа к инфоблоку в расширенном режиме прав (b_iblock_right)
  • Расширенные права доступа к разделам. Автоматическая таблица. (b_iblock_section_right)
  • Расширенные права доступа к элементам. Автоматическая таблица. (b_iblock_element_right)
  • Блокировка элементов. Используется модулем Бизнес-процессов (b_iblock_element_lock)
  • Таблица генераторов последовательностей для свойства типа "Счётчик". Автоматическая. (b_iblock_sequence)
  • Языкозависимые параметры типов информационных блоков (b_iblock_type_lang)

Впечатляет да? Конечно не все таблицы используются всегда, но тем не менее надо понимать, что инфоблок это универсальная сущность гибкая, но и тяжелая. Любое обращение к базе данных приводит к тяжелым и долгим запросам. Отсюда и требования к высокопроизводительному хостингу  у Битрикс и необходимость использования кеширование. Это основной минус Инфоблоков Битрикс.
И давайте сразу поговорим о плюсах и минусах такого подхода.

Плюсы
  • Универсальность работы и API
  • Одинаковая структура данных для любого проекта
  • Быстрое визуальное проектирование структуры данных
  • Доступ из административной части и из публичной (не нужно разрабатывать свои интерфейсы)

Минусы
  • Повышенные требования к производительности
  • Не оптимальность для простых реализаций (это когда ради простой структуры данных приходится использовать кучу таблиц инфоблока)
Давайте от теории перейдем к практике, а точнее к созданию инфоблока и наполнению его данными.

Создание инфоблока

Я не буду подробно останавливаться ни работе с Инфоблоком в админки Битрикс, я думаю с этим можно разобраться самостоятельно. Я только опишу то, что будет нам необходимо для разработки нашего магазина StartShop. А сам инфоблок мы загрузим готовый из XML файла, чтобы вы имели уже наполненный инфоблок товаром с картинками и могли с ним работать, не тратили время на наполнение.
Управление инфоблоками находится в разделе Контент - Инфоблоки.
Нам потребуется отдельный Тип инфоблока, назовем его Каталог, он должен быть древовидным.

Тип инфоблока, это своего рада группировка которой удобно отделять одни инфоблоки от других. У нас будет как минимум 2 типа инфоблока: Каталог и Сервис.
Далее нам потребуется инфобок, который мы назовем Товары.

Помимо обязательных полей Название, Символьный код, привязка к сайту хочу обратить внимание на настройку ЧПУ (URL страниц) это важно. Настройки URL определяют адрес по которой будет выдаваться элемент инфоблока или список элементов. Ведь страниц товаров не существует, как отдельных страниц на сайте. Они генерируются динамически, компонент делает запрос к инфоблоку, получает данные и выдает виртуальную страницу по определенному адресу. Шаблон адреса, по которому нужно сделать запрос к инфобоку будет настроен в параметрах компонента (например Новости) и этот шаблон должен совпадать с настройками инфоблока. В противном случае откроется пустая страница.
Давайте пока просто настроем, как у меня, а при настройке вывода данных вам станет понятно, как все работает.
  • URL страницы информационного блока: #SITE_DIR#/catalog/
  • URL страницы раздела: #SITE_DIR#/catalog/#SECTION_CODE#/
  • URL страницы детального просмотра: #SITE_DIR#/catalog/#SECTION_CODE#/#ELEMENT_CODE#/
Следующее, что нам понадобится настроить дополнительные поля Свойства инфоблока.

Про все свойства я буду рассказывать по мере потребности в них. Сейчас же обращу внимание только на два первых: Цена и Количество, это те данные которые потребуются для товара. Оба свойства будут иметь тип Число.
Если раскроете выпадающий список Тип увидите, что у свойства могут иметь различные типы данных. Не только примитивные типы (булево, строка, число, дата), а также и сложные типы (видео, файл, текст, привязка к элементам инфоблока, привязка к картам и др.). Т.е. о чем я говорил выше инфоблок очень универсальная сущность способная хранить различные данные в себе.

Импорт / экспорт инфоблоков

Академия Битрикс (материалы для инфоблока)

И так, интернет магазин у нас будет продавать одежду. Данные инфоблока я возьму из Битрикс академии.

Очень рекомендую посмотреть их видео уроки. Очень все четко и на высоком уровне. Не так подробно, как у меня, но зато потратив пару часов можно охватить очень много информации.
Инфоблок мы возьмем из материалов курса Быстрый старт разработчика. Там находятся те же изображения (надо сказать очень симпатичных девушек), что и в demo-данных типового интернет-магазина Битрикс. Все материалы курса в том числе и инфоблок можно скачать с сайта 1c-bitrix. Я же немного подкорректировал инфоблок, и выкладываю только его на своем сайте.

Экспорт Инфоблока

Экспорт и импорт инфоблоков это ещё одна очень удобная возможность работы с инфоблоками, особенно при изучении Битрикс. И сейчас расскажу почему. Когда у вас нет лицензии, установка Битрикс работает всего 30 дней. Чтобы продолжить разработку вы можете поставить новое веб-окружение Битрикс снова на 30 дней (об этом был Урок 2). Но что делать с данными. вносить в ручную? Вот тут нас спасет возможность экспорта и импорта данных ифоблока. Таким образом на демо-версии можно работать достаточно долго. Инфоблоки загрузить через экспорт/импорт, а структуру сайта и папку local просто скопировать со старого проекта.
Чтобы экспортировать Инфоблок нужно перейти в админке Битрикс в раздел Контент- Инфоблоки.


Есть возможность экспортировать в 2 формата CSV и XML. Особенности экспорта в этих форматах следующие:

CSV

При экспорте в CSV есть возможность настроить поля, которые будут выгружаться в файл. Но при этом картинки выгружены не будут.

Соответственно при импорте нужно сначала создать ифноблок со всеми полями и в настройках импорта указать в какие поля загружать данные из файла.

Такой импорт удобно осуществлять в уже существующий инфоблок, который может отличаться по структуре. Например, через импорт можно скопировать данные каталога со старого сайта в новый с другой структурой. Можно даже в Exel преобразовать или дополнить данные в файле, а потом загрузить.

XML

При экспорте в XML возможностей настраивать выгружаемые поля нет, инфоблок будет выгружен полностью, но зато вместе с изображениями.

Изображения будут выгружены в туже директорию в папку catalog_files в виде папки iblock.
При импорте из XML возможности выбрать поля для импорта нет. Будет создан новый или обновлен существующий инфоблок целиком. Даже не обязательно указывать Тип инфоблока при импорте, он будет создан автоматически.

Данный способ отлично подходит для переноса наработок с одного сайта на другой. Например обработали данные на тестовом сайте, потом перенесли их на рабочий. Ну или, как я писал выше, таким образом можно переносить данные на демо-установку и продолжать ей пользоваться. Для изучения Битрикс это просто незаменимый механизм. Им мы и воспользуемся. Скачайте архив с данными инфоблока и загрузите в свой проект, например в папку uplod. Распакуйте архив в текущую папку.


После выполните импорт через XML, как на картинке выше выбрав для импорта файл catalog.xml. Будет загружен инфобок со всеми картинками из папки catalog_files. (Одно замечание, при загрузки картинки не обновляются и если изначально инфоблок загружен без них, то они не добавятся. В этом случае нужно удалить полностью инфоблоки или элементы из него и загрузить сразу с картинками.)
Перейдите в инфоблок Товары и проверьте, должно получится следующее.

А чтобы сразу в списке увидеть изображения список нужно настроить. Для этого в списке в правом верхнем углу нажмите кнопку настройки.


И выберете нужные для отображения поля. В данном случае Картинка для анонса. (в дальнейшем можно будет вывести количество и цену для удобства).

От автора:
Ну вот разобрались Инфоблоками - главной сущностью Битрикс. С ними мы будем работать на протяжение всего курса. Все нужные данные будут хранится в инфоблоках. Это и список банеров, и комментарии и подписки и все, что нам ещё понадобится. И уже в следующей статье мы выведем информацию из инфоблока с помощью компонента bitrix:news. Подписывайтесь если ещё не подписались и до новых уроков!