Клуб Админов > --- > Вставляем полное содержание новости из файла, а не из БД

Вставляем полное содержание новости из файла, а не из БД


8 сентября 2008. Разместил: RedRat
Проблема – в БД не рекомендуется хранить большие данные, к примеру, текст весом в 80 кб сильно будет увеличивать размер базы данных тем самым уменьшать скорость работы с БД. А что если Вам нужно будет вставить текст весом под 600 кб?! Представляете, как это будет весомо для БД?! Так вот, с помощью этого небольшого мода Вы сможете вставлять основное содержание новости из файла или вставлять результат выполнения программы прямо в содержание новости.

Для создания мода в своей копи DLE вам потребуется менее 5ти минут.

1. Находим файл «engine/modules/show.full.php». Делаем архивную копию файла. Открываем файл для редактирования в блокноте.

2. Находим строку:

$metatags['title'] = stripslashes($row['title']);

Выше этой строки вставляем:

/*встака в содержание из файла*/
while(preg_match("'\[DataFromFile\](.*?)\[\/DataFromFile\]'si", $row['full_story'], $maches))
{

if (file_exists($maches[1])){


IF(preg_match("'(.*?).(php)'is",$maches[1])){
include_once $maches[1];

}

if(preg_match("'(.*?).(txt)'is",$maches[1])){
$DataFromFile=file_get_contents($maches[1]);
}

}else{$DataFromFile="<font color=red size=-3>Файл {$maches[1]} не найден. </font>";}

$row['full_story']  = preg_replace("'\[DataFromFile\](.*?)\[\/DataFromFile\]'si",$DataFromFile,$row['full_story']);
$DataFromFile=flase;

}
/**/


3. Сохраняем файл.

Теперь, как пользоваться модом.

Для выполнения программы в основное содержание новости нужно вставлять код:


[DataFromFile]test/fortest.php[/DataFromFile]


Адрес к файлу программы указывается любой, включая http. Обратите внимание на синтаксис написания кода, он пишется в одну строку.

Листинг программы “fortest.php” должен содержать переменную «$DataFromFile», в которой и находиться код для вывода в полное содержание новости.

К примеру, листинг fortest.php


<?
$DataFromFile=<<<HTML
Вот этот текст и выведет программа в содержание новости
HTML;
?>


Если вы просто решили вставить текст или html код в основное содержание новости, тогда нужен вот такой код:


[DataFromFile]test/testpubl.txt[/DataFromFile]


Адрес к файлу txt указывается любой, включая http. Обратите внимание на синтаксис написания кода, он пишется в одну строку.

Текстовый файл содержит, что угодно, но не выполняется как программа php. Учтите, что html код не удаляется.

Аспекты:
- Если, к примеру, в основное содержание вставлен код для вызова программы из несуществующего файла, программа вставляет сообщение об ошибке.
- Код вызова программы из файла или просто текста из файла можно вставлять неограниченное количество.
- Не важно в какую новость вставляеться код вызова, он может быть вставлен в любую новость
Итог. Теперь вам не нужно загромождать свою базу данных, достаточно создать файл с содержанием и вставить код вызова в статью. Знаю, что для начинающих программистов данный мод будет весьма интересен, ведь нет ограничений на вызываемую программу, она может вовсе ничего не выводить в содержание, а к примеру, нести совсем другую функцию (подключение к БД, учёту статистики, вывода баннера и т.п.)