Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Lesovsky

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

Recommended Posts

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

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

 

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

 

{parse include="file.php"}

 

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

 

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

 

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

 

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

 

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

Edited by Lesovsky

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Можно построить от 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

Share this post


Link to post
Share on other sites

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

 

Screenshot100.png

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...