X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Передача фрагментов кода или просто переменных
oboroten_hb
oboroten_hb
Topic Starter сообщение 23.1.2010, 11:00; Ответить: oboroten_hb
Сообщение #1


Здравствуйте!
Я новичок на этом форуме и извиняюсь если данный вопрос уже обсуждался....

У меня следующая проблема:
У меня допустим имеется файл "index.php", обзовём его первым файлом.
В нём я хочу подгрузить файл "main.tpl", обзовём его 2 файлом.

Мне необходимо передать из 1 файла во 2 файл (по средствам include или подобных) переменную $a=123; или какой-нибудь фрагмент кода.

Вы конечно-же подумаете и скажете напиши во фтором файле <? echo $a; ?>...

Но нет, тут не всё так просто! Я в подгружаемом файле отключаю поддержку php, тоесть подгружаемая страница умеет выполнять только html функции...

Вот мне и нужно узнать как можно эту переменную передать в подгружаемый файл...

Сейчас много движков использующих эту систему, например DLE...
Он засовывает кусок кода в какую-то переменную или что-то вроде этого и передаёт его на подгружаемую страницу.

Возмём самый примитивный код вывода новостей:

[PHP]<?
$q1=mysql_query("SELECT * FROM news");
while($new = mysql_fetch_array($q1))
{ ?>

<tr>
<td class="NewsPanelCollapse" rowspan="3" hspace="0">
<img src="templates/default/bmp/angle315big.bmp" width="37" height="8" align="left" hspace="0" vspace="0">
</td>
</tr>
<tr>
<td height="8" style="background-color:#ffffff" colspan="2" nowrap>
<img src="templates/default/bmp/angle45big.bmp" width="33" height="8" align="right" hspace="0" vspace="0">
</td>
</tr>
<tr>
<td class="NewsItem">
<div style="float:left; font-size: 14; color: #002a64"><?echo $new['title']; ?></div>
<div style="float:right"><? echo $new['data']; ?></div><br><hr color="#365fb3"><hr color="#365fb3">
<div style="float:right"><? echo $new['news']; ?></div>
</td>
<td width="25" align="right" nowrap></td>
</tr>
<tr>
<td height="8" colspan="3" style="background-color:ffffff" nowrap>
<img src="templates/default/bmp/angle225big.bmp" width="37" height="8" hspace="0" align="left">
<img src="templates/default/bmp/angle135big.bmp" width="33" height="8" hspace="0" align="right">
</td>
</tr>

<tr><td height="30"></td></tr>
<? } ?>[/PHP]

Как сделать чтобы этот код выполнился на php странице и передался в подгружаемую страницу (по средствам include или подобных) в виде переменной: {content}

Какой код написать чтобы в подгружаемом втором файле написать {content} и перед нами появился блок новостей?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 23.1.2010, 11:41; Ответить: Webmaster_hb
Сообщение #2


oboroten, а в чем проблема прочитать ваш файл в текстовую переменную, и потом ее выполнить как кусок кода ?

но на самом деле, я думаю не стоит изобретать велосипеды, если нет оочень специфической задачи

попробуйте старые, проверенные шаблонизаторы
например, Smarty ^_^
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
NoDrum
NoDrum
сообщение 23.1.2010, 11:58; Ответить: NoDrum
Сообщение #3


[PHP]class tpl {
var $content;

function tpl($file) {
$this->content = @file_get_contents($file);
if (!$this->content) exit();
return;
}

function set($block, $value) {
$this->content = str_replace($block, $value, $this->content);
return;
}

function compile() {
echo $this->content;
return;
}
}
[/PHP]
Код не проверял, но по логике должен работать.
[PHP]$tpl = new tpl('template/main.tpl');
$tpl->set('{time}', time());
$tpl->compile();[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
oboroten_hb
oboroten_hb
Topic Starter сообщение 23.1.2010, 17:11; Ответить: oboroten_hb
Сообщение #4


(Webmaster_hb @ 23.1.2010, 13:41) *
oboroten, а в чем проблема прочитать ваш файл в текстовую переменную, и потом ее выполнить как кусок кода ?

но на самом деле, я думаю не стоит изобретать велосипеды, если нет оочень специфической задачи

попробуйте старые, проверенные шаблонизаторы
например, Smarty ^_^


Я собираюсь изобрести велосипед потому, что не один существующий на сегодня движок не устраивает потребности моего проекта, я хочу сделать такую вещь, чтобы php код обрабатывался в нутри сервера и выводя на экран чтобы небыло никаких переменных, а обычный хтмл код, это хначительно увеличит защиту сайта...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
oboroten_hb
oboroten_hb
Topic Starter сообщение 23.1.2010, 17:13; Ответить: oboroten_hb
Сообщение #5


(NoDrum @ 23.1.2010, 13:58) *
[PHP]class tpl {
var $content;

function tpl($file) {
$this->content = @file_get_contents($file);
if (!$this->content) exit();
return;
}

function set($block, $value) {
$this->content = str_replace($block, $value, $this->content);
return;
}

function compile() {
echo $this->content;
return;
}
}
[/PHP]
Код не проверял, но по логике должен работать.
[PHP]$tpl = new tpl('template/main.tpl');
$tpl->set('{time}', time());
$tpl->compile();[/PHP]


Сейчас всё проверим, если будут ошибки, попробуем исправить...
О конечном результате отпишусь...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
oboroten_hb
oboroten_hb
Topic Starter сообщение 23.1.2010, 17:26; Ответить: oboroten_hb
Сообщение #6


NoDrum, Спасибо огромное!
Всё супер работает!!!:P

Только не сможешь ещё сделать подробное описание кода?
Если нет, то сам поковыряюсь в интернете и разберусь...B)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
oboroten_hb
oboroten_hb
Topic Starter сообщение 24.1.2010, 14:37; Ответить: oboroten_hb
Сообщение #7


Всё я нашёл подробное описание... :evrika:
Если кому ye'yj это описание, то вы можете почитать его тут
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
oboroten_hb
oboroten_hb
Topic Starter сообщение 24.1.2010, 15:59; Ответить: oboroten_hb
Сообщение #8


Теперь у меня возник новый вопрос!

Допустим я имею следующий код:

[PHP]<?
$go=$_GET['go'];

if (isset($go)){
include($go.".php");
}else{
include("news.php");
}
?>[/PHP]

Как сделать чтобы на подгружаемой странице он вызывался командой: {content}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Licoric
Licoric
сообщение 24.1.2010, 17:51; Ответить: Licoric
Сообщение #9


Это, если я не ошибаюсь, "пользовательские функции".
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
NoDrum
NoDrum
сообщение 24.1.2010, 19:49; Ответить: NoDrum
Сообщение #10


У тебя происходит вывод данных (echo) в подключаемых файлах, например news.php?

Класс я написал сам, чтобы показать логику шаблонов. Приведу пример работы с ним:

Шаблон post.tpl для вывода новости:
<div>
<h1>{title}</h1>
{content}
</div>

Т.е. нам надо вставить заголовок ({title}) и содержимое ({content}) новости. Делаем это так:

[PHP]// Получем новость из БД в массив $post...

$tpl = new tpl('post.tpl');
$tpl->set('{title}', $post['title']);
$tpl->set('{content}', $post['content']);
$tpl->compile();[/PHP]

Надеюсь стало понятнее. Формирование страницы, кстати, можно делать не из одного шаблона.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Создать видеоканал лучше в ютуб или телеграм?
20 uahomka 3527 20.4.2024, 20:56
автор: Vmir
Открытая тема (нет новых ответов) Если статья не в индексе Google - она уникальна или нет?
5 uahomka 1440 3.4.2024, 23:56
автор: Liudmila
Открытая тема (нет новых ответов) Где больше пробив на кликандер или попандер или попап трафике?
1 Boymaster 680 20.3.2024, 9:50
автор: Skyworker
Горячая тема (нет новых ответов) Выполню качественную верстку макетов или разработка собственного, быстро и не дорого
от 45$
123 webche 117232 17.3.2024, 7:09
автор: webche
Открытая тема (нет новых ответов) От какого экрана будут меньше уставать глаза OLED или IPS?
3 metvekot 1035 12.3.2024, 16:25
автор: MisterBit


 



RSS Текстовая версия Сейчас: 23.4.2024, 19:49
Дизайн