Можно ли к чему-нибудь придраться?
index.php
include("functions.php");
template("Заголовок", "Контент");
functions.php
<?php
function host(){ /// определим доменное имя
$domains = parse_url($_SERVER['HTTP_HOST']);
return 'http://'.$domains['path'].'/';
}
function template($title, $content){ /// с генерируем шаблон
$t = file_get_contents(host()."template/index.tpl");
$n = array('{TITLE}', '{CONTENT}');
$k = array($title, $content);
echo str_replace($n,$k,$t);
}
index.tpl
<html>
<head>
<title>{TITLE}</title>
</head>
<body>
{CONTENT}
</body>
</html>
Спустя 2 минуты, 58 секунд (26.01.2012 - 18:09) alex12060 написал(а):
bob marley
Можно ли придраться? Ну если тебе достаточно только замены title и content, то думаю вполне удачно. Но если думаешь расширяться - статика в массиве совершенно ни к чему
Можно ли придраться? Ну если тебе достаточно только замены title и content, то думаю вполне удачно. Но если думаешь расширяться - статика в массиве совершенно ни к чему

Спустя 4 минуты, 6 секунд (26.01.2012 - 18:13) bob marley написал(а):
Что в массиве не к чему?Конечно расширяться..Я для примера указал!
Спустя 34 минуты, 29 секунд (26.01.2012 - 18:47) bob marley написал(а):
Алло,Народ,есть ошибки нет?
Просто попросили сделать,за не большую сумму,но все равно обидно будет,если мне предъявят что я херню сделал
Просто попросили сделать,за не большую сумму,но все равно обидно будет,если мне предъявят что я херню сделал

Спустя 10 минут, 20 секунд (26.01.2012 - 18:58) alex12060 написал(а):
Ну смотри, допустим, я устроил у себя хардкорный шаблон:
Попробуй это реализовать.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset={CHAR}" />
<title>{TITLE}</title>
<meta name="description" content="{DESCRIPTION}" />
<meta name="keywords" content="{KEYWORDS}" />
<script type="text/javascript" src="{SCRIPT_MAIN}"></script>
{ALL_OTHER_SCRIPTS}
<script type="text/javascript">
{SCRIPT}
</script>
<style type="text/css">
{STYLE}
</style>
</head>
<body>
{HEADER}
{CONTENT}
<div id="upload_form">
{UPLOAD_FORM}
</div>
{FOOTER}
</body>
</html>
Попробуй это реализовать.
Спустя 3 минуты, 39 секунд (26.01.2012 - 19:01) bob marley написал(а):
alex12060
вообще без базара
вообще без базара

Спустя 6 минут, 9 секунд (26.01.2012 - 19:08) bob marley написал(а):
index.php
functions.php
<?php include('functions.php');
$title = 'Заголовок';
$content = 'Контент';
$description = 'дескрипшен';
$keywords = 'ключи';
$script_main = 'скрипт какой-то';
$all_other_scripts = 'все скрипты';
$script = 'скрипт';
$style = 'стиль';
$header = 'бошка';
$upload_form = 'форма';
$footer = 'попка';
template($title, $content, $description, $keywords, $script_main, $all_other_scripts, $script, $style, $header, $upload_form, $footer);
functions.php
<?php
function host(){ /// определим доменное имя
$url = explode('.', $_SERVER['HTTP_HOST']);
if(count($url) == '2'){$type = '2';} /// если домен первого уровня $type = 2
if(count($url) == '3'){$type = '1';} /// если домен третьего уровня $type = 1
if($type == '1'){ /// если $type = 1
return 'http://'.$url['0'].'.'.$url['1'].'.'.$url['2'].'/';
}
if($type == '2'){ /// если $type = 2
return 'http://'.$url['0'].'.'.$url['1'].'/';
}
}
function template($title, $content, $description, $keywords, $script_main, $all_other_scripts, $script, $style, $header, $upload_form, $footer){ /// с генерируем шаблон
$t = file_get_contents(host()."template/index.tpl");
$n = array('{TITLE}', '{CONTENT}', '{DESCRIPTION}', '{KEYWORDS}', '{SCRIPT_MAIN}', '{ALL_OTHER_SCRIPTS}', '{SCRIPT}', '{STYLE}', '{HEADER}', '{UPLOAD_FORM}', '{FOOTER}');
$k = array($title, $content, $description, $keywords, $script_main, $all_other_scripts, $script, $style, $header, $upload_form, $footer);
echo str_replace($n,$k,$t);
}
Спустя 2 минуты, 34 секунды (26.01.2012 - 19:10) bob marley написал(а):
В переменные напиши,что-нибудь нормальное!а то код сюда кинул,отправил,а русские буквы на эту херню переделались сами..
кстати на счет скрипта,если скажешь что вдруг там большой код надо в переменные загонять,то можно создавать в папку contents к примеру файлы с данными и вытаскивать их с помощью file_get_contents()
кстати на счет скрипта,если скажешь что вдруг там большой код надо в переменные загонять,то можно создавать в папку contents к примеру файлы с данными и вытаскивать их с помощью file_get_contents()
Спустя 15 минут, 18 секунд (26.01.2012 - 19:25) alex12060 написал(а):
bob marley
Требовалось это и доказать. А если я еще захочу, ну, например, 5-7 штук? Код получится...мм...огромным, перегруженным и так далее.
А вот если я хочу для разных шаблонов разные теги?
Допустим для шаблона "Авторизации" свои штуки, отличные от стандартных?
У тебя все привязано, нет динамики. Подумай над этим.
Все гораздо проще, чем можно предполагать.
Просто проверь такую "блок схему"
Если в строке встречается { ... }, то значит, это у нас шаблон.
... - это название поля.
Ну и думаю, если пошаманить с ассоциативным массивом, то можно добиться нужной инамики, и при расширени приложения, придется лишь добавлять в массив ключ с значением.
Хотя это и не идеальное решение, но оно в разы лучше твоего
Требовалось это и доказать. А если я еще захочу, ну, например, 5-7 штук? Код получится...мм...огромным, перегруженным и так далее.
А вот если я хочу для разных шаблонов разные теги?
Допустим для шаблона "Авторизации" свои штуки, отличные от стандартных?
У тебя все привязано, нет динамики. Подумай над этим.
Все гораздо проще, чем можно предполагать.
Просто проверь такую "блок схему"
Если в строке встречается { ... }, то значит, это у нас шаблон.
... - это название поля.
Ну и думаю, если пошаманить с ассоциативным массивом, то можно добиться нужной инамики, и при расширени приложения, придется лишь добавлять в массив ключ с значением.
Хотя это и не идеальное решение, но оно в разы лучше твоего

Спустя 3 минуты, 29 секунд (26.01.2012 - 19:29) bob marley написал(а):
слушай..спс за идею
сейчас сделаю..это и кода меньше займет и по прикольней будет:)..
Стоп..вот определил я название между {} например NAMES ..А куда заносить информацию в NAMES..тоесть как будет вообще работать..как вызывать функцию..все..я в замешательстве!

сейчас сделаю..это и кода меньше займет и по прикольней будет:)..
Стоп..вот определил я название между {} например NAMES ..А куда заносить информацию в NAMES..тоесть как будет вообще работать..как вызывать функцию..все..я в замешательстве!
Спустя 1 минута, 16 секунд (26.01.2012 - 19:30) bob marley написал(а):
все таки придется массив создавать..
Спустя 7 минут, 1 секунда (26.01.2012 - 19:37) Winston написал(а):
Я так и не понял зачем этот бессмысленный код? :blink:
Цитата (bob marley @ 26.01.2012 - 18:08) |
$url = explode('.', $_SERVER['HTTP_HOST']); if(count($url) == '2'){$type = '2';} /// если домен первого уровня $type = 2 if(count($url) == '3'){$type = '1';} /// если домен третьего уровня $type = 1 if($type == '1'){ /// если $type = 1 return 'http://'.$url['0'].'.'.$url['1'].'.'.$url['2'].'/'; } if($type == '2'){ /// если $type = 2 return 'http://'.$url['0'].'.'.$url['1'].'/'; } } |
Что мешает написать так?
print_r(parse_url($_SERVER['HTTP_HOST']));
Или вместо parse_url написать pathinfo ?
Спустя 16 минут, 45 секунд (26.01.2012 - 19:54) alex12060 написал(а):
Все зависит от того, как хранится и где у тебя информация.
Ну в принципе, я тебе скзал, что нужен ассоциативный массив для таких целей.
Ну в принципе, я тебе скзал, что нужен ассоциативный массив для таких целей.
Спустя 1 час, 13 минут, 45 секунд (26.01.2012 - 21:08) bob marley написал(а):
Winston
делаю как знаю.
возьму на заметку
parse_url()
делаю как знаю.
возьму на заметку
parse_url()
Спустя 20 минут, 8 секунд (26.01.2012 - 21:28) bob marley написал(а):
Winston
Цитата (bob marley @ 26.01.2012 - 15:06) |
function host(){ /// определим доменное имя $domains = parse_url($_SERVER['HTTP_HOST']); return 'http://'.$domains['path'].'/'; } |
Так будет верно?
Спустя 5 минут, 36 секунд (26.01.2012 - 21:33) bob marley написал(а):
Теперь займемся template()..
Я думаю может создается с начала(до выполнения функции массив),
а потом сделать чтобы он разбивался на ключи и содержание и str_replace();
По сути получится тоже мне кажется..Я если честно не понимаю как можно по другому..Не могу сфантазировать..придумать так сказать!
Я думаю может создается с начала(до выполнения функции массив),
а потом сделать чтобы он разбивался на ключи и содержание и str_replace();
По сути получится тоже мне кажется..Я если честно не понимаю как можно по другому..Не могу сфантазировать..придумать так сказать!
Спустя 2 часа, 58 минут, 57 секунд (27.01.2012 - 00:32) Winston написал(а):
Цитата (bob marley @ 26.01.2012 - 20:28) |
Так будет верно? |
Почему просто не написать?
return 'http://'.$_SERVER['HTTP_HOST'].'/';
А насчет шаблонизатора.., можно как-то так сделать
Свернутый текст
function template($blocks, $replacement, $template = 'index')
{
$template = host() . 'template/' . $template . '.tpl'; // Формируем путь к файлу
if(file_exists($template)) // Проверяем есть ли такой файл
{
$page = file_get_contents($template); // Получаем содержимое
return strtr($page, $blocks, $replacement); // Заменяем блоки на текст
}
else
return false;
}
$content = 'контент';
$text = 'текст';
$blocks = array( // Массив блоков
'{CONTENT}', '{TEXT}'
);
$replacement = array( // Массив замен
$content, $text
);
echo template($blocks, $replacement);
Спустя 7 часов, 58 минут, 28 секунд (27.01.2012 - 08:31) 45king написал(а):
еще цикличные блоки
Спустя 8 часов, 40 минут, 4 секунды (27.01.2012 - 17:11) bob marley написал(а):
http://phpforum.su/index.php?act=ST&f=11&t=56714 - вот что получилось!
_____________
伊戈尔