Экспорт и импорт новостей с использованием PHP скриптов
Наконец-то у меня дошли руки до скрипта импорта данных с сайта на сайт. Рассмотрим эту задачу на примере файла http://cjcity.ru/new_statyi.inc, который нужно включить в правую часть данной страницы (ты видишь эти ссылки справа).
И так, файл лежит на одном сайте, а его, периодически меняющееся содержимое должно отражаться как часть страницы другого сайта. Как я уже говорил, PHP-функция fopen открывает файл или URL, после чего с его содержимым можно делать все, что угодно. Но есть и другие функции. Например, функция file читает весь файл в массив, каждый элемент которого соответствует строке прочитанного файла. Пройдя по массиву, можно обработать эти строки по своему усмотрению.
Вот пример, взятый из официальной документации по PHP:
<?php
// получить web-страницу в виде массива и напечатать его
$fcontents = file ('http://cjcity.ru/new_statyi.inc');
while (list ($line_num, $line) = each ($fcontents)) {
echo "<b>Line $line_num:</b>; ", htmlspecialchars ($line), "<br>\n";
}
?>
Простейший случай импорта новостей с использованием PHP скрипта
Если говорить о конкретном файле, лежащим по адресу http://cjcity.ru/new_statyi.inc и имеющем готовое HTML форматирование, то использование массивов и циклов только излишне усложняет процесс. Достаточно применить функцию readfile:
Все, проще некуда. Вот эти вот символы (<?php и ?>) начинают и заканчивают PHP-скрипт. Чтобы он работал, файл должен иметь расширение php. Для файлов с расширением htm, shtm, html и shtml (или какое еще может прийти в голову?), требуется чтобы они были зарегистрированы, либо как PHP-скрипты (но это извращение), либо как SSI-файлы (см. SSI). В случае SSI-файлов, вместо PHP-скрипта вставляется SSI-директива, указывающая на файл скрипта.
То есть, в общем случае, для php-файлов, в том месте, куда требуется воткнуть чужой файл, вставляется скрипт:
А для других файлов (html, shtml и т. д.), этот скрипт сохраняется отдельно, например в корень сайта, в файл с именем import.php. В саму страницу, вместо него вставляется SSI-директива
<!--#include virtual="/import.php" -->
вызывающая закрепленный за такого типа файлами обработчик и вставляющая на свое место код, полученный в результате обработки.
Импорт новостей с извращением
Не знаю, зачем тебе нужно иметь кнопки для создания кода, который люди будут копировать в свои страницы, по-моему, каждый сам создаст такой код, какой захочет, но, поскольку ты об этом просишь, а для меня – это только разминка для мозгов (надеюсь избежать маразма в старости), то, пожалуйста:
Код включения SSI-директивой должен иметь следующий вид:
<div class=cjcity>
<!-- создаем именованный блок, для того чтобы иметь возможность
задавать ему оформление отличное от остальной страницы -->
<!--#include virtual="/import.php" -->
<!-- включаем в этот блок наш PHP-скрипт
(фактически, включаем импортируемый файл) -->
</div>
<!-- закрываем блок -->
Теперь, при желании, мы можем оформить содержимое блока каким-то особым образом с помощью CSS. Для этого либо в начале страницы, либо перед блоком указываем оформление абзацев, включенных в этот блок:
<style type="text/css"><!--
.cjcity P {font-size: 12pt; color: Navy}
/* задаем оформление абзаца внутри элемента класса cjcity */
.cjcity P A {font-size: 12pt}
/* и оформление ссылок внутри абзаца,
находящегося внутри элемента класса cjcity */
--></style>
Можно перенести это оформление во включаемый CSS-файл, оставив в нем только такие строки:
.cjcity P {font-size: 12pt; color: Navy}
.cjcity P A {font-size: 12pt}
Остается не выясненным, как позволить посетителю страницы произвольно менять размер и цвет шрифта, перед копированием?
Тут нужно использовать JavaScript и свойство innerHTML. Так же, свойства шрифта на твоей странице придется поместить в именованные контейнеры, чтобы иметь возможность их менять (можно было бы сделать все на PHP, но это приводит к перезагрузке страницы, а зачем?).
Таким образом, мы получаем стили
.cjcity P {font-size: <span id=cjcity1>12</span>pt;
color: <span id=cjcity2>Navy</span>}
.cjcity P A {font-size: <span id=cjcity3>12</span>pt}
В общем, с твоими извращениями пришлось пройтись по всем языкам веб-програмирования.
Ну, а теперь, когда ты освоил HTML, CSS, SSI JavaScript и PHP ☺ и можешь сам написать нужный тебе код, я, так уж и быть, приведу его в полном объеме и правильной последовательности. Можешь копировать его в свою страницу, и он будет работать (по крайней мере, у меня работает именно скопированный отсюда код).
Надеюсь, ты доволен результатом. Будет досадно, если нет. Так как со всеми объяснениями-толкованиями, у меня на это ушло несколько часов (а без извращений и толкований потребовалась бы одна минута – обычно сделать самому намного проще, чем разъяснить).