‹
| КрасносельскийКонстантинКонстантинович |
ТаблицейБлоками.Экспорт и импорт новостей с использованием PHP скриптов |
Последняя модификация: 10.08.2014 г
Страница загружена с адреса: http://webdesign.site3k.ru/consulting/news.html
|
Наконец-то у меня дошли руки до скрипта импорта данных с сайта на сайт. Рассмотрим эту задачу на примере файла 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
readfile ('http://cjcity.ru/new_statyi.inc');
?>
Все, проще некуда. Вот эти вот символы (<?php и ?>) начинают и заканчивают PHP-скрипт. Чтобы он работал, файл должен иметь расширение php. Для файлов с расширением htm, shtm, html и shtml (или какое еще может прийти в голову?), требуется чтобы они были зарегистрированы, либо как PHP-скрипты (но это извращение), либо как SSI-файлы (см. То есть, в общем случае, для php-файлов, в том месте, куда требуется воткнуть чужой файл, вставляется скрипт:
<?php
readfile ('http://cjcity.ru/new_statyi.inc');
?>
А для других файлов (html, shtml и т. д.), этот скрипт сохраняется отдельно, например в корень сайта, в файл с именем import.php. В саму страницу, вместо него вставляется SSI-директива <!--#include virtual="/import.php" --> вызывающая закрепленный за такого типа файлами обработчик и вставляющая на свое место код, полученный в результате обработки. Импорт новостей с извращениемНе знаю, зачем тебе нужно иметь кнопки для создания кода, который люди будут копировать в свои страницы, по-моему, каждый сам создаст такой код, какой захочет, но, поскольку ты об этом просишь, а для меня – это только разминка для мозгов (надеюсь избежать маразма в старости), то, пожалуйста: Код включения SSI-директивой должен иметь следующий вид: <div class=cjcity> <!-- создаем именованный блок, для того чтобы иметь возможность задавать ему оформление отличное от остальной страницы --> <!--#include virtual="/import.php" --> <!-- включаем в этот блок наш PHP-скрипт (фактически, включаем импортируемый файл) --> </div> <!-- закрываем блок --> Теперь, при желании, мы можем оформить содержимое блока каким-то особым образом с помощью
<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}
элементы управления <input id="edit1" type="text" value=12 size="2"> <input id="edit2" type="text" value=black size="20"> <a href="javascript:edit();">Показать</a> и управляющую функцию:
<SCRIPT LANGUAGE="JavaScript"><!--
function edit()
{
a1=document.getElementById('edit1');
b1=document.getElementById('cjcity1');
b1.innerHTML=a1.value;
a2=document.getElementById('edit2');
b2=document.getElementById('cjcity2');
b2.innerHTML=a2.value;
b3=document.getElementById('cjcity3');
b3.innerHTML=a1.value;
}
//--></SCRIPT>
В общем, с твоими извращениями пришлось пройтись по всем языкам веб-програмирования. Ну, а теперь, когда ты освоил HTML, CSS, SSI JavaScript и PHP ☺ и можешь сам написать нужный тебе код, я, так уж и быть, приведу его в полном объеме и правильной последовательности. Можешь копировать его в свою страницу, и он будет работать (по крайней мере, у меня работает именно скопированный отсюда код).
Надеюсь, ты доволен результатом. Будет досадно, если нет. Так как со всеми объяснениями-толкованиями, у меня на это ушло несколько часов (а без извращений и толкований потребовалась бы одна минута – обычно сделать самому намного проще, чем разъяснить). Если что-то не так, пиши в комментариях. | ‹ гяСтраница временно недоступнаrШ& |
< Предыдущая (FTP клиент) Экспорт и импорт Следующая (php chmod)>
