Опубликовано: 19 мая 201114 г Приветствую!Стоит задача в том, чтобы подключить в шаблон php файл, расположенным в папке с изображениями данного стиля. Не вариант если подключать через: {parse include="file.php"} Потому что придётся файл загружать в корень форума, а так лежал бы себе в папке с изображениями и очень удобно. Я даже пробовал указывать путь: {parse include="talk/public/style_images/tbm/file.php"} Но на IP. Contente вылазит ошибка. Заранее огромное спасибо! Изменено 19 мая 201114 г пользователем Lesovsky
Опубликовано: 19 мая 201114 г Можно построить от img_url: <php> $images_dir = DOC_IPS_ROOT_PATH . substr( str_replace( array( $this->settings['ipb_img_url'], $this->settings['_original_base_url'] ), "", $this->settings['img_url'] ).'/', 1 ); require_once( $images_dir . 'file.php' ); </php> Или просто на базе upload_dir c подключением данных из output:<php> $baseDir = str_replace('uploads', '', $this->settings['upload_dir']); require_once( $baseDir. 'public/style_images/' . $this->registry->getClass('output')->skin['set_image_dir'] . '/file.php' ); </php> Первый способ самый корректный, второй - популярный, встречается в некоторых платных скинах, но если на сервере нестандартная папка public - второй не работает.
Опубликовано: 19 мая 201114 г Автор Спасибо вам огромное! Работают оба варианта, но появилась проблема. Увеличился шрифт названия категорий, описание категорий и т.д.
Опубликовано: 19 мая 201114 г Если ваш скрипт что-то выводит (через echo, print или подобное, или даже пустой перевод каретки в начале или конце файла), то этот вывод оказывается до определения DOCTYPE (т.е. перед всем шаблоном), что очень плохо - браузер не может определить тип страницы, и изменившийся шрифт - очевидная реакция на эту проблему. В идеале, нужно чтобы ваш php-скрипт ничего никуда не выводил, а только определял некую переменную, которую вы уже выведете дальше в шаблоне, посредством конструкции "{$variable_name}". Например, файл test.php:<?php $test_var = time(); ?> Код в шаблоне:<!DOCTYPE ... <html ... <head ... <body> <php> $images_dir = DOC_IPS_ROOT_PATH . substr( str_replace( array( $this->settings['ipb_img_url'], $this->settings['_original_base_url'] ), "", $this->settings['img_url'] ).'/', 1 ); require_once( $images_dir . 'test.php' ); </php> {$test_var} Результат на выходе:<!DOCTYPE ... <html ... <head ... <body> 1305835183 Однако, иногда возникает необходимость изменить что-то уже существующее, или сразу вписать все "на месте". В таких случаях вы можете получить доступ ко всему уже обработанному коду шаблона через переменную $IPBHTML. Т.е, например, файл test2.php:<?php $IPBHTML .= 'test'; ?> Код в шаблоне:<!DOCTYPE ... <html ... <head ... <body> <php> $images_dir = DOC_IPS_ROOT_PATH . substr( str_replace( array( $this->settings['ipb_img_url'], $this->settings['_original_base_url'] ), "", $this->settings['img_url'] ).'/', 1 ); require_once( $images_dir . 'test2.php' ); </php> В том месте, где стоит вставка ..., появится текст "test":<!DOCTYPE ... <html ... <head ... <body> test А можно и изменить что-то из уже обработанного. Например, test3.php:<?php $IPBHTML = str_replace('test', 'hi!', $IPBHTML); ?> В самом конце globalTemplate:<php> $images_dir = DOC_IPS_ROOT_PATH . substr( str_replace( array( $this->settings['ipb_img_url'], $this->settings['_original_base_url'] ), "", $this->settings['img_url'] ).'/', 1 ); require_once( $images_dir . 'test3.php' ); </php> И на всех страницах форума слово "test" будет заменено на "hi!".
Опубликовано: 19 мая 201114 г Автор Действительно, у меня в файле переменная выводилась через echo.)Благодаря вашему сообщению я разобрался и сделал как хотел. Большое спасибо! А можно ли с помощью такого кода подключать php файл в шаблон: <php> require_once( IPS_PUBLIC_PATH . '/style_images/' . $this->registry->getClass('output')->skin['set_image_dir'] . '/file.php'); </php>
Приветствую!
Стоит задача в том, чтобы подключить в шаблон php файл, расположенным в папке с изображениями данного стиля.
Не вариант если подключать через:
{parse include="file.php"}Потому что придётся файл загружать в корень форума, а так лежал бы себе в папке с изображениями и очень удобно.
Я даже пробовал указывать путь:
{parse include="talk/public/style_images/tbm/file.php"}Но на IP. Contente вылазит ошибка.
Заранее огромное спасибо!
Изменено пользователем Lesovsky