Сталкнулся с шаблоном.
Вроде разобрался но
как вставить в шаблон свой скрипт на знаю,
подскажите как с этим шаблоном работать,
как туда свои скрипты инклюдить.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>%TITLE%</title>
<meta name="description" content="%DESC%" />
<meta name="keywords" content="%KEYWORDS%" />
<link href="templates/%TEMPLATE%/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="top"><img src="templates/%TEMPLATE%/img/top.gif" alt="" width="300" height="80" /></div>
<div class="left">
<div class="menu">
<p><strong>НАВИГАЦИЯ:</strong></p>
<p>%MENU%<br />
<br />
</p>
</div></div>
<div class="right">%CONTENT%</div>
???????????????????????????????????????????????????????????
<div class="right"><?php include ("guest.php");?></div>
????????????????????????????????????????????????????????????
<div class="bottom">
<div align="center">©2008</div>
</div>
</body>
</html>
Спустя 1 час, 38 минут, 11 секунд (2.07.2010 - 17:44) vagrand написал(а):
Думаю шо делу очень бы помогло название шаблонизатора
Спустя 42 минуты, 29 секунд (2.07.2010 - 18:26) E-SPAR написал(а):
обычно в шаблонизаторах нельзя использовать php
Спустя 1 минута, 5 секунд (2.07.2010 - 18:28) DedMorozzz написал(а):
чушь. Можно. Обычно спец конструкцией указывается, что сие "пхп".
Спустя 1 минута, 33 секунды (2.07.2010 - 18:29) E-SPAR написал(а):
Цитата (DedMorozzz @ 2.07.2010 - 15:28) |
чушь. Можно. Обычно спец конструкцией указывается, что сие "пхп". |
опять-таки нужно знать что за шаблонизатор
Спустя 2 часа, 1 минута, 53 секунды (2.07.2010 - 20:31) Slays написал(а):
а просто вставить
<?php include("путь"); ?>
нельзя ?
в каком формате сохранен шаблон ?
<?php include("путь"); ?>
нельзя ?
в каком формате сохранен шаблон ?
Спустя 20 часов, 28 минут, 6 секунд (3.07.2010 - 16:59) mihai написал(а):
Да какой шаблонизатор,
маленький самописный скриптик в интернете нашёл,
хотел усовершенствовать комментарии вставить,
а не тут то было
вот даю главную страницу,
может это что то прояснит
маленький самописный скриптик в интернете нашёл,
хотел усовершенствовать комментарии вставить,
а не тут то было
вот даю главную страницу,
может это что то прояснит
// подключаем файл настроек
require('settings.php');
// проверяем наличие индекс-страницы
if (!file_exists ("content/" . $index . ".php"))
die ("Отсутствует стартовая страница... Для добавления и редактирования страниц используйте <a href=\"./admin\">панель администратора</a>");
if (isset($_GET ['id'])) // если послана переменная ID страницы
{
$id = $_GET ['id'];
}
else
{
$id = $index; // иначе ID страницы стартовая из файла настроек
}
if (file_exists ("content/" . $id . ".php")) // проверяем наличие нужной статьи
{
include ("content/" . $id . ".php"); // подключаем файл нужной статьи
}
else // если нет ни одного файла стрраниц
{
include ('404.html'); exit;
}
if (file_exists ("templates/" . $curr_tmpl . "/index.php")) // проверяем наличие индекс-файла активного шаблона
{
$template_page = file_get_contents("templates/" . $curr_tmpl . "/index.php"); // считываем содержимое шаблона
}
else
{
include ("error.html"); // если отсутствует файл шаблона
die (""); // то выходим
}
include ("menu.php"); // подключаем скрипт вывода меню
// выполняем необходимые замены тегов в шаблоне
//тоесть вставляем содержимое которое в переменных в шаблон
//а переменные эти находяися в файле content
//который я подключил выше
//////////////////////////////////////////
//Заменяет строку поиска на строку замены
//str_replace (это то что (где) заменяют,,,, это то чем заменяют,,, это то что возвращается)
///////////////////////////////////
$overall_output = str_replace ("%TITLE%", $page_title, $template_page);
$overall_output = str_replace ("%DESC%", $page_descr, $overall_output);
$overall_output = str_replace ("%KEYWORDS%", $page_keyws, $overall_output);
$overall_output = str_replace ("%TEMPLATE%", $curr_tmpl, $overall_output);
$overall_output = str_replace ("%MENU%", $menu_output, $overall_output);
$overall_output = str_replace ("%CONTENT%", $content, $overall_output);
echo $overall_output; // выводим
Спустя 1 час, 6 минут, 11 секунд (3.07.2010 - 18:05) KaFe написал(а):
mihai тут надо код дорабатывать,что бы можно было использовать php вставки. И мне кажется не самая лучшая идея вставлять php в шаблон.
Спустя 1 час, 12 минут, 46 секунд (3.07.2010 - 19:18) .:JIexa:. написал(а):
не знаю почему ты не разобрался. Я сам когда-то читал этот урок )) и по нему делал...
Все очень просто. У тебя есть шаблон. В процессе выполнения скрипта берется содержание этого шаблона и заносится в строковую переменную:
затем обычной функцией для обработки строк выполняется замена определенных "подстрок" на другие значения, которые у тебя заранее определены другими переменными:
Например у тебя в переменной $page_title записана строка "Мой сайт".
Так вот смотри.
Создается переменная $overall_output и в нее записывается результат обработки содержимого переменной $template_page функцией str_replace(). Которая, в свою очередь, заменяет подстроку "%TITLE%" на значение нашей переменной $page_title.
Получается, что $overall_output - это наш шаблон, только вместе %TITLE% там теперь будет Мой сайт.
Так же может быть заменена подстрока "%MENU%" на значение переменной, в которую до этого мы определили шаблон меню.
По такому принципу завершается замена. А потом значение переменной $overall_output просто выводится на экран.
Все очень просто. У тебя есть шаблон. В процессе выполнения скрипта берется содержание этого шаблона и заносится в строковую переменную:
$template_page = file_get_contents("templates/" . $curr_tmpl . "/index.php");
затем обычной функцией для обработки строк выполняется замена определенных "подстрок" на другие значения, которые у тебя заранее определены другими переменными:
$overall_output = str_replace ("%TITLE%", $page_title, $template_page);
$overall_output = str_replace ("%DESC%", $page_descr, $overall_output);
$overall_output = str_replace ("%KEYWORDS%", $page_keyws, $overall_output);
$overall_output = str_replace ("%TEMPLATE%", $curr_tmpl, $overall_output);
$overall_output = str_replace ("%MENU%", $menu_output, $overall_output);
$overall_output = str_replace ("%CONTENT%", $content, $overall_output);
Например у тебя в переменной $page_title записана строка "Мой сайт".
Так вот смотри.
Создается переменная $overall_output и в нее записывается результат обработки содержимого переменной $template_page функцией str_replace(). Которая, в свою очередь, заменяет подстроку "%TITLE%" на значение нашей переменной $page_title.
Получается, что $overall_output - это наш шаблон, только вместе %TITLE% там теперь будет Мой сайт.
Так же может быть заменена подстрока "%MENU%" на значение переменной, в которую до этого мы определили шаблон меню.
По такому принципу завершается замена. А потом значение переменной $overall_output просто выводится на экран.
Спустя 9 минут, 13 секунд (3.07.2010 - 19:27) .:JIexa:. написал(а):
не знаю точно, я сам начинающий в этом деле. Но если ты хочешь исполнить скрипт, который у тебя хранится в файле, к примеру script.php - ты можешь в шаблон по тому же принципу вписать %SCRIPT%. Потом в главной странице подключить файл script.php. Допустим, что у тебя в нем какая-то функция function_1:
Результат выполнения теперь у тебя в переменной $result
Дальше берешь перед выводом на экран $overall_output делаешь:
Вот как-то так. Если я не прав - извините, и поправляйте.
include('./script.php');
$result = function_1;
Результат выполнения теперь у тебя в переменной $result
Дальше берешь перед выводом на экран $overall_output делаешь:
$overall_output = str_replace("%SCRIPT%", $result, $overall_output);
echo $overall_output
Вот как-то так. Если я не прав - извините, и поправляйте.
Спустя 18 минут, 49 секунд (3.07.2010 - 19:46) mihai написал(а):
.:JIexa:.
это то я понял с заменой,
спасибо с этим разобрался,
вопрос в другом
у меня там не функция а целый скрипт
комментариев в несколько файлов
вот как его воткнуть
сюда
это то я понял с заменой,
спасибо с этим разобрался,
вопрос в другом
у меня там не функция а целый скрипт
комментариев в несколько файлов
вот как его воткнуть
сюда
include('.guest/guestbook.php');
$result = function_1;
Спустя 25 минут, 27 секунд (3.07.2010 - 20:12) .:JIexa:. написал(а):
эмм... в таком случае я точно подсказать не могу. Вот когда разбирался там с уроками Twin`a .. там была интересная вещь, как буферизация. Я бы попытался использовать ее.
Вот например у тебя index.php и guestbook.php(который является главным файлом твоей системы комментариев).
в индексе ты подключаешь guestbook.php, а в самом guestbook.php используешь ту самую буферизацию. Суть в том, что все, что должно быть выведено - записывается в переменную.
index.php
guestbook.php
а тут я уже не знаю, как у тебя устроен guestbook.php ... поэтому напишу только образно.
Что бы понять принцип смотри любой урок Twin`a, где он использует эту фишку.
Думаю это должно прокатить...)) пробуй. Если не разберешься, то выложи содержимое своего guestbook.php и тогда уже будем пробовать вместе.
Вот например у тебя index.php и guestbook.php(который является главным файлом твоей системы комментариев).
в индексе ты подключаешь guestbook.php, а в самом guestbook.php используешь ту самую буферизацию. Суть в том, что все, что должно быть выведено - записывается в переменную.
index.php
include('./guest/guestbook.php');
/*
* ... подготавливается шаблон к выводу
*/
// тут ты заменяешь %COMMENTS% в шаблоне на содержимое переменной $contents,
//которая у нас будет получена в Guestbook.php
$overall_output = str_replace("%COMMENTS%", $gb_content, $overall_output);
echo $overall_output;
guestbook.php
а тут я уже не знаю, как у тебя устроен guestbook.php ... поэтому напишу только образно.
Что бы понять принцип смотри любой урок Twin`a, где он использует эту фишку.
// что-то типа вот такого
ob_start();
// ...
$content = ob_get_contents();
ob_end_clean();
Думаю это должно прокатить...)) пробуй. Если не разберешься, то выложи содержимое своего guestbook.php и тогда уже будем пробовать вместе.
Спустя 4 минуты, 45 секунд (3.07.2010 - 20:16) KaFe написал(а):
Я думаю буферизация вывода при использовании таких шаблонов будет излишня
Спустя 12 минут, 2 секунды (3.07.2010 - 20:28) .:JIexa:. написал(а):
я ничего не утверждал. Еще раз повторюсь, я ламер в этом деле ))
Написал так, как попробовал бы сам.
KaFeА почему ты так считаешь? я не спорить собрался, а просто узнать, для себя.
по теме->
Тогда только остается узнать, как написан скрипт guestbook.php . И если он организован по такому же принципу, как и этот индекс, то переменную с выводом из guestbook.php можно будет не выводить сразу. А вывести через главный индекс.
Написал так, как попробовал бы сам.
KaFeА почему ты так считаешь? я не спорить собрался, а просто узнать, для себя.
по теме->
Тогда только остается узнать, как написан скрипт guestbook.php . И если он организован по такому же принципу, как и этот индекс, то переменную с выводом из guestbook.php можно будет не выводить сразу. А вывести через главный индекс.
Спустя 38 минут, 34 секунды (3.07.2010 - 21:07) mihai написал(а):
хорошо спасибо,
нет это не то,
я нашёл скриптик как можно проще.
что бы от него плясать,
а тут получется всё перелапачивть надо,
даже до буферизации дошло,
ладно поищем что нибуть ещё,
может кто подскажет материальчики
по созданию сменных тем для сайта
нет это не то,
я нашёл скриптик как можно проще.
что бы от него плясать,
а тут получется всё перелапачивть надо,
даже до буферизации дошло,
ладно поищем что нибуть ещё,
может кто подскажет материальчики
по созданию сменных тем для сайта
Спустя 3 часа, 21 минута, 55 секунд (4.07.2010 - 00:29) mihai написал(а):
нет не могу разобраться
как мне вместо
$gb
в шаблоне прописать путь до скрипта
gb/guest.php
помогите
как мне вместо
$gb
в шаблоне прописать путь до скрипта
gb/guest.php
помогите
$overall_output = str_replace ("%TITLE%", $page_title, $template_page);
$overall_output = str_replace ("%DESC%", $page_descr, $overall_output);
$overall_output = str_replace ("%KEYWORDS%", $page_keyws, $overall_output);
$overall_output = str_replace ("%TEMPLATE%", $curr_tmpl, $overall_output);
$overall_output = str_replace ("%MENU%", $menu_output, $overall_output);
$overall_output = str_replace ("%CONTENT%", $content, $overall_output);
$overall_output = str_replace ("%scpipt%", $gb, $overall_output);
Спустя 38 минут, 40 секунд (4.07.2010 - 01:07) .:JIexa:. написал(а):
какой путь? что тебе это даст?
Смотри... str_replace('11', '22', '33') заменяет только подстроку '11' на подстроку '22' в строке '33'.
Если ты заменишь %script% на путь к скрипту, ничего не произойдет.
Если ты будешь менять на содержимое скрипта, то он похоже, что не исполнится...
ооо, мысля!
А что если попробовать использовать функцию eval() ???
Если она исполняет код , то может быть сработало бы что-то типа:
Попробуй Может получится
Смотри... str_replace('11', '22', '33') заменяет только подстроку '11' на подстроку '22' в строке '33'.
Если ты заменишь %script% на путь к скрипту, ничего не произойдет.
Если ты будешь менять на содержимое скрипта, то он похоже, что не исполнится...
ооо, мысля!
А что если попробовать использовать функцию eval() ???
Если она исполняет код , то может быть сработало бы что-то типа:
$script = file_get_contents('gb/guest.php');
$overall_output = str_replace ("%scpipt%", eval('?>' . $script .'<?php '), $overall_output);
Попробуй Может получится
Спустя 5 часов, 34 минуты, 12 секунд (4.07.2010 - 06:42) KaFe написал(а):
Цитата (.:JIexa:. @ 3.07.2010 - 17:28) |
А почему ты так считаешь? я не спорить собрался, а просто узнать, для себя. |
Ну смотри какая схема, по моему буферизация нужна только в том случае когда роль шаблонных вставок у тебя играет примерно вот такие вещи
<?php echo $content;?>, которые инклюдятся как файл шаблона, а не читается и заменяются
Где переменная $content уже определена скриптом и в нее уже забиты результаты работы этого скрипта, с помощью буферизации. И все.
Может я как то крива объяснил, но это самый простой и оптимизированный шаблонизатор в котором можно употреблять php
Спустя 3 часа, 39 минут, 59 секунд (4.07.2010 - 10:22) mihai написал(а):
.:JIexa:.
да я это пробовал и так и так
и действительно ни чего не получается
поэтому и пришёл сюда
KaFe
ребята может подскажите
другой варинт освоения шаблонов
я так понимаю что вернусь
обратно к простым инклюдам
верх, право, лево, низ
да и хватит
да я это пробовал и так и так
и действительно ни чего не получается
поэтому и пришёл сюда
KaFe
ребята может подскажите
другой варинт освоения шаблонов
я так понимаю что вернусь
обратно к простым инклюдам
верх, право, лево, низ
да и хватит
Спустя 1 день, 11 часов, 10 минут, 16 секунд (5.07.2010 - 21:32) KaFe написал(а):
Цитата (mihai @ 4.07.2010 - 07:22) |
ребята может подскажите другой варинт освоения шаблонов я так понимаю что вернусь обратно к простым инклюдам верх, право, лево, низ да и хватит |
Меня чукча не разбирать ваш заморский изык!!!что вы хотите сказать?
Спустя 6 минут, 9 секунд (5.07.2010 - 21:38) morg4n написал(а):
все проще, чем кажется.
в самом верху страницы пишешь
а в самом gb/guest.php
вместо echo, print , ну вместо вывода информации пиши $content .=
в итоге guest.php будет выдавать тебе все содержание в переменной $content
в конце шаблона вставить до, после похожих строчек
в самом верху страницы пишешь
include('gb/guest.php');
а в самом gb/guest.php
вместо echo, print , ну вместо вывода информации пиши $content .=
в итоге guest.php будет выдавать тебе все содержание в переменной $content
в конце шаблона вставить до, после похожих строчек
$overall_output = str_replace ("%scpipt%", $content), $overall_output);
Спустя 11 часов, 47 минут, 49 секунд (6.07.2010 - 09:26) KaFe написал(а):
Цитата (morg4n @ 5.07.2010 - 18:38) |
все проще, чем кажется. |
Вот, черт. А я думал ни кто до этого не додумается