Как хранить контент страниц сайта?
хранение контента в файлах как хранить контент в файлах, какой формат файлов должен быть. Примеры использования контента в файлах.
Подробно о хранении статей в файлах.
- Какие файлы возможны для хранения контента?
- Способы хранения контента?
- Способ хранения контента - массив.
- Хранить сонтент в переменных в файлах.
-
Способ хранения контента - массив.
Один из способов хранения контента в файле - это ассоциативный массив.
Как записывается контент в массиве в коде php?
<?
$example_cell = array(
'title' => 'контент в файлах',
'main_text' => 'Как хранить контент страниц сайта?',
'author' => 'Марат',
'tags' => 'php_file/database/file_cms/',
'data' => '14.01.2022',
'img' => 'engine.png'
);
?>
Выведем данный контент с помощью print_r
print_r($example_cell);
Array
(
[title] => контент в файлах
[main_text] => Как хранить контент страниц сайта?
[author] => Марат
[tags] => php_file/database/file_cms/
[data] => 14.01.2022
[img] => engine.png
)
Как сохранять контент в массиве в файле?
Для того, чтобы пользоваться сохраненным контентом его надо как-то записать в файл.
Для этого вам понадобится:
У вас должен существовать контент в массиве я уже выше его показывал..
В таком виде(в массиве) контент сохранить в файле невозможно!
Его(массив) нужно превратить в строку - serialize
Если мы сейчас этот массив пропустим через serialize... и выведем через echo:
echo serialize($example_array);То получим строку:
a:6:{s:5:"title";s:30:"контент в файлах";s:9:"main_text";s:64:"Как хранить контент страниц сайта?";s:6:"author";s:10:"Марат";s:4:"tags";s:27:"php_file/database/file_cms/";s:4:"data";s:10:"14.01.2022";s:3:"img";s:10:"engine.png";}Далее - эту строку записываем с помощью file_put_contents + указываем путь до файла
Здесь обращаю ваше внимание! Что если файла изначально не существует, то функция file_put_contents вернет ошибку. Для того, чтобы забить ошибку используйте собаку " @ " - это не лучший способ..., но в данный момент про это - всё(в смысле этого достаточно).
file_put_contents('путь', serialize($example_array));Добавление нового контента в массив
Выше я уже показывал наш массив... давайте его ещё раз выведем:
Array
(
[title] => контент в файлах
[main_text] => Как хранить контент страниц сайта?
[author] => Марат
[tags] => php_file/database/file_cms/
[data] => 14.01.2022
[img] => engine.png
)
Предположим, что вы хотите:
Добавить контент к уже существующему контенту!
Данный заголовок можно понять как:
Добавление нового контента к уже существующему контенту.
И добавить новую ячейку новым контентом!
Как добавить контент к уже существующему контенту
Для того, чтобы добавить контент вам потребуется:
Получаем контент с помощью file_get_contents
file_get_contents('путь_до_файла');Далее строку превращаем в массив с помощью unserialize:
$example_array = unserialize(file_get_contents('путь_до_файла'));Выбираем тот контент(ячейку - пусть это будет "main_text"), который хотим изменить/добавить - меняем значение ячейки:
$example_arr['main_text'] = 'Просто переписываем ячейку';Выведем заново наш массив:
Array
(
[title] => контент в файлах
[main_text] => Просто переписываем ячейку
[author] => Марат
[tags] => php_file/database/file_cms/
[data] => 14.01.2022
[img] => engine.png
)
Превращаем массив в строку - serialize.
Далее записываем наш новый контент в файл с помощью file_put_contents + указываем путь до файла
file_put_contents('путь', serialize($example_array));Добавление нового контента в ячейку.
Выше вы можете увидеть массив с измененным "контентом", но если вы вдруг хотите добавить новый контент в новую ячейку, для этого вам потребуется:
Опять: получаем контент с помощью file_get_contents
file_get_contents('путь_до_файла');Далее строку превращаем в массив с помощью unserialize:
$example_array = unserialize(file_get_contents('путь_до_файла'));Назовем как-то нашу новую ячейку и добавим значение:$example_arr[new_cell] = 'Новый контент в новой ячейке';Выведем наш массив:
Array
(
[title] => контент в файлах
[main_text] => Как хранить контент страниц сайта?
[author] => Марат
[tags] => php_file/database/file_cms/
[data] => 14.01.2022
[img] => engine.png
[new_cell] => Новый контент в новой ячейке
)
Массив в строку - serialize.
Далее записываем наш новый контент в файл с помощью file_put_contents + указываем путь до файла
file_put_contents('путь', serialize($example_array));Как выводить/получать контент из файла?
Для того, чтобы получить контент из файла с массивом вам понадобится:
Нам нужно знать путь на сервере до файла
Далее получаем контент с помощью file_get_contents в строку.
file_get_contents('путь_до_файла');Преобразовываем строку в массив - unserialize и присваиваем какой-то переменной:
$example_var = unserialize(file_get_contents('путь_до_файла'));Выводим весь контент в массиве:
print_r($example_var);Array
(
[title] => контент в файлах
[main_text] => Как хранить контент страниц сайта?
[author] => Марат
[tags] => php_file/database/file_cms/
[data] => 14.01.2022
[img] => engine.png
)
Если требуется вывести часть массива( в этом случае можно использовать echo):
echo $example_var['title'];Разместим приведенный код прямо здесь:
контент в файлахСохранить/записать контент в файл пример/скачать
Для того, чтобы увидеть на реальном примере - как сохранить контент в файле я сделал два примера:
На странице применена выше приведенная теория.
В форме 4 поля ввода.
Дата(date) формируется автоматически в момент создания и записи контента в файл.
После создания контента в файле можно на файл посмотреть.
Следующий шаг - редактирование контента...
Как отредактировать файл с контентом
В данном файле аналогичная форма, с единственной разницей, что, если контент в файле создан, то в каждое поле ввода передается соответствующее значение и вы можете его отредактировать!
Скачать скрипт создания контента в файлах.
Скачать скрипт создания контента в файлах можно здесь.
Что в архиве? В архиве два файла, ссылки на примеры которых вы видели чуть выше...
Что делать с файлами? Файлы кидаете в любую папку на сайте.
Открываем файл data_in_array.php Открываете файл "data_in_array.php".
https://ваш_домен.ru/путь_до_папки/data_in_array.phpВы попадете на страницу "создание/сохранение контента в файле"
Файл edit.php Открываете файл "edit.php".
https://ваш_домен.ru/путь_до_папки/edit.phpВы попадете на страницу "редактирование контента в файле"
-
Хранить контент в переменных в файлах.
Один из вариантов хранения данных в файлах - это переменные.
Например, как хранится заголовок(title)?
$title = 'контент в файлах';Вывод такой переменной в html шаблон:
Выводим одним из способов echo
<title><?=$title?></title>Пример хранения контента в переменных в файле:
Как-то я делал видео о редактировании сайта и там(в том числе) попадает в поле зрения - "как хранится контент в переменных" в файле, начинается видео с 86 секунды:
В каком формате хранится контент у меня на сайте?
Сейчас, живых сайтов всего два...
На сайте https://dwweb.ru/ формат файла с контентом - ".html".
На сайте https://marrex.ru/ формат файла с контентом - ".dat".
В следующем пункте более подробно...
Хранение данных/контента в переменных в файлах
Выше пунктом я уже коснулся темы сохранения контента в переменных. Дополнительно надо более подробно описать всю ситуацию на сайте!
Итак! Как было сказано выше, основной контент сайта, который вы сейчас читаете, находится в переменных, в файле ".html" - видео смотри выше, там как раз на этом месте начинается.
И второй файл с контентом, это краткая информация о странице - своего рода база данных.
1). Хранение контента в переменных:
Перейдем к подробному разбору - как вообще это работает - "Хранение контента в переменных":
Для каждой страницы существует отдельный файл ".html"(на другом сайте ".dat").
Пример хранения контента в переменных:
Переменных может быть сколько угодно.
<?
$title= 'Название страницы';
$data= 'Дата написания';
$main_text= 'Основной контент страницы';
?>
Смотрим, как это в редакторе кода:
На сайте применена единая точка входа - когда вы нажимаете по любой ссылке вы попадаете на файл "https://dwweb.ru/index.html".
Чтобы php обрабатывался в ".html" файлах надо его "включить"
Получаем адрес из "адресной строки" и проверяем есть ли такой файл.( - это схематично, тема на отдельную страницу).
Если файл существует ...то используем include и из адреса из адресной строки...
https://dwweb.ru/kontent_v_faylah.htmlНадо получить путь_на_сервере_до_вашего_файла... например:
home/www/kontent_v_faylah.htmlПосле include Далее есть отдельный файл "__html.php" - он загружается(include) на "https://dwweb.ru/index.html" последним(я все еще рассказываю структуру своего сайта) - его можно обозвать "html шаблоном", где есть html каркас где и выводятся все переменные... Выводим одним из способов echo, например "$title"
<title><?=$title?></title>Откроем эту страницу в любом редакторе кода
И далее... нам остается открыть данную страницу с контентом в переменных в браузере...
Плюсы хранения контента в переменных Вы можете обработать любую переменную - как вам вздумается! Если в контенте есть какие-то точки, за которые можно зацепиться... например вывести рекламу перед заголовком... сменить рекламу.
Например на каждом абзаце вам требуется вывести ссылку для копирования...
Размещение дополнительных переменных в самом файле. На данном пункте надо остановится дополнительно!
Обращали ли вы внимание, что некоторые сайты, которые посвящены коду, не имеют живой код на странице? А выводят тупые картинки?
Знаете почему?
Потому, что переменную внутрь текста просто невозможно поместить... она не будет работать, например потому, что контент в строке, например получают с помощью file_get_contents, там нельзя выполнить переменную(нет... конечно, какие-то костыли можно придумать, типа eval, ну блин - это такая морока...) + для меня очень критичная проблема с таким выводом... как этой функции показать, что данную переменную(номер 1) надо выводить как название переменной, как строку и как вторую переменную выводить как переменную, а не как строку?... Например:
$exampleВ хранении данных в переменных есть этот плюс, что прямо здесь, я могу вывести любую переменную, которая может быть динамической.
На странице о себе любимом есть строка...
И я варюсь в web строительстве: 17 летА выводится это так в переменной(how_much_year - функция высчитывающая сколько лет прошло с начала моего знакомства с web-ом):
$main_text = 'много текста выше
И я варюсь в web строительстве: '.how_much_year(2007).'
много текста ниже
';Минусы хранения контента в переменных :К сожалению, как любая монета имеет две стороны, так и здесь есть свои плюсы и минусы, так и хранение данных в переменных имеет свои минусы!
Вы всегда должны помнить о конфликте кавычек.
Редактирование "попеременно", т.е. вывод каждой переменной в своем окне. Здесь есть сложность, только в том случае, если у вас есть переменные внутри переменных. Смотри подробнее в отдельном пункте минусов.
Минусы(отдельно) хранения контента в переменных:
О минусах хранения в переменных я решил выделить в отдельный пункт.
Давайте так... любой минус можно обойти!Это минус, только если у вас в переменной, другая переменная, например:
$main_text = 'много текста выше
И я варюсь в web строительстве: '.how_much_year(2007).'
много текста ниже
';И если сейчас вывести вот так эту переменную внутри "textarea":
<textarea><? echo $example_main_text ?></textarea>То мы получим вот так... обратите внимание, что тут реальный textarea, потому, что здесь живой код... есть побочный эффект "br и p":
И я варюсь в web строительстве: 17 лет
много текста ниже
Как я обошел эту проблему? Всё просто!
Я пишу полный код в файл.
Получаю код из файла с помощью file_get_contents и вывожу в "textarea".
<?
$title = 'Пример.';
$main_text = 'много текста выше
И я варюсь в web строительстве: '.how_much_year(2007).'
много текста ниже
';
?>
Зачем вам нужна переменная внутри другой переменной!?
Здесь вы можете правомерно спросить меня: "зачем мне нужна переменная внутри другой переменной"!?
- Если у вас стационарный текст, без переменных, то такой минус у вас не будет существовать!
Зачем мне нужна переменная внутри другой переменной!?
Ну...
Вообще... я прошел довольно долгий путь, чтобы прийти именно к такому методу хранения контента! Я не говорю, что он один единственный мне подходит.
Мне приходится использовать внутри текста переменные, поскольку периодически требуется выводить эти переменные внутри текста, чтобы текст не был стационарным, а был динамичным.
Еще мне приходится писать код, чтобы он не выполнялся, а выше переменной ставить этот код, который выполнится и передаст результат в другую переменную, а уже эту переменную вставить внутрь текста, чтобы увидеть результат работы кода!
Как записывать контент на страницу файла?
Алгоритм простой... в форме заполняются соответствующие поля. И php код записывает эти данные на страницу.
Для понимания всех процессов описанных ниже в php программе вам потребуются темы:
Принимать отправлять переменные - post
Записывать будем с помощью file_put_contents
Заменим путь на сервер на домен - str_replace
Используем exit для остановки php программы и во внутрь поместим переадресацию на готовую страницу.
PHP: <?
$home = $_SERVER['DOCUMENT_ROOT'];
$domen = $_SERVER["HTTP_X_FORWARDED_PROTO"].'://'.$_SERVER["HTTP_HOST"];
$path = '';//если путь не прописать, то файл сохранится в корневой папке
$dir_page = $home . $path. '/example.html';
if($_POST['title']){$title = $_POST['title'];}
if($_POST['H1']){$H1= $_POST['H1'];}
$example_tags = 'example_tags';
if($_POST['main_text']){$main_text= $_POST['main_text'];}
if($_POST['new_page'])
{
$write = file_put_contents($dir_page, '<?
$title = '.$title.' ;
$H1 = '.$H1.';
$data = '.date('d.m.Y').' ;
$example_tags = 'example_tags';
$main_text = '.$main_text.';'."\n");
?>';
$refresh_url = str_replace($home, $domen, $dir_page);
if($write) {exit('<meta http-equiv="refresh"content="0;url='.$refresh_url.'">'); }
}
?>
Для отправки данных контента вам понадобится форма типа/вида:
<form method="post">
<input type="text" name="title" placeholder="заголовок">
<input type="text" name="H1" placeholder="заголовок H1">
<input type="text" name="tags" placeholder="tags">
<textarea name="main_text" placeholder="main_text"></textarea>
<input type="submit" name="new_page" placeholder="Создать страницу">
</form>
Получится:
Какие файлы возможны для хранения контента?
Для хранения контента в файлах подойдет вообще любой текстовый файл, если вы собираетесь хранить в строке(string).
Например...
Я использую для файла базы .dat
Для файлов с контентом ".html".
В одно время файл базы был в ".txt", но периодически происходили непонятные сбои в строках... я пытался выяснить в чем проблема... несколько раз...
Предположительно, что: где-то, кусок строки, каким-то образом перекодировался в другую кодировку. Заменялась часть строки на непонятные символы, думаю встречали квадрат с вопросительным знаком(не поддерживаемый системой символ).
Примерно так:
Нам нужно понять структуру записываемых данных.... и чтобы мы могли эти данные туда поместить, а потом оттуда благополучно достать!
Естественно, что я не буду гадать, как бы вы хотели бы хранить данные - я все о себе любимом... как я храню контент в файлах...
Способ хранения контента?
Я использовал три способа хранения данных в файле...
Первый способ - полностью вся страница - стационарный html(без php)... "формат файла .html" - сейчас не используется. Очень неудобно.
Хранение в асс.массиве, формат файла ".dat" - после обработки вывод в html шаблон.
Хранение в переменных, формат файла ".html" - после обработки вывод в html шаблон.
Каждый из 2 способов... имеет свои плюсы и минусы!
2). Хранение контента в ассоциативном массиве:
Не существует конфликт кавычек - можете смело использовать любые...
Удобство редактирования ячеек массива, удаление, добавление.
Невозможность использовать переменные внутри ячеек массива - они будут просто строкой.
Для получения массива требуется дополнительная функция - это не критично, но просто в отличии от переменных, здесь получается + 1 доп функция...
Как выводятся переменные на реальную страницу?
Далее все представлено схематично! Более целостно будет, когда появится кнопка скачать...
1). Это будет отдельный файл с контентом.
После записи на страницу... контент должен представлять примерно такую картину:
<?
$title = 'example title';
$H1 = 'example H1';
$data = '21.04.2021';
$example_tags = 'example tags';
$main_text = 'example main_text';
?>
2). Отдельный файл - Html шаблон.
Html код страницы, где будет выводиться значение переменных:
Для примера это будет выглядеть так:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title><?=$title?></title>
</head>
<body>
<h1><?=$H1?></h1>
<span><?=$data?></span>
<div><?=$data?></div>
</body>
</html>
Пример сортировки тем по "tags" - https://dwweb.ru/?tema=file_cms
Здесь "file_cms" - один из тегов. который прописан и в файле и базе. о "{tags}"
Дополнительно вам потребуется для изучения:
Свои комменты в ожидании переделки!
Когда сделаю не знаю!
Времени нет...
Иначе сообщение будет удалено, вас в бан - все просто!
Но если, сил нет как хочется высказать всё, что вы думаете об этом, пожалуйста - комменты от Vk - форма ниже: