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