Forums / National / Russian / Тех. поддержка / Подключить файл/код php на определенных страницах

Как Подключить файл/код php на определенных страницах

boris78
#1 2020-10-03 05:36

Во многих cms конструкция <?php if($_SERVER['REQUEST_URI'] == '/' ) { include ($_SERVER['DOCUMENT_ROOT'].'/2.php'); } ?>

позволяет подключить кастомный код php из файла 2.

Но в Cotonti, если добавить это условие даже в footer.tpl файл 2 не подключается.

Как все-таки подключить?

Roffun
#2 2020-10-03 12:30
#45099 boris78:

Во многих cms конструкция <?php if($_SERVER['REQUEST_URI'] == '/' ) { include ($_SERVER['DOCUMENT_ROOT'].'/2.php'); } ?>

позволяет подключить кастомный код php из файла 2.

Но в Cotonti, если добавить это условие даже в footer.tpl файл 2 не подключается.

Как все-таки подключить?

В Cotonti это делается оператором FILE, описано в документации: Синтаксис CoTemplate. Только во включаемом файле не должно быть логических блоков. И переменные должны иметь синтаксис шаблонизатора а не PHP.

<!-- IF {PHP._SERVER.REQUEST_URI} == '/' -->
{FILE "{PHP.cfg.plugins_dir}/{PHP.theme}/something.tpl"}
<!-- /ENDIF -->

Или же написать отдельную функцию PHP, в которой будет нужная логика, а в шаблоне ее использовать как условие:

<!-- IF {PHP|myfunc} == '/' -->
{FILE "{PHP.cfg.plugins_dir}/{PHP.theme}/something.tpl"}
<!-- /ENDIF -->

Но это все если нужно именно в шаблоне получить значения, а если нужно больше функционала то конечно лучше отдельно свое расширение.

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
This post was edited by Roffun (2020-10-03 12:55, 4 years ago)
boris78
#3 2020-10-21 16:16

Уточните, пожалуйста, если нужно показать блок текста/html+js только на index page, то какая конструкция там будет, если в качестве index назначена market (market.list.tpl) ?

Пробовал <!-- IF {PHP._SERVER.REQUEST_URI} == '/' -->  Текст блока <!-- ENDIF -->

но не работает

 

 

А если <!-- IF {PHP._SERVER.REQUEST_URI} == '/market' --> Текст блока <!-- ENDIF -->

То показывает на странице /market

 

Слоты меню просьба не предлагать, там код обрезается почему-то..

 

This post was edited by boris78 (2020-10-21 17:54, 4 years ago)
Roffun
#4 2020-10-21 18:05
#45142 boris78:

 

А если <!-- IF {PHP._SERVER.REQUEST_URI} == '/market' --> Текст блока <!-- ENDIF -->

То показывает на странице /market

Логично, тем более в чисом виде переменные нежелательно использовать если есть альтернатива, например $env, в некоторых случая $m, бывает $out, и другие варианты, зависит от цели.

Конкретизируйте вопрос, не совсем понятно что и где нужно вывести.

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
boris78
#5 2020-10-21 18:27

Нужно на главной странице сайта (просто при переходе на адрес сайта как он указан в конфиге) показывало содержание определенного кода.

Но на остальных страницах этот код не нужен.

Повторюсь, что при вводе кода через слоты меню часть кода теряется, поэтому нужно пробовать так..

Roffun
#6 2020-10-21 18:34
#45146 boris78:

Нужно на главной странице сайта (просто при переходе на адрес сайта как он указан в конфиге) показывало содержание определенного кода.

А в каком файле будете размещать вызов, в глобальном (header.tpl, footer.tpl) или индексном (index.tpl) ?

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
boris78
#7 2020-10-21 18:36

market.list.tpl

Включена обработка списка товаров в качестве главной страницы. Поэтому этот шаблон подключен.

Roffun
#8 2020-10-21 18:37

Например если разместить в header.tpl конструкцию:

            <!-- IF {PHP.env.ext} == 'index' AND {PHP.env.location} == 'home' -->
            {FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/customfile.tpl"}
            <!-- ENDIF -->

А в папке шаблона создать папку inc (необязательно), в ней tpl файл, в котором свой код, то содержимое появится только на главной.

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
boris78
#9 2020-10-21 18:38

В нем и нужно отобразить, но с условием, что только в нем.

Roffun
#10 2020-10-21 18:40
#45150 boris78:

В нем и нужно отобразить, но с условием, что только в нем.

Попробуйте вышеприведенный код, еще можно поиграться с:

            <!-- IF {PHP.env.ext} == 'market' AND {PHP.m} == 'list' AND !{PHP.c} -->
            {FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/customfile.tpl"}
            <!-- ENDIF -->

или

            <!-- IF {PHP.m} == 'list' AND !{PHP.c} -->
            {FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/customfile.tpl"}
            <!-- ENDIF -->

 

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
boris78
#11 2020-10-21 18:42
<!-- IF {PHP.env.ext} == 'market' AND {PHP.m} == 'list' AND !{PHP.c} -->
Работает 100% !
Благодарю
Вам пора донаты за помощь собиратьyes
This post was edited by boris78 (2020-10-21 19:01, 4 years ago)