Подтвердить что ты не робот

Лучшая практика для HTML-заголовка в PHP

В настоящее время у меня очень простая страница с более сложными бэкэнд. Я всегда делал это так же, но я чувствую, что это неправильно. Но я не придумал много полезного для меня.

У меня есть мои index.php, header.php и function.php. index.php включает header.php, который вызывает функцию из функции .php. Главное, что я не уверен в том, как сделать сайт достаточно динамичным, чтобы он мог легко редактировать страницы, но также легко редактироваться, большая часть его нуждается в редактировании. index.php

<?php
session_start();
include_once 'header.php';
?>
// Page content
</body>
</html>

header.php

<!DOCTYPE HTML>
<html lan="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<?php
require_once 'functions.php';
getBar(); // Top of page bar with menu/login etc
?>

Я не думаю, что функция functions.php добавила бы столько. Я знаю, что не должен использовать 2 <head> в моем файле, так что делать, если я хочу иметь описание на каждой странице? У меня ранее были настройки файлов, например: index.php

<?php
session_start();
include_once 'header.php';
?>
// extra page specific stuff here, such as description or JS
</head>
<body>
<?php
require_once 'functions.php';
getBar(); // Top of page bar with menu/login etc
?>
// Page content here
</body>
</html>

header.php

<!DOCTYPE HTML>
<html lan="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />

Однако, я думаю, что файлы "фрагментированы". Я не знаю, есть ли общепринятый способ сделать это, но если есть, я бы хотел его услышать!

4b9b3361

Ответ 1

Я думаю, что большинство опытных кодеров скажут вам как можно меньше смешать ваш код и ваш HTML. Это означает выполнение всех ваших вычислений, а затем просто передачу любых переменных, необходимых для представления в представление.

Они также расскажут вам о шаблоне проектирования MVC. В PHP это то, где классы контроллера берут первоначальный запрос, выполняют правильные операции над правильными бизнес-классами модели, а затем передают необходимые данные классу View, который бы отображал ваш HTML.

MVC может перейти от очень простых 3-х классов к чрезвычайно сложным "Framework", таким как Zend Framework. Если вы создадите свой собственный, загляните в автозагрузку класса PHP, так как это упростит вашу жизнь.

Ответ 2

Определяет, что вы ищете шаблоны.

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

Позвольте мне предложить вам следующую настройку:
Сайт содержит

  • главный файл конфигурации (предположим, что-то вроде ваших функций .php)
  • шаблон основного сайта
  • фактические страницы (или разделы) - реальные скрипты php различного назначения. Каждый из них состоит из двух частей:
    • script сам, выполняя все интеллектуальный анализ и подготовку данных, инициализируя все переменные
    • шаблон, выполняющий только вывод данных.

Основная идея состоит в том, чтобы сделать PHP script не выводить вывод до тех пор, пока все данные не будут готовы - таким образом, вы получите мгновенное решение проблемы с названием страницы. Более того (подумайте об этом):

  • вы сможете отправлять любые HTTP-заголовки, файлы cookie, запускать сеанс и т.д.
  • вы также сможете изменить весь внешний вид вывода "на лету": вместо XML XML или JSON, например
  • вы сможете использовать одну и ту же базу кода для разных сайтов, изменяя только шаблоны

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

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

Шаблон, о котором я говорю, типичный PHP script, однако, состоит в основном из чистого HTML, причем некоторый PHP-код предназначен только для отображения динамически генерируемых данных.

Здесь вы найдете примерный, но рабочий пример

страница:

<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
// setting title for using in the main template
$pagetitle = "Links to friend sites";
//etc
//set page template filename
$tpl = "links.tpl.php";
//and then finally call a template:
include "main.tpl.php";
?>

где main.tpl.php - ваш основной шаблон сайта, включая общие части, такие как верхний колонтитул, нижний колонтитул, меню и т.д.:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<? include $tpl ?>
</div>
</body>
</html>

и links.tpl.php - это фактический шаблон страницы:

<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>

Ответ 3

Общепринятый подход на небольших сайтах должен иметь что-то вроде этого:

<?php $title = 'Title'; ?>
<?php require_once('header.php'); ?>

header.php

<title><?php echo $title; ?> - MyWebsite</title>

Я думаю, что это должно сработать для вас, сохраняя при этом принцип K.I.S.S.

Ответ 4

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

Я думаю, что одна вещь, которую вы обнаружите, является "общепринятой", заключается в том, чтобы использовать PHP все больше и больше в качестве программы, и меньше, чтобы отказаться от html, когда вам нужен только динамический контент. Другими словами, писать все как программу, которая выводит html, а не как сочетание html и php (открытие и закрытие тегов PHP).

В этой модели многие веб-сайты имеют только один "index.php" и фактически генерируют все страницы (часто из базы данных). Но если у вас есть только несколько страниц, то каждая из них - это собственная php-страница с разделяемыми функциями верхнего и нижнего колонтитула, это прекрасный способ, IMHO.