Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Переопределить поведение штатного компонента

00 голосов
4
Здравствуйте, подскажите пжста как переопределить поведение штатного компонента (логику работы) ? В частности интересует компонент интернет-магазина - catalog. Хочу добавить доп. параметр при добавлении товара в корзину, чтобы на основе этого параметра менять цену продукта в корзине, где цена зависит от того, по какой ссылке был добавлен товар в корзину. Если делать изменения в штатном компоненте, то при обновлении они будут потеряны. 
Спасибо.
спросил 26 Янв, 14 от Chil (100 баллов)

4 Ответы

00 голосов
Цитата
busekov пишет:
Если делать изменения в штатном компоненте, то при обновлении они будут потеряны.

Кастомизация компонентов
ответил 27 Май, 14 от smileplz (8,020 баллов)
00 голосов
Я смотрел эту ссылку, но ничего у меня не заработало. Как система узнает из какого пространства имен брать компонент, а если есть несколько таких пространств, то кому будет приоритет ? Где задается что в текущий момент используется работа компонента из определенного пространства имен ?
ответил 23 Сен, 14 от Chil (100 баллов)
например в /catalog/index.php есть строка
APPLICATION->IncludeComponent(
    "bitrix:catalog"
Создаёшь по мануалу новое пространство имён и пишешь теперь в /catalog/index.php
APPLICATION->IncludeComponent(
    "your_new_namespace:catalog"
00 голосов
Ответы на ваши вопросы на два урока раньше - Шаблоны компонентов
ответил 27 Янв, 15 от smileplz (8,020 баллов)
00 голосов
Спасибо ответ и  за ссылку, но там опят речь идет про шаблоны, т.е. визуальное представление данных. 
Наверно я не понимаю чего, помогите пжста понять.
К примеру есть стандартные компоненты, которые лежат относительно корня сайта в /bitrix/components в пространстве имен bitrix
(/bitrix/components/bitrix ). Меня интересует компонент catalog.section и его логика работы, которая описана в component.php
Я создаю новое пространство имен test, т.е. получаем /bitrix/components/test. Копирую туда интересующий компонент:
/bitrix/components/test/catalog.section и исправляю его component.php. Таким образом я перекрыл логику работы штатного компонента в новом пространстве имен, и хочу чтобы при работе этого компонента использовалась логика catalog.section из пространства имен test.
Теперь у меня есть шаблон на сайте /bitrix/templates/store_minimal_gray в котором есть директория components 
( /bitrix/templates/store_minimal_gray/components). Там снова указывается пространство имен bitrix и шаблоны для компонент из этого пространства. Я создаю директорию test (мое пространство имен) и туда копирую целиком папку catalog из /bitrix/templates/store_minimal_gray/components/bitrix, т.е. получаем /bitrix/templates/store_minimal_gray/components/test/catalog. Вроде как задали представление для всех компонент из этого пространства имен.
Вопрос - как битрикс поймет что я перекрыл штатный компонент ?  Т.е. если говорить в терминах ООП, то подменил реализацию интерфейса, и мне нужно где-то указать, какую реализацию использовать, делать это в глобальных настройках приложения или через фабрику - мне без разницы, только я не понимаю где это задается в битриксе. Мне нужно чтобы для клиента все осталось как и прежде (он с интерфейсом работает компонента) - работает все с тем же компонентом catalog.section, а изменилась серверная часть. Надеюсь смог объяснить чего хочу).
ответил 11 Май, 15 от Chil (100 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 16 Март, 14 от Izy (100 баллов)
0 голосов
1 ответ
спросил 15 Фев, 14 от MuSTuK (100 баллов)
0 голосов
4 ответов
спросил 14 Ноя, 13 от EWARw (480 баллов)