Forums / National / Russian / Тех. поддержка / Вставка JS на определенной странице

<<<12

Вставка JS на определенной странице

Roffun
#16 2016-09-16 11:40
#42083 Denisbox:
 

Понимаю, но я больше ориентируюсь на Google Page Speed :) Валидатор бонусов никаких не даёт, кроме самой валидации.

Лучше сделать и скорость и валидность. Css в таком случае в верхней части страницы подгружается основной, участвующий в рендеринге, а остальной подгружается в футере через js , такой вариант правильный с точки зрения рекомендации Google, только нужно учесть ситуацию с отключенным JS. 

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
Denisbox
#17 2016-09-16 12:34

Спасибо! Я именно так и хочу реализовать. css слайдера буду подгружать в футере, так как он используется только на главной и то можно сказать в середине сайта, а основная часть css кода будет в внедрена в шапку.

contact: fonts (at) otlab . ru
kushelbek
#18 2016-10-20 14:53
#42001 Roffun:
#41999 kushelbek:
Конкретно вывести js файл на mysite.ru/lab/stranica не получаеятся =(

Заранее спасибо.

Попробуйте {PHP.pag.page_alias} или  {PHP.al}

<!-- IF {PHP.al} == "stranica" -->
  
<script src="myscript.js"></script>
  
<!-- ENDIF -->

также можно по ID страницы {PHP.pag.page_id}  

<!-- IF {PHP.pag.page_id} == 222 -->
  
<script src="myscript.js"></script>
  
<!-- ENDIF -->

 

День добрый, на другом сайте делаю все точно так же, но нужно вывести скрипт только в page.list.tpl

<!-- IF {PHP.list} == "category" -->
<script src="simple.js"></script>
<!-- ENDIF -->

Что - то мне подсказывает, что я сделал что то не так...

Roffun
#19 2016-10-20 18:20

<!-- IF {PHP.env.location} == 'list' -->

<script src="simple.js"></script>

<!-- ENDIF -->

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
Leshkens
#20 2016-10-20 19:18

Проверять имя категории еще можно вот так: 

<!-- IF {PHP.c} == "portfolio" -->
<script src="portfolio.js"></script>
<!-- ENDIF -->

 

kushelbek
#21 2016-10-21 06:38
#42207 Leshkens:

Проверять имя категории еще можно вот так: 

<!-- IF {PHP.c} == "portfolio" -->
<script src="portfolio.js"></script>
<!-- ENDIF -->

 

#42205 Roffun:

<!-- IF {PHP.env.location} == 'list' -->

<script src="simple.js"></script>

<!-- ENDIF -->

Спасибо и так и так работает!
Leshkens
#22 2016-11-24 18:12

Я на самом деле так и не понял как грамотно проверять условия подключения в файле theme.rc.php. Ведь переменная $env там не работает. Проверять по URL как предложил Roffun?

Добавлено 3 дня спустя:

Разобрался. Разделы в theme.rc.php можно проверять например вот так:

if ($_GET['с'] == 'portfolio') {
  Resources::linkFile($cfg['themes_dir'].'/'.$usr['theme'].'/css/portfolio.css');
}

Здесь в разделе "porfolio" (и корневых страницах) грузим файл стилей portfolio.css. В подразделах работать не будет, потому что подразделы нужно проверять непосредственно.

 

Модули или плагины можно проверять так:

if ($_GET['e'] == 'page') {
  Resources::linkFile($cfg['themes_dir'].'/'.$usr['theme'].'/css/page.css');
}

Здесь во всех разделах и страницах модуля page будет грузиться файл page.css.

 

Проверять по URI (например если нужно загружать файл стилей и в подразделах) можно вот так:

if (mb_strpos($sys['uri_curr'], 'studio') !== false) {
  Resources::linkFile($cfg['themes_dir'].'/'.$usr['theme'].'/js/studio.js');
}

Здесь везде, когда в URI есть "studio", будет подгружаться файл studio.js. Например http://test.dev/studio/portfolio/sites

 

По алиасу страницы:

if ($_GET['al'] == 'big-hall') {
  Resources::linkFile($cfg['themes_dir'].'/'.$usr['theme'].'/css/big-hall.css');
}

 

This post was edited by Leshkens (2016-11-27 20:34, 7 years ago)
kushelbek
#23 2017-01-30 14:34

Такой вопрос, а как плагины грузить в футере(со стилями по умолчанию)?

Roffun
#24 2017-01-30 17:56
#42616 kushelbek:

Такой вопрос, а как плагины грузить в футере(со стилями по умолчанию)?

Чтобы в футере была ссылка на файл, то можно использовать функцию:

Resources::linkFileFooter($cfg['themes_dir'] . '/' . $usr['theme'] . '/css/mycss.css','css','2');

 Саму функцию можно посмотреть в /system/resources.php  строка ~ 639

Чтобы в футере было само тело файла:

($cfg['themes_dir'] . '/' . $usr['theme'] . '/css/mycss.css','css','2');

Но css с точки зрения валидации нужно грузить в head, а в футере их можно через js подгружать, тогда второй параметр изменяете на js, а сам код css нужно сконвертировать в js.

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
kushelbek
#25 2017-01-31 06:57
#42617 Roffun:
#42616 kushelbek:

Такой вопрос, а как плагины грузить в футере(со стилями по умолчанию)?

Чтобы в футере была ссылка на файл, то можно использовать функцию:

Resources::linkFileFooter($cfg['themes_dir'] . '/' . $usr['theme'] . '/css/mycss.css','css','2');

 Саму функцию можно посмотреть в /system/resources.php  строка ~ 639

Чтобы в футере было само тело файла:

($cfg['themes_dir'] . '/' . $usr['theme'] . '/css/mycss.css','css','2');

Но css с точки зрения валидации нужно грузить в head, а в футере их можно через js подгружать, тогда второй параметр изменяете на js, а сам код css нужно сконвертировать в js.

я имел ввиду вот эти скрипты по умолчанию и скрипты плагинов.

где нужно поправить что бы они грузились в футере? Заранее спасибо.

 

Roffun
#26 2017-01-31 12:51

И js и css попадают в один тег:  {HEADER_HEAD}

Если включить в админке Объединять ресурсы header/footer (JS/CSS):

То останется 2 файла в  {HEADER_HEAD} (если посмотреть в режиме кода):

<link href="rc.php?rc=global.название шаблона.css&amp;nc=1485362013" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="rc.php?rc=global.название шаблона.js&amp;nc=1485362013"></script>

Заменяете {HEADER_HEAD} в header.tpl на 

<link href="rc.php?rc=global.название шаблона.css&amp;nc=1485362013" type="text/css" rel="stylesheet" />

А в футер переносите

<script type="text/javascript" src="rc.php?rc=global.название шаблона.js&amp;nc=1485362013"></script>

Но это перенесет все скрипты, в том числе JQuery

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
kushelbek
#27 2017-01-31 14:43
#42619 Roffun:

И js и css попадают в один тег:  {HEADER_HEAD}

Если включить в админке Объединять ресурсы header/footer (JS/CSS):

То останется 2 файла в  {HEADER_HEAD} (если посмотреть в режиме кода):

<link href="rc.php?rc=global.название шаблона.css&amp;nc=1485362013" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="rc.php?rc=global.название шаблона.js&amp;nc=1485362013"></script>

Заменяете {HEADER_HEAD} в header.tpl на 

<link href="rc.php?rc=global.название шаблона.css&amp;nc=1485362013" type="text/css" rel="stylesheet" />

А в футер переносите

<script type="text/javascript" src="rc.php?rc=global.название шаблона.js&amp;nc=1485362013"></script>

Но это перенесет все скрипты, в том числе JQuery

Понял, спасибо, будем пробовать =)

Виктор
#28 2018-09-30 09:11

а как прописать в самом плагине например в довольном плагине "plug" в файле plug.rc.php, условие, чтоб файлы css и js подключались только тогда когда используется плагин "plug"

 

if($_GET['e'] == 'в каком плагине или модуле')

if($_GET['e'] == 'page' || $_GET['e'] == 'plug'  || $_GET['e'] == 'еще в каком то расширении')

Это?

This post was edited by Виктор (2018-09-30 09:27, 5 years ago)
Roffun
#29 2018-09-30 10:58

Варианты разные бывают, в зависимости от ситуации. Часто используется переменная $env. А если это свой модуль или плагин, и хотите максимально кастомизировать вывод css js без привязок к другим переменным, сделайте свою переменную или функцию, которая будет видимая только в определенных местах, нужных вам, и уже через нее выводите c помощью Resources (linkFileFooter, linkFilе, embed, embedFooter) на выбор.

Если это переменная, то делаете ее видимой во всех нужных файлах, например $myvar = 'myvalue'. Если это функция, то в файле функций перечисляете нужные места видимости, например ($env['ext'], $env['location'])  и т.д, отдавая свой вариант $myvar = "myvalue" в нужном месте:


if ($myvar == 'myvalue'){   

    Resources::linkFilе($cfg['themes_dir'] . '/' . $usr['theme'] . '/css/my.css', 'css', '15');     

    Resources::linkFilе($cfg['themes_dir'] . '/' . $usr['theme'] . '/js/my.js', 'js', '20');

}

То же самое функция:

if (myfunction() == 'myvalue'){   

    Resources::linkFilе($cfg['themes_dir'] . '/' . $usr['theme'] . '/css/my.css', 'css', '15');     

    Resources::linkFilе($cfg['themes_dir'] . '/' . $usr['theme'] . '/js/my.js', 'js', '20');

}

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
This post was edited by Roffun (2018-10-01 10:02, 5 years ago)

<<<12