ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Загрузка темы из main.tpl
  #1  
Старый 18.02.2010, 23:02
Аватар для Fox_NICK
Fox_NICK
Новичок
Регистрация: 10.01.2007
Сообщений: 21
Провел на форуме:
175230

Репутация: 15
По умолчанию Загрузка темы из main.tpl

Доброго времени суток! не мог ли бы подсказать как сделать так что бы шаблон сайта загружался из файла, к примеру skin/main.tpl
Сейчас шаблон сайт у меня загружается так : $skin_name = _skin_dir."/"._skin_name."/index.php";

но так не очень удобно...
 
Ответить с цитированием

  #2  
Старый 18.02.2010, 23:35
Аватар для POS_troi
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
Провел на форуме:
3718311

Репутация: 1118


Отправить сообщение для POS_troi с помощью ICQ
По умолчанию

Делай парсер tpl , примеров куча - тот-же DLE

Я пользуюсь этим
Код:
<?php

class tpl {

	var $data	=	array();
	var $root	=	'.';
	var $ext	=	'.tpl';
	var $da_vr	=	array();
	
	function template($name, $dir, $file = '') {
		global $lang;

		if (is_dir($dir)) {
			$this -> root = $dir;
		}
		else {
			die(sprintf($lang['msge_no_tpldir'], $dir));
		}
		
		$nn		=	$name;
		$ext	=	$this -> ext;
		$name	=	$dir.'/'.$name.$ext;

		if ($file) {
			$name = $dir.$file;
		}

		if (!is_file($name)) {
			die(sprintf($lang['msgе_no_tpl'], $name));
		}

		$fp		=	fopen($name,'r');
		$data	=	filesize($name)?fread($fp,filesize($name)):'';
		fclose($fp);

		$this -> data[$nn] = $data;
	}

	function vars($nn, $vars = array()) {
		global $lang, $member_db, $userROW, $config, $PHP_SELF;

		$data = $this -> data[$nn];

		preg_match_all('/(?<=\{)l_(.*?)(?=\})/i', $data, $larr);

		foreach ($larr[0] as $k => $v) {
			$name_larr = substr($v, 2);
			$data = str_replace('{'.$v.'}', $lang[$name_larr], $data);
		}

		preg_match_all('/\[isplugin (.+?)\](.+?)\[\/isplugin\]/is', $data, $parr);
		foreach ($parr[0] as $k => $v) {
			//print "ISPLUG '$k' => '$v' [".$parr[1][$k]."][".$parr[2][$k]."]<br>\n";
			$data = str_replace($v,status($parr[1][$k])?$parr[2][$k]:'', $data);
		}

		preg_match_all('/\[isnplugin (.+?)\](.+?)\[\/isnplugin\]/is', $data, $parr);
		foreach ($parr[0] as $k => $v) {
			$data = str_replace($v,status($parr[1][$k])?'':$parr[2][$k], $data);
		}

		preg_match_all('/(?<=\{)plugin_(.*?)(?=\})/i', $data, $parr);

		foreach ($parr[0] as $k => $v) {
			$name_parr = substr($v, 7);
			if (preg_match('/^(.+)\_/', $name_parr, $match))
				$name_parr = $match[1];
				
			if (!status($name_parr)) {
				$data = str_replace('{'.$v.'}', '', $data);	
			}
		}

		if ($PHP_SELF && $PHP_SELF == "admin.php") {
			preg_match_all('/(?<=\{)c_(.*?)(?=\})/i', $data, $carr);

			foreach ($carr[0] as $k => $v) {
				$name_carr = substr($v, 2);
				$data = str_replace('{'.$v.'}', $config[$name_carr], $data);
			}
		}

		if ($vars['vars']) {
			foreach ($vars['vars'] as $id => $var) {
				if (eregi("\[", $id)) {
					$data = str_replace($id, $var, $data);
				}
				else {
					$data = str_replace('{'.$id.'}', $var, $data);
				}
			}
		}
		
		if ($vars['regx']) {
			foreach ($vars['regx'] as $id => $var) {
				$data = preg_replace($id, $var, $data);
			}
		}
		$data = str_replace('{skins_url}', skins_url, $data);
		$data = str_replace('{tpl_url}', tpl_url, $data);
		$data = str_replace('{zz_url}', zz_url, $data);

		$this -> da_vr[$nn] = $data;
	}

	function show($name) {
		$ret = $this -> da_vr[$name];
		$this -> da_vr[$name] = $this -> data[$name];
		return $ret;
	}
}
?>

использование

Код:
$tpl = new tpl;
	$vars['vars']['CONTENT'] = show_short_video($navi['start'],$navi['num']);
	$vars['vars']['NAV'] = $navi['navi'];
	$tpl->template('main','./themplates/default/');
	$tpl->vars('main',$vars);
	echo $tpl->show('main');

Последний раз редактировалось POS_troi; 18.02.2010 в 23:41..
 
Ответить с цитированием

  #3  
Старый 18.02.2010, 23:48
Аватар для Fox_NICK
Fox_NICK
Новичок
Регистрация: 10.01.2007
Сообщений: 21
Провел на форуме:
175230

Репутация: 15
По умолчанию

Спасибо огромное! очень выручил
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обзор Программ для Оформления\Украшения Windows BlackCats Soft - Windows 37 09.06.2010 01:21
WIN XP максимальная загрузка ЦП одним процессом не более 50% LaMer0n Windows системы 4 26.04.2009 01:21
Самые популярные темы на Ачате LoneWolf666 Болталка 9 25.03.2009 18:01
Платная рассылка Ашманова троль909 Статьи 11 22.02.2009 22:00



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ