Я хочу создавать сайты на php, в которых страницы были бы разделены на небольшие части, каждая из которых хранилась бы отдельно, чтобы её можно было легко изменить. Некоторые страницы на сайте состоят из одного шаблона, то есть, повторяют некоторые части друг друга. Пусть у нас будет три части страницы - хэдер, контент и футер, при этом страницы отличаются друг от друга только контентом. Как правильно их добавлять? Стоит отметить, что эти 3 части могут делиться на ещё более мелкие части, но это не меняет сути.
Далее будут мои мысли о том, как это реализовать. Скорее всего, в файле со страницей нам понадобиться использовать конструкцию вида
<code>
add_page_part('template_1','header');
add_page_part('template_1','content',$current_page_name);
add_page_part('template_1','footer');
</code>
Примерно понятно, как будет выглядеть начало функции add_page_part -
<code>
function add_page_part($template_name, $page_part, $page_name="not_changing_part"){
</code>
Дальнейшее содержание функции может быть разным. Например, можно использовать
1) include
А точнее, что-то вроде
<code>
if ($page_name=="not_changing_part")
include('pages/$templage_name/$page_part.php');
else
include('pages/$templage_name/$page_part/$page_name.php');
</code>
этот способ кажется самым простым, но я не знаю, правильно ли создавать большое множество файлов
2) SQL
В этом случае, можно хранить структуру шаблона в таблице, состоящей из следующих столбцов
Малую часть можно хранить в отдельной таблице со столбцами 1. id малой части 2. страница, к которой относится эта малая часть 3. содержимое части
Такая структура сделает необходимым делать несколько SQL запросов для загрузки каждой части - сначала SELECT из первой, чтобы получить id малых частей, затем, из полученного массива делать SELECT с условием WhERE page=$current_page
такая структура кажется в некотором смысле более правильной, но она гораздо сложнее
3) Нереляционные базы данных
Древовидная структура моих шаблонов могла бы хорошо быть реализована через mongodb, но оправдано ли их использование для загрузки страниц, тем более, на php-сервере?
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники