Каталог на двух инфоблоках: никогда! с иллюстрациями и примерами сайтов | Битрикс
Иногда нам задают вопрос: можно ли в интернет магазине на 1С-Битрикс организовать каталог из разных инфоблоков по принципу 1 категория = 1 инфоблок?
Якобы такая структура удобна тем, что свойства одной группы товаров (сантехника), находясь в отдельном инфоблоке, не перемешиваются со свойствами другой группы товаров (керамогранит). Таким образом, каталогом удобнее управлять.
Кроме того, имеется товарная база на стороне 1С и она настолько огромна, что удобнее разные группы выгружать в разные инфоблоки. Звучит вполне логично, но…
Мы хотим предостеречь от такого сценария организации каталога, т.к. потенциально он принесет гораздо больше проблем, чем выгод.
Основная проблема — это вывод информации на сайте из двух каталожных инфоблоков, т.к. технически невозможно на стандартных компонентах настроить вывод информации сразу с двух инфоблоков. Вот некоторые примеры.
Чтобы вывести товары из второго инфоблока — нужно расположить на странице второй компонент со списком разделов по формуле: 1 инфоблок = 1 компонент.
Блок “Каталог товаров” на главной странице (категории)
Если у вас в каталоге есть бренды и коллекции, то вас также ожидают некоторые сложности, связанные с привязкой этих брендов к товарам из разных инфоблоков.
Страница списка брендов и коллекций (мегамарт)
Практически в каждом интернет магазине есть товарные блоки: “Мы рекомендуем”, “Популярные товары”. Из какого инфоблока в них должны отображаться товары? Из первого, второго или третьего?
Аналогичный вопрос возникает с выводом товаров в блоках “Вы смотрели”, “С этим товаром покупают” и др.
Блок “Популярные товары” на главной странице
Ни один современный интернет-магазин не обходится без функционала сравнения. Но, как вы, наверное, уже поняли, вывести для сравнения можно товары, принадлежащие одному инфоблоку.
Страница “Сравнение”
Дополнительной работы потребует и настройка поиска по каталогу товаров, особенно когда результаты поиска с товарами оформляются в виде карточек.
Страница с результатами поиска
Когда в интернет магазинах проводятся акции (распродажа, тематическая, розыгрыши и др.), на промо-странице лучше показывать товары, которые в ней участвуют. Для этого делается привязка товаров к акции и в блоке демонстрируются товары, которые выводятся из одного инфоблока.
Блок “Товары по акции”
Как видим, сложности, с которыми придется столкнуться при организации каталога из нескольких инфоблоков, перекрывают все потенциальные выгоды. Поэтому такой способ мы крайне не рекомендуем.
Битрикс — Каталог на двух инфоблоках: никогда!
Иногда нам задают вопрос: можно ли в интернет магазине на 1С-Битрикс организовать каталог из разных инфоблоков по принципу 1 категория = 1 инфоблок?
Якобы, такая структура удобна тем, что свойства одной группы товаров (сантехника), находясь в отдельном инфоблоке, не перемешиваются со свойствами другой группы товаров (керамогранит). Таким образом, каталогом удобнее управлять.
Кроме того, имеется товарная база на стороне 1С, и она настолько огромна, что удобнее разные группы выгружать в разные инфоблоки. Звучит вполне логично, но…
Мы хотим предостеречь от такого сценария организации каталога, т.к. потенциально он принесет гораздо больше проблем, чем выгод.
Основная проблема — это вывод информации на сайте из двух каталожных инфоблоков, т.к. технически невозможно на стандартных компонентах настроить вывод информации сразу с двух инфоблоков. Вот некоторые примеры.
Блок “Каталога товаров” на главной может отображать структуру (разделы и подразделы) только одного инфоблока.
Чтобы вывести товары из второго инфоблока — нужно расположить на странице второй компонент со списком разделов по формуле: 1 инфоблок = 1 компонент.
Блок “Каталог товаров” на главной странице (категории)
Если у вас в каталоге есть бренды и коллекции, то вас также ожидают некоторые сложности, связанные с привязкой этих брендов к товарам из разных инфоблоков.
Страница списка брендов и коллекций (мегамарт)Практически в каждом интернет магазине есть товарные блоки: “Мы рекомендуем”, “Популярные товары”. Из какого инфоблока в них должны отображаться товары? Из первого, второго или третьего?
Аналогичный вопрос возникает с выводом товаров в блоках “Вы смотрели”, “С этим товаром покупают” и др.
Блок “Популярные товары” на главной странице
Ни один современный интернет-магазин не обходится без функционала сравнения. Но как вы, наверное, уже поняли, вывести для сравнения можно товары, принадлежащие одному инфоблоку.
Страница “Сравнение”
Дополнительной работы потребует и настройка поиска по каталогу товаров, особенно когда результаты поиска с товарами оформляются в виде карточек.
Страница с результатами поиска
Когда в интернет магазинах проводятся акции (распродажа, тематическая, розыгрыши и др.), на промо-странице лучше показывать товары, которые в ней участвуют. Для этого делается привязка товаров к акции и в блоке демонстрируются товары, которые выводятся из одного инфоблока.
Блок “Товары по акции”
Как мы видим, сложности, с которыми придется столкнуться при организации каталога из нескольких инфоблоков, перекрывают все потенциальные выгоды. Поэтому такой способ мы крайне не рекомендуем.
===
Оригинал статьи
Что нужно знать о Битриксе некоторым потенциальным покупателям / Habr
Эта статья написана не для холивара. Здесь не будет полного обзора плюсов и минусов. Это просто несколько фактов из моего опыта, которые я сам хотел бы знать, перед тем как выбрать 1С Битрикс в качестве CMS.Предыстория, которую можно не читать
Давным-давно, когда словосочетание «web 2.0» было модным, а тени с округлостями были верхом дизайнерской мысли, нашей организации понадобилось упорядочить общение с клиентами и завести себе HelpDesk. И как это обычно бывает, работы по выбору, установке, настройке и внедрению были поручены автору затеи, то есть мне – рядовому сотруднику техподдержки.
Навыки программирования у меня на тот момент были исчезающее малы – немного ковыряния в вордпрессе и пара бесполезных «Hello World!» написанных в Notepad++. И вот с этим багажом знаний я свободное от звонков время стал читать мануалы к имеющимся на рынке на тот момент системам HelpDesk и ServiceDesk.
Битрикс казался наиболее понятной, достаточно полно документированной и простой в установке системой, в которой помимо самого HelpDesk были еще другие полезные плюшки, вроде CMS =) Остальные системы были на тот момент либо на басурманских языках, либо непонятно каких денег стоили (цен на сайтах не было), либо требовали сурового бородатого напильника для доведения до ума.
Так вот к чему это я. Мы выбрали редакцию 1С Битрикс – Управление сайтом (БУС на местном сленге) не для интернет магазина. И модуль интернет магазина никогда не использовали (почти). Этот факт сильно сказался на «пользовательском опыте», каким образом – опишу ниже.
Факт 1. Битрикс: Управление сайтом ≈ Интернет магазин
Даже если ничего не знать о внутренностях битрикса и не разу не заглядывать в админку, то просто просмотрев содержание всех презентаций и конференций их маркетологов за последние 5 лет легко понять, что кроме модуля интернет магазина ничего особенно и не развивается.
Все новые громкие плюшки вроде фасетных индексов, конверсий и всяких сомнительных мобильных приложений это всё для интернет магазина. Каждый раз когда я смотрю вебинар от битрикса, я чувствую что меня обманули, т.к. кроме разнообразного жонглирования заказами и размусоливания статистики по ним ничего нового в CMS за несколько лет не произошло.
Где-то внутри появилось «ядро D7», но документация об этом не знает (а в коде там не всё очевидно, иногда до нужного места можно добраться только перелопатив 5-7 файлов).
Из чего-то действительно полезного можно вспомнить парноидальный кэш, названый «Композитный сайт». Но все кто видел как битрикс строит запросы, и без композитного кэша понимали что лишний раз базу лучше не беспокоить.
Те модули, которые не нужны интернет магазину, существуют для галочки в списке фич на промо страницах битрикса. Они более менее работают, но не развиваются. Модуль техподдержки каким был в середине нулевых, таким и остался к 2015 году. Форум, wiki, блоги, обучение – это всё мало изменилось со дня своего появления.
Вывод: если вам не нужен интернет магазин и вы планируете использовать другие модули, то не рассчитывайте на их развитие.
Факт 2. Долгое исправление ошибок
Сначала я хотел поставить этот факт в конец списка, но он логически вытекает из первого. Из-за того, что в приоритете у битрикса интернет магазин, то исправление некритичных багов в других модулях происходит крайне долго. Полгода — год, это вполне нормальные сроки. Иногда дольше.
Вывод: если нашли ошибку в модуле – не рассчитывайте на быстрое её устранение (но сообщить о ней стоит)
Факт 3. Медленные инфоблоки
Большая часть данных в битриксе хранится в инфоблоках. Если вдруг кто не в курсе что это за зверь такой, вот выдержка из документации:
Информационные блоки — модуль, позволяющий каталогизировать и управлять различными типами (блоками) однородной информации. С помощью информационных блоков может быть реализована публикация различных типов динамической информации: каталоги товаров, блоки новостей, справочники и т.д.Информационные блоки — ключевой момент Bitrix Framework. Практически всё, что делается в системе в той или иной мере завязано на этот модуль, даже если это и не отображается явно.
dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&CHAPTER_ID=04610&LESSON_PATH=3913.4610
Инфоблоки избыточны и обладают всем что может понадобится разработчику сайтов в повседневной жизни. Тут есть инабор типичных полей: название, описание, теги, seo, картинки для превью и т.д.). Также можно создать свои свойства различных типов (типы тоже можно создавать).
Также стоит упомянуть довольно удобную админку с разграничением прав, массовым редактированием, выгрузками туда/сюда и давно уже устоявшийся API для всего этого. В общем, инфоблоки это удобно.
Но тут есть подвох:
Инфоблоки — сущность, которая в физической структуре БД создает 4 таблицы, не меняющиеся при изменении структуры данных: типы объектов, экземпляры объектов, свойства объектов и значения свойств объектов.
Если перевести с языка документации на пользовательский это грозит вот чем: каждое свойство инфоблока будет храниться в отдельной таблице и чтобы его получить понадобится отдельный запрос к базе данных.
Этот подход не доставляет проблем при небольшом количестве записей (зависит от настроек и производительности сервера базы данных) Но когда записей становится несколько миллионов, появляются запросы исполняющиеся за неприличное время. И чем дальше, тем более неприличным это время становится.
Проблему можно решить хорошим производительным сервером БД с правильным конфигом и индексами. Но серебряной пули тут нет, техподдержка не поможет и на форумах информации не так много. Всё придётся делать самостоятельно: анализировать, профилировать и принимать решения.
Есть еще конечно высоконагруженные инфоблоки, но они пока не документированы. Живых примеров по ним мало. И переносить на них несколько десятков инфоблоков с кучей свойств задача не из простых.
Вывод: если у вас нет штатных специалистов по БД, а данных может появиться много, то лучше подумать над выбором других CMS с более оптимальной структурой хранения данных, ну или заложить в проект услуги по настройке БД.
Факт последний. НЕНАВИСТЬ!
Битрикс обладает очень своеобразной репутацией. Очень многие разработчики относятся к нему скептически. Многие разработчики обладают на него аллергией, а некоторые так и вообще ненавидят.
Очень многие студии гордо заявляют что они не работают с битриксом. В курилке этих студий ходят легенды про то «как я поддерживал один проект на битриксе».
Вероятно, благодаря этой репутации работники веб студий изначально скептически относятся к заказам связанным с битриксом и выполняют их не лучшим образом. Тут может сказаться некоторая сложность для новичка, т.к. не все вещи в битриксе устроены очевидным образом и многие задачи можно выполнить сотней неправильных или неоптимальных решений.
Вывод: выбирая битрикс в качестве CMS нужно учитывать его репутацию в IT сообществе и тщательно выбирать исполнителей. Ну и морально подготовиться к тому, что в некоторых местах вас будут отговаривать от его покупки, а после покупки могут уговаривать отказаться от него.
Общий вывод
Если вы не планируете пользоваться модулем интернет магазина, но планируете создать популярный динамичный сайт, то битрикс с этим справится. При этом нужно учитывать, что количество накладных расходов может быть больше чем при выборе другой системы. Лучше внимательно взвесить все за и против.
Урок 5. Инфоблоки битрикс (структура и создание)
2 Ноября 2017 Приветствую! Продолжаем осваивать страшный и ужасный Битрикс! (ну потому что если почитать отзывы о нем в интернете, то именно такие впечатления останутся о нем). Я же попробовал и другие 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. Распакуйте архив в текущую папку.
Перейдите в инфоблок Товары и проверьте, должно получится следующее.
А чтобы сразу в списке увидеть изображения список нужно настроить. Для этого в списке в правом верхнем углу нажмите кнопку настройки.
И выберете нужные для отображения поля. В данном случае Картинка для анонса. (в дальнейшем можно будет вывести количество и цену для удобства).
От автора:
Ну вот разобрались Инфоблоками — главной сущностью Битрикс. С ними мы будем работать на протяжение всего курса. Все нужные данные будут хранится в инфоблоках. Это и список банеров, и комментарии и подписки и все, что нам ещё понадобится. И уже в следующей статье мы выведем информацию из инфоблока с помощью компонента bitrix:news. Подписывайтесь если ещё не подписались и до новых уроков!