ТаблицейБлоками.

Экспорт и импорт новостей с использованием PHP скриптов

Последняя модификация: 10.08.2014 г

Страница загружена с адреса: http://webdesign.site3k.ru/consulting/news.html

Моя студия веб-дизайна

Экспорт и импорт новостей с использованием 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
readfile ('http://cjcity.ru/new_statyi.inc');
?>

Все, проще некуда. Вот эти вот символы (<?php и ?>) начинают и заканчивают PHP-скрипт. Чтобы он работал, файл должен иметь расширение php. Для файлов с расширением htm, shtm, html и shtml (или какое еще может прийти в голову?), требуется чтобы они были зарегистрированы, либо как PHP-скрипты (но это извращение), либо как SSI-файлы (см.  SSI). В случае SSI-файлов, вместо 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>
<!-- закрываем блок -->

Теперь, при желании, мы можем оформить содержимое блока каким-то особым образом с помощью  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}

элементы управления

<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 и можешь сам написать нужный тебе код, я, так уж и быть, приведу его в полном объеме и правильной последовательности. Можешь копировать его в свою страницу, и он будет работать (по крайней мере, у меня работает именно скопированный отсюда код).

 

Смотреть

Надеюсь, ты доволен результатом. Будет досадно, если нет. Так как со всеми объяснениями-толкованиями, у меня на это ушло несколько часов (а без извращений и толкований потребовалась бы одна минута – обычно сделать самому намного проще, чем разъяснить).

Если что-то не так, пиши в комментариях.

Страница временно недоступна

 

< Предыдущая (FTP клиент) Экспорт и импорт Следующая (php chmod)>

 

Комментарии к странице (всего 2)

 

 

 


На главную страницу сайта