[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: шаблон
mihai
Господа программисты.

Сталкнулся с шаблоном.
Вроде разобрался но
как вставить в шаблон свой скрипт на знаю,
подскажите как с этим шаблоном работать,
как туда свои скрипты инклюдить.



<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("путь"); ?>
нельзя ?

в каком формате сохранен шаблон ?

Спустя 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 в шаблон. dry.gif

Спустя 1 час, 12 минут, 46 секунд (3.07.2010 - 19:18) .:JIexa:. написал(а):
не знаю почему ты не разобрался. Я сам когда-то читал этот урок )) и по нему делал...
Все очень просто. У тебя есть шаблон. В процессе выполнения скрипта берется содержание этого шаблона и заносится в строковую переменную:
$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:
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
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:. написал(а):
я ничего не утверждал. Еще раз повторюсь, я ламер в этом деле )) rolleyes.gif
Написал так, как попробовал бы сам.
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

помогите
mad.gif mad.gif mad.gif


$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() ???
Если она исполняет код , то может быть сработало бы что-то типа:

$script = file_get_contents('gb/guest.php');

$overall_output = str_replace ("%scpipt%", eval('?>' . $script .'<?php '), $overall_output);

Попробуй wink.gif Может получится

Спустя 5 часов, 34 минуты, 12 секунд (4.07.2010 - 06:42) KaFe написал(а):
Цитата (.:JIexa:. @ 3.07.2010 - 17:28)
А почему ты так считаешь? я не спорить собрался, а просто узнать, для себя.

Ну смотри какая схема, по моему буферизация нужна только в том случае когда роль шаблонных вставок у тебя играет примерно вот такие вещи

<?php echo $content;?> 
, которые инклюдятся как файл шаблона, а не читается и заменяются

Где переменная $content уже определена скриптом и в нее уже забиты результаты работы этого скрипта, с помощью буферизации. И все.

Может я как то крива объяснил, но это самый простой и оптимизированный шаблонизатор в котором можно употреблять php smile.gif

Спустя 3 часа, 39 минут, 59 секунд (4.07.2010 - 10:22) mihai написал(а):
.:JIexa:.
да я это пробовал и так и так
и действительно ни чего не получается
поэтому и пришёл сюда


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 написал(а):
все проще, чем кажется.

в самом верху страницы пишешь
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)
все проще, чем кажется.


Вот, черт. А я думал ни кто до этого не додумается laugh.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.