Intereting Posts
Что такое демон? Их практическое использование? Использование php? Tricky foreach loop … как? PHP: ошибка настройки часового пояса системы Обнаружение мобильного или настольного браузера и перенаправление на соответствующую веб-страницу Использование Twig для генерации JSON Увеличение и уменьшение значения строки на 1 в MySQL Обработка глобальных ошибок Javascript через AJAX / PHP: ограничить журналы моим собственным скриптом jQuery / PHP mail отправляет простой способ? cakephp обновить больше уникальных полей Преобразование html в word / excel / powerPoint с помощью PHP Время жизни объекта PHP Использование функции password_hash и password_verify PHP 5.5 Как использовать cURL для извлечения определенных данных с веб-сайта, а затем сохранить его в моей базе данных, используя php вызов неопределенного метода DateTime :: add method в php предотвратить использование объекта PHP из автоматического литья

Лучшая практика для 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> s в моем файле, так что делать, если я хочу иметь описание на каждой странице? У меня раньше были настройки файлов: 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" /> 

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

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

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

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

Понимает, что вы ищете шаблоны.

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

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

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

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

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

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

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

Тем не менее, шаблон, о котором я говорю, представляет собой типичный PHP-скрипт, в основном состоит из чистого 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> 

Общепринятый подход на небольших сайтах состоит в следующем:

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

header.php

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

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

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

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

В этой модели многие веб-сайты имеют только один «index.php» и фактически генерируют все страницы (часто из базы данных). Но если у вас есть только несколько страниц, то каждая из них – это собственная php-страница с общими функциями заголовка и нижнего колонтитула, это прекрасный способ пойти, ИМХО.