Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
VLK
195 / 164 / 19
Регистрация: 05.05.2013
Сообщений: 1,197
#1

Концепция взаимодействия шаблона и самой страницы

14.12.2013, 17:42. Просмотров 368. Ответов 2
Метки нет (Все метки)

Подскажите, пишу свою CMS (тестирую и пополняю свои знания), включает она в себя сайт визитку (страницы которые может добавлять только администратор) и блог (где могут регистрироваться пользователи и оставлять комментарии под статьями) изначально я решил поступить так, я пишу шаблон:

tpl.php (часть кода убрана что бы не захломлять)
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
function tpl($source) /* $source это ассоциативный массив в котором хранятся данные страницы */
{
?>
<html>
<head>
<title><?php echo $source['title']; ?></title>
<meta charset="UTF-8" />
 
</head>
 
<body>
 
<div>
 
<div><?php echo $source['h1']; ?></div>
 
<?php echo $source['content']; ?>
 
</div>
 
</body>
</html>
 
<?php
}
?>


Далее допустим я создаю главную страницу сайта - index.php

index.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
/* тут мы запускаем сессию
подключаем некоторые файлы, включая tpl.php */
 
$index = array (
'title' => 'Главная страница',
'h1' => 'Добро пожаловать на главную страницу',
'content' => 'Контент главной страницы'
);
 
tpl($index);
 
?>


страница index.php в данном случае является что то вроде исключения, т.к. мы в ручную в нем создаем массив с данными, а вообще при создании динамических страниц (через метод GET) мы обращаемся к БД, из БД получаем ответ, переводим его в ассоциативный массив и этот массив и является уже готовым параметром для функции tpl.

Первый вопрос, нормальны ли такой подход? или в нем в корне что то не верно (нельзя так делать и вообще)?

Далее, у меня возникла проблема когда я делал страницу регистрации, т.к. в $source['content'] у меня не получается запихнуть форму для для регистрации (которая содержит в том числе php код), выход я нашел, может не высоко профессионально, я добавил к tpl еще один параметр, который является ссылкой на подключаемый файл:

Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
function tpl($source, $sc = 0;) { 
...
if (  $sc = 0 ) { echo $source['content']; }
else { require_once ("ссылка на файл, например с формой регистрации") ; }
...
}


Но он мне (этот вариант) не совсем нравится, глаза режет, кто что может подсказать, посоветовать.

Добавлено через 5 минут
PS я видел метод там где шаблон страницы разбит на несколько частей, верхняя часть (блок head), далее средняя часть, нижняя, часть и т.д. но мне такой метод не совсем нравится, т.к. сразу с целой страницей проще работать, чем с кусками и потом выискивать в каком именно косяк.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 17:42
Ответы с готовыми решениями:

Парсинг страницы для поиска самой ранней успешной сдачи задания
Здравствуйте, помогите пожалуйста. Надо пропарсить страницу, а именно вот эту...

трехуровневая схема разделения шаблона и кода страницы
Подскажите пожалуйста литературу по данной тематике? примеры ,

трехуровневая схема разделения шаблона и кода страницы
подскажите пожалуйста инф толковую по данной теме... как я понял, нужно...

Как передать переменную с шаблона страницы в php файл плагина wordpress
Здравствуйте. Начну, пожалуй, с самого начала. Я хочу сделать интернет магазин...

Закрытие страницы из самой страницы
подскажите, как можно из самой страницы выполнить ее закрытие ну те. у меня на...

2
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16750 / 6641 / 862
Регистрация: 12.06.2012
Сообщений: 19,887
Завершенные тесты: 1
15.12.2013, 00:45 #2
чаще всего используют инклуды (если на чистом пыхе). А вообще, надо было поискать PHP+TPL
1
VLK
195 / 164 / 19
Регистрация: 05.05.2013
Сообщений: 1,197
17.12.2013, 20:43  [ТС] #3
KOPOJI, супер, я решил все проблемы (я надеюсь).

файлы .tpl я конечно не освоил (ну и фиг с ними, не думаю что с ними больше производительности)

я сделал так, основной шаблон вызывается функцией, функции я передаю 4 параметра, первый это сам контент в виде массива, как в первом сообщении, далее идут еще 3 не обязательных параметра, если они не передаются то в качестве контента выводится контент из переданного массива ( $source['content'] ), если же я хочу вызвать функцию или подключить файл мне необходимо передать оставшиеся 3 параметра

из этих 3-х параметров первый, это тип того, что я хочу вызвать 0 это просто вывести $source['content'], 1 если я хочу вызвать функции, это делается по методике описанной тут - http://www.php.net/manual/ru/functions.variable-functions.php и 2 это если я хочу подключить файл

далее, второй параметр это имя функции или ссылка на файл который я хочу подключить

третий параметр, это если я хочу вызвать функцию, при этом еще в добавок передать ей какие то аргументы, выглядит это примерно так:

Прототип функции:
PHP
1
function tpl ($source, $type = 0, $sc = '', $arg = 0) { ... }
Реализация вывода контента:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
if ($type == 1 && $sc != '') {
$f = $sc;
 
if ($arg == 0) { $f(); }
 
else { $f($arg); }
 
}
 
else if ($type == 2 && $sc != '') { require_once ($sc); }
 
else { echo $source['content']; }
Примерно как то так, еще не тестировал но надеюсь все будет работать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2013, 20:43

Вывод стандартного контента, а уже потом самой страницы
Всем привет. Можно ли как-нибудь так настроить IIS чтобы он при любом...

Создание страницы из шаблона
Есть файл settings.php, в котором все функции сайта, включая нужную для...

Изменение шаблона главной страницы
Пытаюсь изменить шаблон страницы, но что-то идет у меня не так и я не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru