oip / custom
Standard product catalog for Bitrix CMS from ООО "Отдел Интернет-проектов"
Installs: 108
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 2
Open Issues: 23
Type:project
Requires
- ext-json: *
- arrilot/bitrix-migrations: ^2.6
Requires (Dev)
- fzaninotto/faker: ^1.9
- phpunit/phpunit: ^9.3
- dev-master
- 0.61.0
- 0.60.23
- 0.60.22
- 0.60.21
- 0.60.20
- 0.60.19
- 0.60.15
- 0.60.12
- 0.60.3
- 0.50.5
- 0.49.4
- 0.48.4
- 0.48.3
- 0.48.2
- 0.47.5
- 0.47.4
- 0.46.4
- 0.46.2
- 0.44.5
- 0.43.3
- 0.43.2
- 0.43.1
- 0.43.0
- 0.42.0
- 0.41.4
- 0.41.2
- 0.39.1
- 0.38.3
- 0.38.2
- 0.38.1
- 0.35.3
- 0.35.2
- 0.35.1
- 0.35.0
- 0.34.1
- 0.28.1
- 0.27.5
- 0.24.2
- 0.22.1
- 0.22.0
- 0.21.0
- 0.18.12
- 0.18.11
- 0.18.8
- 0.18.5
- 0.15.21
- dev-dependabot/npm_and_yarn/json5-and-json5-2.2.3
- dev-dependabot/npm_and_yarn/express-4.18.2
- dev-dependabot/npm_and_yarn/qs-and-express-6.11.0
- dev-dependabot/npm_and_yarn/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/loader-utils-and-svg-url-loader-and-webpack-cli-and-webpack-php-manifest-1.4.2
- dev-dependabot/npm_and_yarn/terser-4.8.1
- dev-dependabot/npm_and_yarn/eventsource-1.1.1
- dev-dependabot/npm_and_yarn/async-2.6.4
- dev-dependabot/npm_and_yarn/url-parse-1.5.10
- dev-dependabot/npm_and_yarn/follow-redirects-1.14.8
- dev-dependabot/npm_and_yarn/path-parse-1.0.7
- dev-dependabot/npm_and_yarn/postcss-7.0.36
- dev-dependabot/npm_and_yarn/ws-6.2.2
- dev-dependabot/npm_and_yarn/dns-packet-1.3.4
- dev-dependabot/npm_and_yarn/browserslist-4.16.6
- dev-dependabot/npm_and_yarn/hosted-git-info-2.8.9
- dev-dependabot/npm_and_yarn/lodash-4.17.21
- dev-dependabot/npm_and_yarn/ssri-6.0.2
- dev-dependabot/npm_and_yarn/y18n-3.2.2
- dev-dependabot/npm_and_yarn/elliptic-6.5.4
- dev-dependabot/npm_and_yarn/ini-1.3.8
- dev-dependabot/npm_and_yarn/http-proxy-1.18.1
- dev-dependabot/npm_and_yarn/websocket-extensions-0.1.4
This package is auto-updated.
Last update: 2025-03-05 15:32:35 UTC
README
Установка пакета
Все просто:
composer require oip/custom:dev-master
- копировать каталоги
/local/components/oip
,/local/templates/custom
,/local/js
и/migrations
в свой проект, - выполнить
composer install
для подгрузки зависимостей, - если до этого момента в проекте не использовался пакет arrilot/bitrix-migrations, выполнить инстукции по его инициализации.
Frontend
Настройка окружения:
Первичная настройка Webpack'a для Битрикса с инструкцией по автоматическому развертыванию: bitrix-webpack.
Если webpack, vue (или react) уже настроены на проекте, и есть планы использовать шаблоны из папки /bitrix
, то нужно выполнить пару простых шагов, иначе подключение вебпака к стандартным шаблонам можно пропустить.
Нужно установить глобально npm-пакет bitrix-webpack, и выполнить две команды:
$ npm i -g bitrix-webpack
$ bitrix-webpack
$ [выбрать CSS (по умолчанию) и нажать Enter]
В любом случае следует установить зависимости с версиями, прописанными в package-lock.json
(без обновления пакетов):
$ npm сi
Подключение компонентов:
В примерах ниже указаны только обязательные параметры (те, без которых вылетит фатал), остальные настройки: пагинации, кеширования, шаблонов - опущены, т. к. создаются со значениями по умолчанию.
Для изменения поведения компонента нужно знать какой параметр с каким значением передавать.
Комплексный каталог:
<?$APPLICATION->IncludeComponent("oip:iblock.element.complex","",[
"IBLOCK_ID" => 29, // id инфоблока товароа
"BASE_DIR" => "/catalog/", // базовая директория каталога
"BRANDS_IBLOCK_ID" => 25, // id инфоблока брендов для фильтрации по ним - если параметр опусить, фильтр не появится
"TAGS_IBLOCK_ID" => 26, // id инфоблока тегов для фильтрации по ним - если параметр опусить, фильтр не появится
])?>
Страница списка товаров (список с допфильтрами по брендам, тегам и т.п.):
<?$APPLICATION->IncludeComponent("oip:iblock.element.page","",[
"IBLOCK_ID" => 29,
"BRANDS_IBLOCK_ID" => 25, // id инфоблока брендов для фильтрации по ним - если параметр опусить, фильтр не появится
"TAGS_IBLOCK_ID" => 26, // id инфоблока тегов для фильтрации по ним - если параметр опусить, фильтр не появится
])?>
Список товаров (с пагинацией):
<?$returnedData = $APPLICATION->IncludeComponent("oip:iblock.element.list","",[
"IBLOCK_ID" => 29, // id инфоблока товароа
])?>
<?$pagination = $returnedData->getPagination()?>
<?if(!empty($pagination) && $pagination["PAGES"] > 1):?>
<?$APPLICATION->IncludeComponent("oip:page.navigation","",[
"NAV_ID" => $pagination["NAV_ID"],
"PAGES" => $pagination["PAGES"],
"PAGE" => $pagination["PAGE"],
])?>
<?endif?>
Карточка товара:
<?$APPLICATION->IncludeComponent("oip:iblock.element.one","",[
"IBLOCK_ID" => 29,
"ELEMENT_CODE" => "test-product", // символьный код товара - обязателен только 1 из параметров, любой
"ELEMENT_ID" => 375, // id товара - обязателен только 1 из параметров, любой
])?>
Форма фильтра
Фильтр можно использовать только для одностраничных компонентов (список, страница списка), т.к. он шлет запросы с перезагрузкой текущей страницы.
<?$catalogFilter = $APPLICATION->IncludeComponent("oip:filter.form","",[
"FILTER_ID" => 1, // id фильта, уникальное число, не должно повторяться на странице
// сейчас принимает только число 1..9, потом это поправлю
"BRANDS_IBLOCK_ID" => 25 // id инфоблока брендов для подключения в форме фильтра по брендам
])?>
после вызова формы, можно результат ее работы передать в список товаров:
<?$return = $APPLICATION->IncludeComponent("oip:iblock.element.list","",[
"IBLOCK_ID" => 29, // id инфоблока товаров
"FILTER" => $catalogFilter
])?>
Дерево категорий
<?$APPLICATION->IncludeComponent("oip:iblock.section.list","",[
"IBLOCK_ID" => 29,
"BASE_SECTION" => "test-category", // код/id базовой категории - выведется дерево ее подкатегорий
// можно опустить для вывода полного дерева
])?>
Описание категории
<?$returnedSectionData = $APPLICATION->IncludeComponent("oip:iblock.section.list","",[
"IBLOCK_ID" => 29,
"BASE_SECTION" => "test-category", // для вывода деталки обязателен
"DEPTH" => 0, // глубина вложенности; для деталки обязателен 0
"USER_FIELDS" => ["UF_*"], // массив польз. полей, которые нужно вернуть; в данном случае все
])?>
<?// $returnedSectionData - сюда пришли данные польз. полей + section_name ?>
Страница корзины
<?$APPLICATION->IncludeComponent("oip:social.store.cart.page","",[])?>