Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

23.03.2010, 21:30
|
|
Участник форума
Регистрация: 07.08.2008
Сообщений: 281
Провел на форуме: 3300342
Репутация:
165
|
|
Помогите разобраться с шаблонизатором
есть main.tpl
в нём находится
PHP код:
<span class="breadcrumbs pathway" style="font-size:1.2em;">{<?php print $module; ?>}</span>
{cotegory} и {FAQ}
и есть еще index.php
В нём находится
PHP код:
$module = $_GET['mod'];
switch($module)
{
case 'rules':
case 'registration':
case 'info':
case 'about':
case 'stat':
case 'auth':
case 'login':
case 'out':
case 'search':
case 'forgot':
case 'whois':
case 'category':
case 'faq':
case 'news':
break;
default:
$module = 'top100';
break;
}
}
$tpl = new Template; //инициируем класс
$tpl->dir = ROOTPATH.'/'.$topclass->version().'/'; //задаём местоположение папки с шаблонами
$tpl->load_template('main.tpl'); //загружаем каркас
$tpl->set('{category}', $tpl->sub_load_template('category.tpl'));
$tpl->set('{FAQ}', $tpl->sub_load_template('faq.tpl'));
$tpl->set('{'.$module.'}', $tpl->sub_load_template($module.'.tpl'));
$tpl->compile('main'); //собираем шаблон
eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php '); //выводим результат работы, с возможностью вставки пхп кода в tpl
$tpl->global_clear(); //очищаем все переменные для возможно следующего шаблона
{category} и {FAQ} благополучно заменяются, а вот
{<?php print $module; ?>} не хочет , просто выводит содержание переменной $module в фигурных скобках
Помогите пожалуйста разобраться
Последний раз редактировалось SeNaP; 23.03.2010 в 21:32..
|
|
|

23.03.2010, 21:41
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
PHP код:
$tpl->load_template('main.tpl');
Больше чем уверен, что там происходит обычный file_get_contents('main.tpl');
Так вот, почему тогда там должно выполниться то,что ты там написал?)
Оно выполняется уже познее, при eval'е.Поэтому ты и видиш результат работы в фигурных скобках.
|
|
|

23.03.2010, 21:53
|
|
Участник форума
Регистрация: 07.08.2008
Сообщений: 281
Провел на форуме: 3300342
Репутация:
165
|
|
Сообщение от m0Hze
PHP код:
$tpl->load_template('main.tpl');
Больше чем уверен, что там происходит обычный file_get_contents('main.tpl');
Так вот, почему тогда там должно выполниться то,что ты там написал?)
Оно выполняется уже познее, при eval'е.Поэтому ты и видиш результат работы в фигурных скобках.
А как тогда с этим бороться?
class скручен с DLE
PHP код:
public function load_template($tpl_name) {
$time_before = $this->get_real_time();
if ($tpl_name == '' || !file_exists($this->dir . DIRECTORY_SEPARATOR . $tpl_name)) { die ("Невозможно загрузить шаблон: ". $tpl_name); return false;}
$this->template = file_get_contents($this->dir . DIRECTORY_SEPARATOR . $tpl_name);
if ( stristr( $this->template, "{include file=" ) ) {
$this->template = preg_replace( "#\\{include file=['\"](.+?)['\"]\\}#ies","\$this->sub_load_template('\\1')", $this->template);
}
$this->copy_template = $this->template;
$this->template_parse_time += $this->get_real_time() - $time_before;
return true;
}
|
|
|

23.03.2010, 22:39
|
|
Новичок
Регистрация: 16.12.2009
Сообщений: 27
Провел на форуме: 203807
Репутация:
30
|
|
SeNaP, у тебя много что непонятно.
Попробуй заменить
Код:
$tpl->set('{'.$module.'}', $tpl->sub_load_template($module.'.tpl'));
На это
Код:
$module = $tpl->sub_load_template($module.'.tpl');
|
|
|

23.03.2010, 23:13
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от SeNaP
А как тогда с этим бороться?
class скручен с DLE
PHP код:
public function load_template($tpl_name) {
$time_before = $this->get_real_time();
if ($tpl_name == '' || !file_exists($this->dir . DIRECTORY_SEPARATOR . $tpl_name)) { die ("Невозможно загрузить шаблон: ". $tpl_name); return false;}
$this->template = file_get_contents($this->dir . DIRECTORY_SEPARATOR . $tpl_name);
if ( stristr( $this->template, "{include file=" ) ) {
$this->template = preg_replace( "#\\{include file=['\"](.+?)['\"]\\}#ies","\$this->sub_load_template('\\1')", $this->template);
}
$this->copy_template = $this->template;
$this->template_parse_time += $this->get_real_time() - $time_before;
return true;
}
Можно прикрутить поиск шаблоного тега,и замены через Eval.
В шаблоне пишеш что-то вроде:
Код:
{php}$var=val;if()..else()..{/php}
В шаблонизаторе ищешь эти теги,и заменяеш на eval() ихнего значения. Ну это самое первое что приходит в голову.
|
|
|

24.03.2010, 02:16
|
|
Познающий
Регистрация: 24.11.2004
Сообщений: 55
Провел на форуме: 1326055
Репутация:
36
|
|
Помогите написать простенький скрип, елс ивам не сложно. Буду премного благодарен.
есть две папки 1 и 2
в папке 1 TXT файлы с каким-то контентом.
в папке 2 тоже TXT файлы с ТАКИМИ же названия файлами НО с другим контентом.
так вот надо чтобы файлы с папки 2. файлы с ОДНИКОВЫМ названием ДОПИСЫВАЛИ контент в файл с ТАКИМ же названием в папку 1.
------------------------------------
пояснение.
тоесть в папке 1 и в папке 2 есть файлы допустим
good.txt
bad.txt
нужно чтобы брался контент с файла good.txt папки 2 и ДОПИСЫВАЙЛСЯ в файлик good.txt в папку 1
и также bad.txt и другеи файлы с одниаковым названием)
Последний раз редактировалось Pr13raK; 24.03.2010 в 02:19..
|
|
|

24.03.2010, 02:24
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от Pr13raK
Помогите написать простенький скрип, елс ивам не сложно. Буду премного благодарен.
есть две папки 1 и 2
в папке 1 TXT файлы с каким-то контентом.
в папке 2 тоже TXT файлы с ТАКИМИ же названия файлами НО с другим контентом.
так вот надо чтобы файлы с папки 2. файлы с ОДНИКОВЫМ названием ДОПИСЫВАЛИ контент в файл с ТАКИМ же названием в папку 1.
------------------------------------
пояснение.
тоесть в папке 1 и в папке 2 есть файлы допустим
good.txt
bad.txt
нужно чтобы брался контент с файла good.txt папки 2 и ДОПИСЫВАЙЛСЯ в файлик good.txt в папку 1
и также bad.txt и другеи файлы с одниаковым названием)
Что то вроде:
PHP код:
<?php
$firstFolder = './first/';
$secondFolder = './second/';
$files = scandir($secondFolder);
foreach ($files as $file) {
if ($file != '.' and $file != '..' and file_exists($firstFolder . $file)) {
$content = file_get_contents($secondFolder . $file);
$open = fopen($firstFolder . $file, 'a+');
fwrite($open, $content);
fclose($open);
}
}
?>
|
|
|

24.03.2010, 03:48
|
|
Участник форума
Регистрация: 29.07.2008
Сообщений: 128
Провел на форуме: 225836
Репутация:
34
|
|
Может всётаки кто поможет с алгоритмом idea? либо даст готовый ?срочно и очень надо
|
|
|

24.03.2010, 04:15
|
|
Новичок
Регистрация: 29.05.2008
Сообщений: 16
Провел на форуме: 71933
Репутация:
0
|
|
Есть желание научится делать нормальный дизайн для сайтов. Подскажите как рисовать для веба в фотошопе, где этому можно поучиться. Можно ли использовать gimp 2.
зы только пожалуйста НЕ нужно давать ссылки на гугл, мне не интересно фотки ретушировать...
|
|
|

24.03.2010, 09:05
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
Может всётаки кто поможет с алгоритмом idea? либо даст готовый ?срочно и очень надо
"Готовый" и "срочно надо" - это mcrypt или openssl
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|