Борис М., а что именно Вы хотите? Сколько почтовых ящиков было в рассылке? Сколько из них не ушло?
11.04.2018 08:53:33
Евгений Шутов, ну так собери из catalog.section, catalog.sections + urlrewrite, не?
|
|
|
10.04.2018 18:52:57
Зачем в CSR тип сервера? Непонимаю.
Указывайте nginx
Голосуй за идеи по развитию API Bitrix:
|
|||||
|
10.04.2018 18:51:47
[QUOTE]Omar Khazamov написал:
Другими словами, я делаю в своем модуле публичную часть, которая будет ловить событие собственного модуля ?[/QUOTE] Что? Зачем Вам в своем же модуле ловить события своего же модуля? [QUOTE]Omar Khazamov написал: Какая структура библиотеки JS BX отвечает за это?[/QUOTE] За что именно? [QUOTE]Omar Khazamov написал: Андрей, не сочтите за наглость , можно простейший пример модуля, который рендерит что-нибудь на стандартное события стандартного модуля? [/QUOTE] Вы же Сами указали эту ссылку. Читайте внимательнее примечание: 1) Вы подписываетесь на событие компонента! OnSaleComponentOrderOneStepFinal, это не событие entity! 2) sprintf он использует в определенном месте и в определенный момент. LocalRedirect, который переводит пользователя, не ждет загрузки исполнения скриптов, а значит код на echo в случае с подпиской на entity не сработает |
|
|
10.04.2018 09:26:04
[QUOTE]Omar Khazamov написал:
Привет всем,Что такое MVC- мы все знаем. Однако MVC Битрикса отличается от этой модели в привычном ее понимании. Controller и View как-то смешаны в одну сущность, и в некоторых компонентах одно не отличить от другого. [/QUOTE] Не смотря на то, что Битрикс в некоторых моментах говорит о MVC, это всего лишь паттерн, а не обязательная стратегия поведения. Если сравнивать с общедоступными паттернами, то скорее всего это больше похоже на HMVC. Но что есть, то есть и class.php + ajax жизненный цикл должны отчасти решить эту проблему. [QUOTE]Omar Khazamov написал: т.е всякая логика отображения задается в шаблонах битрикса, а шаблоны подключаются в визуальной части пролога. [/QUOTE] Все верно, но не совсем так. Есть AJAX запросы на подгрузку html части, которые обрабатываются так же, но обнуляют буферизацию вывода в самом компоненте. Есть некоторые части системы, которые взаимодействуют с /*/tools/ или services и там уже подключается только служебная части. НО! Ни одна логика не зашита в самом шаблоне! [QUOTE]Omar Khazamov написал:Но в некоторых случаях порядок выполнения страницы становится необъяснимым. Например, в дефолтном компоненте sale.order.ajax после успешного сохранения корзины и создания заказа происходит переадресация на страницу благодарности. Данная переадресация задается где-то в шаблоне, т.е в визуальной части пролога. [/QUOTE] Нет, данная страница находится в шаблоне компонента: confirm.php [QUOTE]Omar Khazamov написал: В своем обработчике по факту создания заказа пытаюсь вывести в консоль сообщение, однако из-за переадресации данное сообщение не выводится. Почему один компонент выполняющийся по времени позже другого влияет на его работу? [/QUOTE] Тонкости работы компонента в режиме ajax. Первый хит на оформление заказа, затем редирект на ок-страницу для утверждения/оплаты. [QUOTE]Omar Khazamov написал: А что, если я внутри обработчика хочу делать инъекцию JS кода в тело страницы? Использовать библиотеку BX? Как? [/QUOTE] На событиях entity такого не делают. Это можно сделать, если есть события которые что-то рендерят или на js-событиях в публичной части. Все остальное делается только через подключение своих скриптов и перехват, ну или кастомизации шаблона компонента. Памятуя о Вашем примере оформления заказа - echo не должно быть на событии сохранения заказа. [QUOTE]Omar Khazamov написал: Вообще, не понимаю как происходит отработка JS и его связь с шаблоном. [/QUOTE] 1) Есть служебные скрипты которые подключаются при вызове шаблона компонента 2) Есть Asset'ы которые подключаются из любого места 3) В конце концов есть добавление в самом шаблоне/компоненте. Где-то на странице есть код который вызывает или наборот при ready-событии на dom срабатывают биндеры [QUOTE]Omar Khazamov написал: Вот открываю страницу карточки товара, вижу в Network tabs вызов к http://192.168.191.103/bitrix/components/bitrix/catalog.element/ajax.php с POST параметрами offerid итд. Откуда он вызывается? В script.js нет упоминания полноценного аякс вызова. В самом template.php тоже нет. В каком месте страница говорит Битриксу "отдай мне все,что связано с продуктом productid=123 через http://192.168.191.103/bitrix/components/bitrix/catalog.element/ajax.php и я ее сам(а) отрисую"? [/QUOTE] А вы открывали код этого ajax? Он всего лишь записывает просмотр товара пользователем :) |
|
|
09.04.2018 17:49:32
[QUOTE]Den B написал:
В чем причина? Где копать?[/QUOTE] Обратитесь к разработчику - он умышленно (может по согласованию, может по незнанию) нарушил "естественный порядок вещей" в оформлении страницы, что и привело к таким последствиями при редактировании страницы. Либо редактируйте параметры в коде, либо просите разработчика прописать так, чтобы изменения публичной части не ломали верстку. Не исключено что потребуются дополнительные средства (т.е. Вы за эту работу заплатите). |
|
|
09.04.2018 17:43:53
[QUOTE]Алексей Иванчук написал:
И могут ли возникнуть сложности или проблемы в таком случае?[/QUOTE] Теоретически ничего не мешает, однако в таком случае есть вероятность что битрикс побьет вашу самописку. Все же лучше на отдельном сервере и сделать поддомен |
|
|
09.04.2018 17:39:53
[QUOTE]Александр написал:
Очевидно, что битрикс не смог найти нужный файл с классом. Вот в этом у меня и вопрос - куда положить библиотеку / как указать на нее битриксу?[/QUOTE] В init.php прописать подключение классов, для хардкодов. Толерантный способ - подключить composer, установить библиотеку из composer и подключить в init.php автолоадер composer'a. Тогда и другие пакеты сразу подтянуться. |
|
|
09.04.2018 09:23:10
[QUOTE]Omar Khazamov написал:
Также странно, что битрикс не дает никаких предупреждений, или ошибок в данной ситуации.[/QUOTE] И не должен :) Вы неправильно подписались на события, да еще и не на все события) Вот работающий фрагмент (версия чуть по старше, но она не изменилась, размещать так же в init.php): [CODE]function logViewedProduct( \Bitrix\Main\Event $event ) { /** * @var string Путь к файлу, в который нужно записать строку */ $logFile = $_SERVER['DOCUMENT_ROOT'].'/test.txt'; /** * @var string Строка, которую нужно записать в лог */ $strLog = ''; file_put_contents($logFile, $strLog, FILE_APPEND); } $eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->addEventHandler('catalog', '\\Bitrix\\Catalog\\CatalogViewedProduct::onBeforeAdd', 'logViewedProduct'); $eventManager->addEventHandler('catalog', '\\Bitrix\\Catalog\\CatalogViewedProduct::OnBeforeUpdate', 'logViewedProduct');[/CODE] [QUOTE]Omar Khazamov написал: А какие требования для того, чтоб подписаться на ORM события? [/QUOTE] Да какие могут быть требования? 1) Правильно подписаться (чтобы оно сработало) 2) Быстро отработать (т.к. пользователь ждет ответа на запрос, никаких тяжелых операций там быть не должно) 3) Предусмотреть все варианты входных параметров (очень часто ошибаются с новыми хендлерами в d7 и после обновления элемента) |
|
|