Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 16.02.2013
Сообщений: 41

Страничный шаблонизатор. Для всех страниц выводится одно и то же

20.01.2014, 12:57. Показов 1218. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, мастера 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
 
if(!defined('BLOG')) die('some error message!');
define('MAIN', file_get_contents($_SERVER['DOCUMENT_ROOT'].'/tmp/main.tpl'));
 
class Template {
    private $main;
    public function index() { $this->main = MAIN; }
    private $numb = 0;
    private $pagesList = '';
    private $defaultPage = '';
    private $pages = '';
    public function add_page_default($title,$page) {    
        $contents['p_title'] = $title;
        $contents['content'] = $page;
        $this->main = str_replace('{p_title}',$contents['p_title'],$this->main);
        $this->main = str_replace('{content}',$contents['content'],$this->main);
        $this->defaultPage = $contents['p_title'].'~~~'.$contents['content'];
    }
    public function add_page($name, $title, $page) {
        $contents['p_title'] = $title;
        $contents['content'] = file_get_contents(ROOT.'tmp/'.$page.'.tpl');
        $this->main = str_replace('{p_title}',$contents['p_title'],$this->main);
        $this->main = str_replace('{content}',$contents['content'],$this->main);
        $this->numb += 1;
        $sep = ($this->numb != 1)?'|||':'';
        $this->pages .= $sep.$name.'~~~'.$contents['p_title'].'~~~'.$contents['content'];
    }
    public function constructPages() {
        if($this->defaultPage == '') {
            $this->main('Error! The default page isn\'t created!', true);
        } elseif($this->pages == '') {
            $this->main('Error! None of the pages isn\'t created!', true);
        } else {
            $do = isset($_GET['do'])?$_GET['do']:'';
            if($this->defaultPage != '') {
                if($do == '') {
                    $array = explode('~~~', $this->defaultPage);
                    $contents['p_title'] = $array[0];
                    $contents['content'] = $array[1];
                }
            }
            $pages = explode('|||', $this->pages);
            foreach($pages as $array) {
                $array = explode('~~~', $array);
                $this->pagesList .= '~~~'.$array[0];
                if($do == $array[0]) {
                    $contents['p_title'] = $array[1];
                    $contents['content'] = $array[2];
                }
            }
            $this->pagesList = explode('~~~', $this->pagesList);
            if(!in_array($do, $this->pagesList)) {
                $contents['p_title'] = 'Ошибка!';
                $contents['content'] = 'Такой страницы не существует!';
            }
        }
    }
    public function tpl_load($str,$replace) {
        $file = file_get_contents(ROOT.'tmp/'.$replace.'.tpl');
        $this->main = str_replace($str,$file,$this->main);
    }   
    public function re($str,$replace) {
        $this->main = str_replace($str,$replace,$this->main);
    }
    public function load() {
        echo $this->main;
    }
}
 
?>
А index:
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
<?php
 
error_reporting(E_ALL);
 
define('ROOT', $_SERVER['DOCUMENT_ROOT'].'/');
define('BLOG', true);
 
require(ROOT.'engine/mysql.php');
require(ROOT.'engine/parameters.php');
require(ROOT.'engine/templater.php');
$tmp = new Template();
$tmp->index('');
$tmp->add_page_default('Главная','Новости');
$tmp->add_page('port', 'Портфолио', 'portfolio');
$tmp->add_page('resp', 'Отзывы', 'resp');
$tmp->constructPages();
$tmp->re('{theme}','/tmp');
$tmp->re('{title}',$config['title']);
$tmp->tpl_load('{sidebar_left}','sidebar_l');
$tmp->tpl_load('{sidebar_right}','sidebar_r');
$tmp->tpl_load('{login}','login');
$tmp->load();
 
?>
и еще конфиг:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$contents = array (
    'p_title' => '',
    'content' => '',
);
 
$config = array (
    'title' => 'Блог Warrior(a)',
    'description' => 'Блог Вебмастера и Ютубера Warrior(a) или же gogaigor. Учитесь создавать сайты, дизайны и читайте мои последние новости.',
    'keywords' => 'warrior, gogaigor, воин, воинственный, создать сайт, уроки создания сайта, программирование, как создать дизайн, ютуб, блог война',
);
 
?>
как видите в индексе создал 2 страницы, вообщем проблема в том что у меня на всех страницах p_title = Главная, а $contents['content'] = Новости, не выводит он для каждой страницы отдельную информацию, уже мозг сломал почему так. Может какая-то глупая ошибка, посмотрите пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2014, 12:57
Ответы с готовыми решениями:

одно меню для всех страниц
Как сделать чтобы меню(ссылки) в блоке div само менялось на всех дочерних страницах если я его меняю на главной, чтобы не делать это на...

В книге n страниц. Найдите количество цифр, необходимое для нумерации всех страниц такой книги
Напишите пожалуйста программу по данной задаче В книге n страниц. Найдите количество цифр, необходимое для нумерации всех страниц...

Хранить стили всех страниц в одной css для всех подключаемых файлов через include
Добрый день. Создаю простенький сайт, так скажем.. новостной. У меня есть верхняя шапка, левое меню, и справа контент. Именно справа...

6
2 / 2 / 0
Регистрация: 23.09.2013
Сообщений: 10
22.01.2014, 23:59
Вначале перепиши код на ооп, а не просто "процедурка в классе"
1
1 / 1 / 0
Регистрация: 16.02.2013
Сообщений: 41
23.01.2014, 06:37  [ТС]
Цитата Сообщение от Frostiks25 Посмотреть сообщение
Вначале перепиши код на ооп, а не просто "процедурка в классе"
Уже переписал, уже все исправил, но все равно, спасибо!
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
23.01.2014, 15:19
уроки создания сайта, программирование
сильно. не рано ещё уроки по программированию создавать?


это не шаблонизатор, а хрень бесполезная и никому не нужная.

http://www.phpinfo.su/articles... v_php.html
http://www.phpinfo.su/articles... ast_2.html
http://phpfaq.ru/tpl
0
1 / 1 / 0
Регистрация: 16.02.2013
Сообщений: 41
23.01.2014, 15:35  [ТС]
Цитата Сообщение от Василий Макогон Посмотреть сообщение
сильно. не рано ещё уроки по программированию создавать?


это не шаблонизатор, а хрень бесполезная и никому не нужная.

http://www.phpinfo.su/articles... v_php.html
http://www.phpinfo.su/articles... ast_2.html
http://phpfaq.ru/tpl
Чем мне заниматься и кого я буду учить это мое дело и никак не касается тебя, ты сейчас не по теме сообщение оставил, а насчет бесполезности, я уже улучшил его и добавил много функции, а полезен он лишь для меня, а не для пользователя сайта, он ему в хрен не срался. Придержи свой язычок.
1
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
23.01.2014, 15:42
Цитата Сообщение от gogaigor Посмотреть сообщение
Чем мне заниматься и кого я буду учить это мое дело и никак не касается тебя
я промолчу )

Цитата Сообщение от gogaigor Посмотреть сообщение
ты сейчас не по теме сообщение оставил
полностью по теме.

вместо того, что бы принять во внимание мое замечание, ты стал залупаться. хотя твое решение в первую очередь сыграет против тебя.
0
23.01.2014, 17:23
 Комментарий модератора 
Личные разборки осуществляйте за пределами форума.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.01.2014, 17:23
Помогаю со студенческими работами здесь

Как сделать для главной один header а для всех остальных страниц другой
Здравствуйте. Хочу чтоб на главной странице в header было изображение, но на всех остальных его небыло. Я изменил header.php и это...

Одно соединение с БД для всех классов
Приветствую участников форума! Вообщем сейчас в коде присутствует примерно такой говнокод: class Database { function...

Одно MenuStrip для всех форм
Здравствуйте. Подскажите пожалуйста, у меня есть Form1, на которой я создал MenuStrip и есть Form2. Как мне сделать, чтобы это MenuStrip...

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

Общий обработчик для всех страниц
Добрый день. Еесть вот такой участок кода protected override void OnPreInit(EventArgs e) { ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru