ТаблицейБлоками.Экспорт и импорт новостей с использованием 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-файлы (см. 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)>