Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как реализовать подключение .tpl шаблона в engine.php?

Как реализовать подключение .tpl шаблона в engine.php?


     12.02.2019    Все вопросы » Общие вопросы по PHP    164

вопрос
Всем привет. У DLE есть замечательная возможность подключать другие php файлы в шаблон тегом {include file="..."}

Так вот, у меня сейчас появилась необходимость сделать это с точностью до наоборот, подключить .tpl файл из папки с шаблоном в engine.php.

Хочу, чтобы title сайта кастомизировался в зависимости от того, какой шаблон просматривает пользователь.

В engine.php есть строчка
{$metatags['title']}

Как я понимаю, сюда нужно подключить мой .tpl файл после title. Но ещё особенность в том, чтобы брало файл автоматически из текущего шаблона. В каждом шаблоне будет файл custom.tpl, например, только с разным содержимым.
Воот, вроде понятно выражаюсь) Хелп в общем, в php малоразвит, танцы с бубном и поиск не помог

Ответил: LazyDev


Найти
$metatags = <<<HTML
Выше вставить
$templateCity = file_get_contents(TEMPLATE_DIR . '/gorod.tpl');
$metatags['title'] .= ' ' . $templateCity;

17 комментариев

TechnicalMan
Юзер

TechnicalMan - 12 февраля 2019 20:28 -

Если точнее, то в engine.php строчка
<title>{$metatags['title']}</title>

dj-avtosh
php-developer

dj-avtosh - 12 февраля 2019 20:35 -

$tpl->load_template( 'my_module.tpl' );
$tpl->set( '{my_module_var}', 'my_module_var_result');
$tpl->compile( 'my_module_content' );
echo $tpl->result['my_module_content'];

telegram: @blob42
skype: elhan.isaev (seldom)

TechnicalMan
Юзер

TechnicalMan - 12 февраля 2019 20:40 -

dj-avtosh, ничего не понял.
Точнее, понял, но не полностью)
Было бы здорово хоть чуточку разжевать смысл вышенаписанного и как потом это дело сунуть в строку с тайтлом
<title>{$metatags['title']}</title>

dj-avtosh
php-developer

dj-avtosh - 12 февраля 2019 20:43 -

Вам нужно результат выполнения шаблона вставить в тайтл?

telegram: @blob42
skype: elhan.isaev (seldom)

TechnicalMan
Юзер

TechnicalMan - 12 февраля 2019 20:44 -

dj-avtosh, именно так

dj-avtosh
php-developer

dj-avtosh - 12 февраля 2019 20:46 -

Или вы всего-то хотите понять, какой шаблон сейчас видит пользователь? Он кстати видит несколько шаблонов одновременно. Может Вам нужен такой модуль? https://dle-faq.ru/modules/23547-prostye-zagolovki-metategi.html

telegram: @blob42
skype: elhan.isaev (seldom)

TechnicalMan
Юзер

TechnicalMan - 12 февраля 2019 20:49 -

dj-avtosh, а нет, не то.
У меня в общем схема такая - есть сайт, в нём 10 шаблонов (одинаковые, с разницей в несколько строк в тексте шаблона) на 10 городов.
Чтобы не редачить все 10 шаблонов в случае необходимости правок, я в панели управления хостингом создаю символьные ссылки на все файлы из основной папки шаблона, и только один оставляю, как есть, в нём название города. Который вот и меняется в разных шаблонах. Например, в моём gorod.tpl просто текст "Москве"
И уже в десяти одинаковых шаблонах по схеме {include file="gorod.tpl"} текст в блоках меняется на "Купить джинсы в Москве" "Купить джинсы в Питере" и так далее.
Так вот таким же макаром нужно изменить заголовок title у сайта, сохранив его структуру.
Пробовал убрать его из engine.php и делать в шаблоне - но много волокиты, страницы разные, заголовки у новостей разные, а title один. В main.tpl я не нашёл способа вставить заголовка страницы или новости. Да и много кода)
А этот хак мне в дальнейшем много где пригодится.

LazyDev
php-developer

LazyDev - 12 февраля 2019 21:47 -

TechnicalMan, Найти
$metatags = <<<HTML
Выше вставить
$templateCity = file_get_contents(TEMPLATE_DIR . '/gorod.tpl');
$metatags['title'] .= ' ' . $templateCity;

Мой блог: LazyDev.pro

dj-avtosh
php-developer

dj-avtosh - 12 февраля 2019 22:14 -

я ему сверху это написал, но ближе к api движка.

telegram: @blob42
skype: elhan.isaev (seldom)

TechnicalMan
Юзер

TechnicalMan - 12 февраля 2019 22:22 -

PunPun, ток не работает.

LazyDev
php-developer

LazyDev - 12 февраля 2019 22:33 -

TechnicalMan, все работает. Проблему ищите у себя, так как может у вас есть плагины установленные которые правят engine/engine.php и в итоге ваши правки в файлах не показываются. Для этого создайте плагин.

Мой блог: LazyDev.pro

dj-avtosh
php-developer

dj-avtosh - 12 февраля 2019 22:34 -

мне кажется мы с автором вопроса на разных языках говорим.

telegram: @blob42
skype: elhan.isaev (seldom)

TechnicalMan
Юзер

TechnicalMan - 12 февраля 2019 22:34 -

вру, работает всё, кэш был виноват, спасибо за решение.

TechnicalMan
Юзер

TechnicalMan - 12 февраля 2019 20:58 -

dj-avtosh,
не, не то.
Мне в общем нужно подключить содержимое конкретного .tpl файла в engine.php в строку с title сайта, запара чисто с синтаксисом php, которого я почти не знаю

Я до этого всю свою схему разжевал, написал в комментарий, нажал отправить, оно всё стёрлось и не отправилось.
Второй раз не осилю в подробности вдаваться)

dj-avtosh
php-developer

dj-avtosh - 12 февраля 2019 22:20 -


$cityTpl = new dle_template();
$cityTpl->dir = ROOT_DIR . '/templates/' . $config['skin'];
$cityTpl->load_template( 'custom_city.tpl' );
$cityTpl->compile( 'custom_city_content' );
$metatags['title'] .= ' ' . $cityTpl->result['custom_city_content'];

telegram: @blob42
skype: elhan.isaev (seldom)

TechnicalMan
Юзер

TechnicalMan - 12 февраля 2019 22:37 -

А так если чисто теоретически, будет ли гугл считать разные шаблоны одного сайта разными страницами?
информация то разная, ссылки только одни и те же

dj-avtosh
php-developer

dj-avtosh - 12 февраля 2019 22:39 -

в теории не должен

telegram: @blob42
skype: elhan.isaev (seldom)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх