14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227

Простейший движок сайта на PHP

05.08.2012, 07:13. Показов 10666. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!
Понадобилось написать движок для сайта на PHP.
Сайт состоит из ~10 страниц с одинаковыми header и footer.

Получился примерно вот такой kernel.php:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title><?php echo $title; ?></title>
        <?php echo $header; ?>
    </head>
    <body id="main">
        <div id="content">
            <div id="header">бла-бла</div>
            <?php echo $content; ?>
        </div>
        <div id="footer">бла-бла</div>
    </body>
</html>
Новые странички добавляются примерно так:

бла-бла.php:
PHP
1
2
3
4
5
6
7
<?php
    $header = '<link type="text/css" rel="stylesheet" media="all" href="бла-бла" />';
    $content = 'бла-бла';
    $title = 'бла-бла';
    
    include_once './kernel.php';
?>
Но content может содержать php-код, например:

PHP
1
<td><?php echo $abc; ?></td>
И как тогда это все дело засунуть в переменную $content?

Такой способ не катит:
PHP
1
$content .= '<td>'.$abc.'</td>';
Ибо контент может быть очень большим и разбивать его на html и php не хочу, т.к. весь контент потеряет наглядный и редактируемый вид.

Выносить header и footer в отдельные файлы не хочу, мне больше нравится мое решение с шаблоном сайта kernel.php

Добавлено через 1 час 7 минут
актуально
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.08.2012, 07:13
Ответы с готовыми решениями:

Простейший PHP чат
Привет, киберофорумчане! Помогите создать самый самый простой чат на PHP. У меня уже есть форма для чата и подключение к базе...

Самописный движок для сайта визитки
Добрый день На днях написал первую версию движка специально под сайт визитки и... очень интересует ваше мнению по поводу валидности кода...

Как написать движок для сайта?
Я выучил хорошо PHP, MySQL, HTML, CSS. Шас взялся за написанием нескольких сайтов. Написать тупую страницу на html без проблем смогу. Я...

33
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
06.08.2012, 16:43
Студворк — интернет-сервис помощи студентам
PHP
1
Что инклудить в шаблон main.php на место уникального контента? Саму страницу (например, index.php)? Тогда, что должно быть в index.php?
index.phtml - это будет шаблон основной страницы. Не основной шаблон сайта, а основной шаблон страницы.

ДАННЫЕ же для index.phtml должен генерировать скрипт index.php:

index.php:
PHP
1
2
3
4
5
6
<?
$data = array(.....);
$content_path = '../path/to/you/templates/';
$content_path .= 'index.phtml';
 
include('main.phtml');
в main.phtml:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
       <?php include_once 'title.php'; ?>
       <?php include_once 'header.php'; ?>
    </head>
    <body id="main">
        <div id="content">
            <div id="header">
                 бла-бла
                 <?php include_once 'menu.php'; ?>
                 бла-бла
            </div>
            <?php include_once $content_path; ?>
        </div>
        <div id="footer">бла-бла</div>
    </body>
</html>
как один из вариантов
0
14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227
06.08.2012, 16:58  [ТС]
Василий Макогон, короче говоря, для каждой страницы 2 файла: шаблон этой страницы (тобишь контент весь) и скрипт (в котором титл, хеадер и прочее). Открываем страницу набирая адрес этого скрипта, скрипт инклудит шаблон сайта, который в свою очередь инклудит шаблон страницы, титлы, хеадеры и прочее. Так?

Добавлено через 7 минут
Все равно беда. Ведь в контент нужно выводить не статичный html. Например, сейчас в файле drivers.php перед html-кодом страницы есть php-код, который считывает инфу из бд и вносит изменения в контенте и хеадере. html-conteте выношу в шаблон страницы, а что делать с php?
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
06.08.2012, 17:25
короче говоря, для каждой страницы 2 файла: шаблон этой страницы (тобишь контент весь) и скрипт (в котором титл, хеадер и прочее). Открываем страницу набирая адрес этого скрипта, скрипт инклудит шаблон сайта, который в свою очередь инклудит шаблон страницы, титлы, хеадеры и прочее. Так?
так.


Например, сейчас в файле drivers.php перед html-кодом страницы есть php-код, который считывает инфу из бд и вносит изменения в контенте и хеадере. html-conteте выношу в шаблон страницы, а что делать с php?
http://www.phpinfo.su/articles... v_php.html - ТАМ НАПИСАНО ВСЕ по твоей теме

Скрипт - генерирует данные
Шаблон - их отображает
В чем твоя проблема - в index.php сгенерировать данные, засунуть их в переменные и массивы, подключить общий шаблон, потом общий шаблон подключит шаблон подчиненный (content) и в подчиненном шаблоне вывести то, что сгенерировал index.php?
1
14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227
07.08.2012, 02:31  [ТС]
Василий Макогон, спасибо, попробую разобраться.

Добавлено через 9 часов 1 минуту
Разобрался, все отлично, все получилось, всем спасибо!

Мой пример:

tpl/main.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title><?=$title?></title>
        <? foreach($head as $head): ?>
            <?=$head?>
        <? endforeach ?>
    </head>
    <body id="main">
        <div id="content">
            <div id="header">
                <div class="logo"></div>
                <? include 'tpl/menu.php'; ?>
            </div>
            <? include $content; ?>
        </div>
        <div id="footer"></div>
    </body>
</html>
tpl/menu.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    $menu = array
    (
        'Услуги' => 'services',
        'Тарифы' => 'rates',
        'Вакансии' => 'job',
        'Заказы' => 'orders'
    );
?>
<ul class="menu">
<? foreach($menu as $menu['name'] => $menu['link']): ?>
    <li<? if($menu['link'] == $id) echo ' class="current"';?>><span><a href="<?=$menu['link']?>.php"><?=$menu['name']?></a></span></li>
<? endforeach ?>
</ul>
job.php:
PHP
1
2
3
4
5
6
7
8
9
10
<?
    $title = 'Вакансии';
    $id = 'job';
    $head = array(
        '<link type="text/css" rel="stylesheet" media="all" href="./css/job.css" />',
        '<link type="text/css" rel="stylesheet" media="all" href="./css/job2.css" />'
    );
    $content = 'tpl/tpl_job.php';
    include 'tpl/main.php';
?>
tpl/tpl_job.php:
PHP
1
2
<h2>Вакансии</h2>
<p>Работа у нас в компании</p>
Открываем job.php, получаем такую страничку:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Вакансии</title>
        <link type="text/css" rel="stylesheet" media="all" href="./css/job.css" />
        <link type="text/css" rel="stylesheet" media="all" href="./css/job2.css" />
    </head>
    <body id="main">
        <div id="content">
            <div id="header">
                <div class="logo"></div>
                <li><span><a href="services.php">Услуги</a></span></li>
                <li><span><a href="rates.php">Тарифы</a></span></li>
                <li class="current"><span><a href="job.php">Вакансии</a></span></li>
                <li><span><a href="orders.php">Заказы</a></span></li>
            </div>
            <h2>Вакансии</h2>
            <p>Работа у нас в компании</p>
        </div>
        <div id="footer"></div>
    </body>
</html>
1
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
07.08.2012, 15:15
молодец.

Добавлено через 4 часа 40 минут
что хотелось бы добавить - в больших проектах лучше не использовать общий шаблон (tpl/main.php)
почему - напишу скоро статью для одного сайта, дам почитать
1
10.08.2012, 00:05

Не по теме:

Цитата Сообщение от Василий Макогон Посмотреть сообщение
Добавлено через 4 часа 40 минут
что хотелось бы добавить - в больших проектах лучше не использовать общий шаблон (tpl/main.php)
почему - напишу скоро статью для одного сайта, дам почитать
мне тоже тогда скинь, когда напишешь)

0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
10.08.2012, 12:22
Цитата Сообщение от Unick Посмотреть сообщение

Не по теме:


мне тоже тогда скинь, когда напишешь)

http://www.phpinfo.su/articles... sajta.html
1
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
10.08.2012, 16:57
читал статью. Там нельзя комментировать посему прокомментирую тут.
Один шаблон очень удобно. А еще лучше создать встраиваемые шаблоны. То есть фундамент страницы это шапка и подвал. более высокий уровень шаблонов это шаблоны страниц под разделяемые на типы. (новости, каталог, Комменты) и третий уровень это специальные шаблоны которые не вмещаются в существующие рамки. (Ну так на всякий случай вдруг понадобится страница где нет футера)
1
14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227
10.08.2012, 17:08  [ТС]
basili4, +
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
10.08.2012, 17:58
Цитата Сообщение от basili4 Посмотреть сообщение
читал статью. Там нельзя комментировать посему прокомментирую тут.
Один шаблон очень удобно. А еще лучше создать встраиваемые шаблоны. То есть фундамент страницы это шапка и подвал. более высокий уровень шаблонов это шаблоны страниц под разделяемые на типы. (новости, каталог, Комменты) и третий уровень это специальные шаблоны которые не вмещаются в существующие рамки. (Ну так на всякий случай вдруг понадобится страница где нет футера)
давай на примерах - что есть встраиваемые шаблоны и шаблоны разделяемые на типы?
0
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
10.08.2012, 18:23
ок. Подробной опишу что я имею ввиду. 1. Самый низкий уровень это макет страницы. По сути это 3 области шапка, подвал и область для вывода контента. Этот шаблон буду называть макет. В него подключаются Js скрипты и css.
2. Уровень это страницы так их и буду называть страницы. Они бывают разные по назначению. Страница новостей, страница с фотками, главная страница.

Их верстка значительно отличается друг от друг. Но эти страницы будут встраиваться в макет.

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

и наконец 3 вид шаблонов. По сути это те же самые страницы т.е. 2 тип но с переопределенным макетом. Это могут быть служебные страницы типа . 404, страницы пере адресации на другие ресурсы.
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
10.08.2012, 18:42
я понял. проблема в том, что описанный тобой макет страницы - это
HTML5
1
2
3
<html><head></head><body>
<div id="main"></div>
</body></html>
по сути - бесполезная болванка. кто сказал, что #main всегда будет на страницах иметь одинаковые стили, верстку и вид? именно от этой схемы я и пытаюсь уйти, т.к. всё, что идет в DOM-e глубже #main может меняться. какой тогда смысл в этом общем шаблоне? head как я уже писал в статье должен быть разный у каждой логической страницы, принадлежащей конкретному обработчику.
0
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
10.08.2012, 18:47
Василий Макогон, А Css на кой ? ну разгуливай представление файлами стилей. А кроме #main могут быть другие статические блоки.
0
не Администратор ^_^
 Аватар для Unick
988 / 223 / 23
Регистрация: 03.05.2009
Сообщений: 1,493
Записей в блоге: 1
10.08.2012, 23:12
basili4, я понял что ты имеешь в виду, я тебя от части поддерживаю
Василий Макогон, посмотрите как устроены шаблоны в WP или DLE. Когда мне приходилось верстать под вордперсс и создавать свои темы, я понял что у них очень удобная конструкция для создания шаблона.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.08.2012, 23:12
Помогаю со студенческими работами здесь

Движок для партнерки на php
Здравствуйте! Нужен движок для своей партнерской программы (должна быть реферальная система, панель вебмастера и рекламодателя, панель...

Где можно скачать простейший скрипт чата в одном файле на PHP?
Где можно скачать простейший скрипт чата в одном файле на PHP?

Простейший вывод категорий сайта через GET
Привет, хочу чтобы при переходе по ссылке категории я получал на страничке сообщение с именем выбранной категории. я новичек , поэтому...

Простейший торрент-трекер на php
решил написать простейший торрент трекер себе на сайт чтобы вся инфа хранилась не на обменниках а передовалась спомощью клиента бит торрент...

Движок сайта
Всем привет. Получил хостинг, домен. Осталось сделать движок сайта. Сайт представляет некую команду, называйте как хотите, которая...


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

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

Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru