Сайт на includ'ах

12 3
GA
На сайте с 16.06.2013
Offline
61
1510

Простой сайт, 1-2 страницы, сначала делал на чистом html, но потом решил использовать пхп инклуды, чтобы упростить жизнь при редактировании чего либо.

Всё как бы норм, кроме одного.

Структура такая:

<?php define( '_JEXEC', 1 );?>

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<? include ($_SERVER["DOCUMENT_ROOT"]."/scripts.php"); ?>
</head>

<body>
TITLE страницы
КОНТЕНТ СТРАНИЦЫ

тут ещё пару инклудов
</body>
</html>

<?php define( '_JEXEC', 1 );?> - это использую, чтобы всякие умники не пытались напрямую открыть отдельные инклуды.

<? include ($_SERVER["DOCUMENT_ROOT"]."/scripts.php"); ?> - так вызываю сами инклуды.

Что нужно:

ввести переменную, которую можно задать в самом начале, например

title = название этой страницы

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

MI
На сайте с 16.07.2008
Offline
74
#1

<?php


$title = 'Мой сайт';

function render($buffer)
{
global $title;
// заменяем текст {&title} на содержимое $title, в тексте между ob_start("render"); и ob_end_flush(); который был напечатан
return (str_replace("{&title}", $title, $buffer));
}

ob_start("render");

?>
<html>
<head>
<title>{&title}</title>
</head>
<body>
<p>Hello Word!</p>
<?php
// Изменяет $title
$title .= ' :: Главная страница';
?>
</body>
</html>
<?php

ob_end_flush(); // тут запускаем render() уже после изменения $title
N
На сайте с 06.05.2007
Offline
419
#2

metadon.info, тогда это уж не "простейший сайт на инклудах", а какой-то ужас непрограммиста.

Green arrow:
Видать я каждый раз нарушаю синтаксис и когда пытаюсь что-то подобное сделать - белый экран. Подскажите, как правильно?

Просто узнать где именно нарушен синтаксис. Потренироваться в любом месте где эти синтаксические ошибки выводятся. А как именно нарушаете мы не видим.

Кнопка вызова админа ()
Jaf4
На сайте с 03.08.2009
Offline
804
#3
netwind:
тогда это уж не "простейший сайт на инклудах", а какой-то ужас непрограммиста.

Вот! Вот как называется это, спасибо! Я ведь знал, засранец, что так делать некрасиво, и все равно делал! А есть более изящные способы? Но без CMS.. тошнит уже.

New! NVMe VPS от SmartApe.ru (https://goo.gl/eoYYkS)
N
На сайте с 06.05.2007
Offline
419
#4

Jaf4, ну тогда еще SSI посмотрите. Революционная высокопроизводительная технология ! ... для 90ых годов.

(на самом деле нет)

MI
На сайте с 16.07.2008
Offline
74
#5
netwind:
metadon.info, тогда это уж не "простейший сайт на инклудах", а какой-то ужас непрограммиста.

Как ещё продемонстрировать возможность ob_start()?

Мало кто понимает пример с фруктами из документации.

Это hello word для демонстрация как собрать вывод в переменную.

Покажите менее ужасный способ.

N
На сайте с 06.05.2007
Offline
419
#6

metadon.info, hello world в php выглядит так <?=$title ?> - проще некуда.

(да, я знаю про short_open_tag)

TF-Studio
На сайте с 17.08.2010
Offline
334
#7

мне кажется гораздо проще массив передать в шаблон

1 обработчик (контролер). все чуть проще

<?php echo $template ['title']; ?>

разбить на шапку, меню, сайдбар, подвал

зачем тут ob_ ?

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
u3Bepr
На сайте с 03.03.2011
Offline
60
#8

вот есть статейка по вашему вопросу, смотрите там в конце инфу с подключением файла-конфига с данными

MI
На сайте с 16.07.2008
Offline
74
#9
TF-Studio:
зачем тут ob_ ?

Считаю что с ob_start очень просто будет создавать страницы и сильно не заморачиваться что внутри них.

Вот разбили на шапку, меню, сайдбар, подвал.

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

Значит в сайдбаре мы должны самостоятельно ловить весь вывод и возвращать его уже в переменную. Думаю проще словить весь вывод через ob_start().

S
На сайте с 23.05.2004
Offline
315
#10

А в чем проблема сначала объявить контент и нужные переменные, а потом уже инклудить свои куски страницы, где выше объявленное и используется.

Хотя все таки лучше посмотреть в сторону темплейтов, ведь гораздо удобнее.

Это просто подпись.
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий