Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/51: Рейтинг темы: голосов - 51, средняя оценка - 4.75
14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227

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

05.08.2012, 07:13. Показов 10547. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru