Как в UMI вставить php в файл с расширение .tpl?

Всем привет!

Вопрос следующий. У меня есть небольшой скрипт:
<? $url = $_SERVER["REQUEST_URI"]; if ($url == "/index.php" || $url == "/"){?> 
                // некий контент 1
        <?}else {?>
       // некий контент 2
        <?}?>


Он проверяет главная страница или нет и выводит соответствующий контент.
Мне необходимо подключить его на все страницы сайта на UMI. Я создал отдел файл content.php и вставил его в inc_footer.tpl c помощью %system getOuterContent('/templates/content.php','UTF-8')%
Все бы хорошо, но при таком подключении $_SERVER["REQUEST_URI"] всегда возвращает url данного файла, что оказывается полностью бесполезным.

Пытался прописать php прямо в inc_footer.tpl, но система его комментирует.

Подскажите, пожалуйста, как решить данную проблему?
  • Вопрос задан
  • 501 просмотр
Пригласить эксперта
Ответы на вопрос 1
masterofmuffins
@masterofmuffins
Фронтэнд разработчик
Нашел следующее решение (искал долго, возможно это единственный вариант для UMI)

1) в папке /classes/modules находим custom.php
2) там пишем функцию после //TODO: Write your own macroses here
public function isFront($front, $nofront) {
			$url = $_SERVER["REQUEST_URI"]; 
			if ($url == "/") : 
				return file_get_contents($front);
			else :
				return file_get_contents($nofront);
			endif;
		}

3) в заранее выбранную папку кидаем файлы .inc, которые будут подключаться по условию
4) в любом .tpl, например header.tpl вызываем функцию из кастомного макроса.
%custom isFront('./tpls/content/slider/front.inc' , './tpls/content/slider/nofront.inc')%


тем самым мы передаем пути на файлы в нашу функцию.
либо без подключения файлов просто пишем в функции return и получаем что нам нужно. соответственно, в вызове макроса в этом случае параметры не нужны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы