Перейти к содержимому

Сервис обмена электронных валют

Выбрать шаблон и создать сайт

Шаблонизатор PHP

#11 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 22 Октябрь 2009 - 15:53

юрал отсюда _http://phpclub.ru/talk/showthread.php?threadid=116534&rand=15
  • 0

#12 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 23 Октябрь 2009 - 02:42

[quote name='ZiTosS' date='21.10.2009, 16:41' post='33591']
gaaarfild,

Хех... Ну ты подумай сам, что шаблон это просто начальное формирование контента и за последующие вставки JavaScript и Ajax он не отвечает.
Вообще я всегда делаю так: Если страница формируется на начальном этапе - то применимы шаблоны и шаблонизатор. Если мы хотим проитзвести какие либо действия с помощью Ajax, мы лмбо просто выводом на экран формируем контент, либо у нас должен быть отдельный шаблон, который выводит то что нам нужно.

А у тебя... К примеру, ты загрузил низ страницы и меняешь в нём с помощью Ajax, зачем же заменять целую часть шаблона если тебе ,к примеру, в div нужно вернуть успешность выполнения или полученный контент.
Я думаю концепция подхода у тебя не правильна. Чаще всего если Ajax-скрипт возвращает что-то, что должно изменить страницу, для этых действий должен быть создан специальный контейнер и содержимое должно вставляться в него.

Просто пойми, я и делаю так, чтобы отображалась собственно только та информация, которая нам нужна в контейнере. Тоесть в модуле функция. В ней вывод информации исключительно такой
echo "Информация";

Теоретически, в контейнере должнобыть только "Информация". А там пол моего шаблона и "Информация". Может просто это даже не в шаблоне дело, а какая нибудь характерная ошибка при написании AJAX кода?
  • 0

#13 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 24 Октябрь 2009 - 11:45

gaaarfild, Скорее всего это ошибка у тебя, ты где-то лишний кусок шаблона выводишь или подхватываешь при обращении к модулю, это точно не в Ajax проблема. Проверь хорошенько путь следования от обращения по Ajax, и что выводится. Я думаю найдешь для себя интересное.
  • 0

#14 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 28 Октябрь 2009 - 16:08

Как вообще можно в этом шаблонизаторе реализовать некоторые вещи, типо отправления заголовков из модулей. Ведь шаблон грузится раньше модулей. Во всяком случае до модулей уже идет вывод информации на экран.
Если мне надо в модуле отправить какие нибудь заголовки или например сделать редирект, как можно это решить?
  • 0

#15 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 29 Октябрь 2009 - 01:24

gaaarfild, советую делать сборку HTML в отдельную переменную, а затем в самом конце её выводить, зачем же это нужно...
1) Ты не нарушишь вывод заголовков в тех же модулях выводом символов на экран.
2) До вывода на экран ты можешь сколько угодно раз обработать и заменить в своём шаблоне и так далее.

Как же это сделать...
Да очень просто, вместо echo(вывода на экран) нам надо записывать вернувшийся текст из функции в переменную.
  • 0

#16 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 29 Октябрь 2009 - 14:31

А потом ее выводить с помощью echo?
  • 0

#17 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 30 Октябрь 2009 - 01:32

gaaarfild, Да как душе угодно, хоть через буффер
  • 0

#18 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 30 Октябрь 2009 - 23:27

Тогда я ничего не понял! =) Что меняется-то? =))
  • 0

#19 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 31 Октябрь 2009 - 22:47

gaaarfild, если ты будешь выводить шаблон в конце, это будет гарантировать, что если и были какие-либо передающиеся заголовки на странице, они будут переданы. Так как вывода на экран до конечного вывода не будет
  • 0

#20 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 02 Ноябрь 2009 - 01:09

<?php
define('FUNC_FILE', true);
error_reporting (E_ERROR);
session_cache_limiter("private");
session_start();
include("includes/config/config.php");
include_once ("includes/class/mysql.php");
include_once ("includes/functions/functions.php");
if ($handle = opendir('modules')) {
	while (false !== ($file = readdir($handle))) { 
		if ($file != "." && $file != ".." && $file != "index.html") {
			$result = $db->sql_query("SELECT module_name FROM ".$prefix."_modules WHERE module_name = '".$file."'");
			if ($db->sql_numrows($result)==0){
			$result = $db->sql_query("SELECT MAX(sort) FROM ".$prefix."_modules");
			list($sort) = $db->sql_fetchrow($result);
			$sort++;
			$result = $db->sql_query("INSERT INTO ".$prefix."_modules (module_name, module_title, sort, hidden, active) VALUES ('".$file."', '".$file."', ".$sort.", 0, 1)");
			}
		} 
	}
	closedir($handle); 
}
$index = array(
		"sitename" => $config['sitename'],
		"meta" => meta_assign(),
		"script" => script_assign(),
		"link" => link_assign(),
		"main_tpl" => $config['main_tpl'],
		"head_banner" => topbanner_create(),
		"logo" => logo_create(),
		"left_block" => lb_create(),
		"messages" => mes_create(),
		"center_block" => cb_create(),
		"module" => module_load(),
		"bottom_block" => botb_create(),
		"right_block" => rb_create(),
		"foot_banner" => bottombanner_create(),
		"copyright" => $config['copyright'],
		);
   $html = parseTpl("templates/{$config['main_tpl']}/index.tpl", $index);
$html = str_replace('<HR>', '<hr />', $html);
$html = str_replace('<hr>', '<hr />', $html);
$html = str_replace('<BR>', '<br />', $html);
$html = str_replace('<br>', '<br />', $html);
echo $html;
?>

Вот так выглядит мой индекс-файл. Никаких пробелов и других символов нет до открывающего тега PHP. Никакого вывода информации. Ничего, что моголо бы препятствовать отправке заголовков. Вывод стоит в самом конце.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru