В следующий раз пользователь просто зайдет на сайт-
источник и о нашем сайте забудет. Ведь так? Поэтому желательно написать
граббер новостей, который будет подключаться к сайту-источнику,
«забирать» новость и выводить ее на нашем сайте в нашем дизайне.
Приступим к написанию подобного сценария. Создание граббера я буду
иллюстрировать на примере сайта itnews.com.ua. Заметим, что HTML-код у
других сайтов будет иным, поэтому с остальными сайтами данный вариант
работать не будет. Но по «образу и подобию», изменив пару строк кода, вы
сможете адаптировать данный пример для любого новостного сайта.
Идея заключается в следующем. Перейдите по любой ссылке, например по
http://itnews.com.ua/30519.html
Откройте исходный код загруженной страницы. Вы увидите, что статья
начинается тегом , а заканчивается тегами . Вы уже
уловили идею? Нам остается всего лишь с помощью функции file о
получить HTML-страницу с новостью и убрать весь лишний код до тега и
после тегов . Конечно, также понадобится удалить все
HTML-теги (кроме и ) из текста статьи, поскольку они могут не
вписываться в дизайн нашего сайта. Как видите, все очень просто. Напишем
такой сценарий (пусть он будет называться news.php, листинг 16.4).
// Получаем Web-страницу с новостью
// Переменная $и содержит URL страницы
$f=joinr
·, file($u));
// Начало новости
$begin=strpos(strtolower($f), ««, 0);
// Конец новости
$end=strpos (strtolower ($f), ,
|
·, $begin);
204
Часть IV. Разработка собственной CMS
11 Вырезаем то, что нам нужно — текст новости
$txt=substr($f, $begin, $end-$begin);
// Некоторые сайты используют кодировку K0I8-R, поэтому
// данная строка может понадобиться для перекодирования из K0I8-R
// в windows-1251
// $txt = convert__cyr__string($txt/,,k,,/,,w») ;
// Удаляем все теги, кроме и
$txt = strip_tags($txt, ,г);
// Выводим текст новости
echo $txt;
?>
Граббер можно вызвать так:
http://localhost/news.php?u=http://itnews.com.ua/30519.html
Результат работы сценария представлен на рис. 16.3.
Рис. 16.3. Результат работы граббера новостей
Глава 16. Работа с RSS: получаем новости на сайт 205
Но это еще не все. Ведь на главной странице сайта все равно у нас выводятся
ссылки на сайт-источник новостей, а не на сценарий news.php. Поэтому
сейчас вернемся к тому месту, где вы подключали сценарий импорта новостей:
$page = join(·’,file(«http://$SERVER_NAME/import.php»));
Переменная $txt содержит ссылки на сайт-источник, которые нужно
заменить ссылками на наш файл:
// Укажите свой адрес сайта
$page = str_replace(‘http://’,
‘http://localhost/news.php?u=http://¦, $page);
Все, теперь наш граббер полностью готов к использованию. Вам остается
импортировать его в дизайн своего сайта. Конечные результаты его работы
приведены на рис. 16.4 и 16.5.
Рис. 16.4. Импорт списка новостей: конечный результат
206
Часть IV. Разработка собственной CMS
Рис. 16.5. Импорт новости
Примечание
Наш граббер новостей никак не нарушает авторские права, поскольку мы
не скрываем источник новостей: мы честно отображаем источник новостей
и не скрываем оригинальные адреса новостных статей (их можно увидеть в
строке адреса). Ведь можно было бы написать сценарий, который «сграбит»
все новости в базу данных, а потом будет выводить информацию из нее,
тем самым подавая их в виде наших собственных новостей. Но так
поступать не следует, поскольку то, что мы сделали, считается перепечаткой с
сохранением авторских прав, а второй вариант будет их нарушением.
ГЛАВА 17
Интеграция CMS
с LiveJournal
17.1. Что такое «живой» журнал
Живой журнал (LiveJournal) — простое и бесплатное средство для общения в
Интернете. Он предоставляет вам следующие сервисы: частный дневник (его
никто не увидит, кроме вас), блог (открытый сетевой дневник, который
может прочитать кто угодно) и фотогалерею.
Для регистрации LiveJournal нужно зайти на сайт http://www.livejournal.com/
и создать бесплатную учетную запись (рис. 17.1).
На все про все (дневники и фотографии) вам отводится 1 Гбайт (!) дискового
пространства.