Не работают скрипты bitrix при вызове catalog.element в модальном окне. Куда копать?
Задача казалось изначально простой, но я неожиданно столкнулся с проблемой.
Нужно было всего то сделать некий быстрый просмотр карточки товара. Я сделал кнопку просмотра ссылкой на файл quick_view.php в котором вызвал bitrix:catalog.element. arParams стащил прямо из вызова комслексного каталога, дабы сразу быть уверенным, что параметры вызова обычного просмотра и быстрого будут одинаковыми. Не работают, как я понял, некоторые скрипты. При попытке добавить в корзину мы видим в консоли. (unknown) Uncaught ReferenceError: JCCatalogProductSubscribe is not defined
И при попытках переключить размер или цвет товара получаем Uncaught TypeError: Cannot read property 'setCurrencies' of undefined
Что скажите?
не подключается script.js из компонента, он автоматом подтягивает при вызове компонента на странице(функция ShowHead выводи скрипты, а она у вас уже отработала давно, при формировании страницы), подключайте вручную, вариантов много как это можно сделать
Интересный вариант. Правда тут есть загвоздка. У меня изначально вообще не подтягивался ни style ни script. Пришлось подключать в самом низу template что бы он стал их видеть. Сейчас попробую конечно через ShowHead, но прошу рассмотреть еще варианты.
UPD. Вы были правы. В template.php добавил строчку $APPLICATION->ShowHead(); и карточка товара ожила. Правда добавление в корзину почему то не завелось. Видимо проблема в другом.
Ganjubas_Original: это неправильно, $APPLICATION->ShowHead(); не нужно вызывать в шаблоне компонента, вам нужно подключить один скрипт только, можно добавить проверку, что это модальное и подключать в шаблоне, можно через js подключать
Алексей Захаров: так я пробовал подключать этот скрипт. Я даже пробовал для проверки код этого файла вставлять в темплейт. Значит ему не хватает не только этого файла, но и чего то еще.
Алексей Захаров: я пробовал подключать скрипТ из папки шаблона в файле вызова компонента ( quick_view.php), пробовал подключать в самом начале и самом конце template.php. Ну и собственно пробовал инлайном код в template.php вставлять. Ничего из этого не помогло. работает только если в начала template.php вставить ShowHead
При подключении скрипта в начале template.php в консали, во вкладке network я вижу, что он подключил мой файл, но один фиг не работает ничего.
Я так понимаю ты через JQuery сделал подгрузку того, что в quick_view.php. Но на странице нету описания JCCatalogProductSubscribe поэтому попробуй просто в JS шаблона основного компонента (скорее всего bitrix:catalog.section) просто скопировать описание JCCatalogProductSubscribe из bitrix:catalog.element.
Вопрос старый, нашел я его в поисках решения такой же проблемы. Ответ может пригодиться:
Нужно, чтобы в параметрах вызовов всех компоненов, кроме первого, передавался $component