Встала задача выполнения своего JS на стандартных страницах magento. Как вывести свои скрипты, допустим, на странице оформления заказа, когда заказ уже получен, т.е. на /checkout/onepage/success/, причем передать в DOM модель информацию о заказанных товарах? Была первая идея вывести в момент события checkout_type_onepage_save_order_after, но думаю это неправильно логически, не соответствует стандартам DOM, да и не сработает.
Выполнение javaScript на системных страницах
29.07.2011 14:55
Добавить клиентские скрипты на конкретные страницы вы можете через макетные правила.
29.07.2011 15:01
Как узнать оформление правил. Допустим для своих контроллеров понятно
а вот как для вышеописанного случая? Попробовал
не сработало. Да и подключив скрипты в них не передать нужную информацию.
<mymodule_mycontroller_myaction> <reference name="head"> <action method="addJs"><script>mymodule/script.js</script></action> </reference> </mymodule_mycontroller_myaction>
а вот как для вышеописанного случая? Попробовал
<checkout_onepage_success> <reference name="head"> <action method="addJs"><script>mymodule/script.js</script></action> </reference> </checkout_onepage_success>
не сработало. Да и подключив скрипты в них не передать нужную информацию.
29.07.2011 15:05
Подловили, это да. А что с примером? Все ж вроде правильно. Модуль checkout, контроллер onepage и действие success. Если конечно редиректов никаких не происходит.
29.07.2011 15:12
/js/mymodule/script.jsя думал независимо от того, существует ли сам скрипт, если открыть исходный код требуемой страницы в браузере, то найдешь заветную строку
<script type="text/javascript" src="http://site.ru/js/mymodule/script.js"></script>однако почему-то не хочет она появляться.
29.07.2011 22:14
Сам виноват, работал только с админкой, а тут то нужно вывести во frontend. Всего то надо было добавить в config.xml
<frontend> <layout> <updates> <mynamespace_mymodule module="mynamespace_mymodule"> <file>mynamespace_mymodule.xml</file> </mynamespace_mymodule> </updates> </layout> </frontend>Вопрос, независимо от темы этот файл mynamespace_mymodule.xml нужно размещать в app\design\frontend\base\default\layout\ ? По поводу асинхронного запроса, дабы узнать параметры сделанного заказа, как в новом запросе отследить именно этот заказ? Неужели вытаскивать последний сделанный заказ?
30.07.2011 10:36
Да, лучше размещать шаблоны и макетные правила вашего модуля в папке base, тогда они будут доступны сразу всем темам.
В то же время, вы всегда можете потом создать индивидуальные шаблоны и макетные правила для конкретной темы им положить из в папку темы, и они будут иметь приоритет перед файлами из папки base.
В то же время, вы всегда можете потом создать индивидуальные шаблоны и макетные правила для конкретной темы им положить из в папку темы, и они будут иметь приоритет перед файлами из папки base.
30.07.2011 18:53
<reference name="head"> <block type="core/text" name="mystuff.js"> <action method="setText"> <text> <![CDATA[ <script type="text/javascript" src="http://www.myurl.com/file.js"></script> ]]> </text> </action> </block> </reference>