И на хрена огород городить? Если в движке уже все есть data-ipsSticky ??? https://invisionpower.com/4guides/themes-and-customizations/javascript-framework/using-ui-widgets/ipsuisticky-r62/
<div data-ipsSticky data-ipsSticky-relativeTo='.myClassRelativeTo' data-ipsSticky-disableIn='tablet,phone' data-ipsSticky-stickyClass='myStickyClass' data-ipsSticky-spacing='XX' data-ipsSticky-width='XXXpx'>
Реклама
</div>
Ну да. Важно свои css-классы задать, что бы под свои задачи подрегулировать.
В принципе в движке есть довольно мощные и js фреймворк и ccss фреймворк. У них только одна проблема, изначально заточены под стандартный шаблон.
зы. еще одно замечание к заметке. Так чиста для порядку.
не надо свои скрипты добавлять прямо в globalTemplat перед </body>. Если их станет много, замучаетесь.
Лучше перед </body> вставить такой код
{template="myFooterJS" app="core" group="global" params="$location"}
и создать кастомный шаблон myFooterJS.phtml (название условное)
<ips:template parameters="$location = array()" />
и вставлять скрипты уже в него и его же редактировать при изменениях, а не globalTemplatе.
Плюс, используя $location (или \IPS\Output::i()->bodyClasses или \IPS\Request::i() можно грузить скрипты только там, где нужно.
Пример здесь скрипты грузятся только 1) если это приложение page (сms) и только там где заданы мои bodyClasses
<ips:template parameters="$location = array()" />
{{if $location['app'] == 'cms'}}
{{if in_array('mybodyClasses1', \IPS\Output::i()->bodyClasses ) OR in_array('mybodyClasses2', \IPS\Output::i()->bodyClasses ) OR in_array('mybodyClasses3', \IPS\Output::i()->bodyClasses )}}
<script type="text/javascript">
-------------------
</script>
{{endif}}
{{endif}}