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