Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Lesovsky

Подключение php файла в шаблон из папки с изображениями

Рекомендованные сообщения

05/19/11 13:32 (изменено)

Приветствую!

Стоит задача в том, чтобы подключить в шаблон php файл, расположенным в папке с изображениями данного стиля.

 

Не вариант если подключать через:

 

{parse include="file.php"}

 

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

 

Я даже пробовал указывать путь:

 

{parse include="talk/public/style_images/tbm/file.php"}

 

Но на IP. Contente вылазит ошибка.

 

Заранее огромное спасибо!

Изменено пользователем Lesovsky

Поделиться сообщением


Ссылка на сообщение

Забыл написать, что в шаблон globalTemplate хочу подключить.

Поделиться сообщением


Ссылка на сообщение

Можно построить от 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 - второй не работает.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Спасибо вам огромное! Работают оба варианта, но появилась проблема. Увеличился шрифт названия категорий, описание категорий и т.д.

 

Screenshot100.png

Поделиться сообщением


Ссылка на сообщение

Если ваш скрипт что-то выводит (через 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!".

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

Действительно, у меня в файле переменная выводилась через echo.)

Благодаря вашему сообщению я разобрался и сделал как хотел.

Большое спасибо!

 

А можно ли с помощью такого кода подключать php файл в шаблон:

 

<php>
require_once( IPS_PUBLIC_PATH . '/style_images/' .  $this->registry->getClass('output')->skin['set_image_dir'] .  '/file.php');
</php>

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...