Граббер новостей

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
Pepyaka111

Граббер новостей

Post by Pepyaka111 »

Есть ли граббер новостей для cmsms с лента ру например, чтоб тематику можно было выставить авто, мото.
Fenik17
Power Poster
Power Poster
Posts: 450
Joined: Tue Jun 01, 2010 5:42 am

Re: Граббер новостей

Post by Fenik17 »

Граббер занимает 7 строк кода:

Code: Select all

$rss = simplexml_load_file('http://lenta.ru/rss/');
$result = $rss->xpath('//item/category[text()="Авто"]/..');
if ($result) {
	foreach($result as $item) { 
		echo "<li><a href=\"$item->link\"><span>$item->title</span></a></li>";
	}
}
Pepyaka111

Re: Граббер новостей

Post by Pepyaka111 »

$rss = simplexml_load_file('http://lenta.ru/rss/');
$result = $rss->xpath('//item/category[text()="Авто"]/..');
if ($result) {
foreach($result as $item) {
echo ";link\">$item->title";
}
}

Этот код в шаблон вставлять?
Pepyaka111

Re: Граббер новостей

Post by Pepyaka111 »

Выдает ошибку

string(229) "Smarty error: [in tpl_body:23 line 202]: syntax error: unrecognized tag: foreach($result as $item) { echo "
link\">$item->title
"; (Smarty_Compiler.class.php, line 446)" string(112) "Smarty error: [in tpl_body:23 line 202]: syntax error: unrecognized tag '' (Smarty_Compiler.class.php, line 590)"
Fenik17
Power Poster
Power Poster
Posts: 450
Joined: Tue Jun 01, 2010 5:42 am

Re: Граббер новостей

Post by Fenik17 »

Эм... Если такие вопросы, не лучше ли нанять программиста? ))
Код который я дал - это скрипт PHP. Его можно вставить, например, в тег пользователя. Создаете тег под именем lenta_rss, вставляете в него мой код. А в шаблоне пишете:

Code: Select all

<ul>
{lenta_rss}
</ul>
Но данное решение - не есть гуд, т.к. при каждом обращении к странице будет запрос к RSS стороннего сайта (это может тормозить загрузку, увеличивать трафик и злить хозяев RSS). Лучше делать запросы на обновление новостей по расписанию, раз в час, и сохранять результат в файл, из которого уже вставлять на страницу.

И еще момент - на ленте.ру для авто-новостей есть своя лента новостей: http://auto.lenta.ru/l/r/EX/yandexfull.rss
Если нужны именно авто-новости, лучше брать их из этой ленты. Но тогда нужно изменить скрипт обработки xml, который я дал.
Pepyaka111

Re: Граббер новостей

Post by Pepyaka111 »

Спасибо! Все работает. А можно это сделать по другому?

Например чтоб вывести дополнительный раздел, скажем Новости.

Пользователь заходит в него и видит анонс новости, скажем сивволов 300 и маленькую картинку к новости, скажем 100 на 80.

Клацает по новости и читает без перехода на сайт ленты ру, на моем сайте новость с нормального размера картинкой.

И вы говорили что можно это реализавать как-то чтоб каждый час на мой сервак парсилось и потом вывадилось.

Если у вас есть такой скрипт, дайте в личку, с меня плюшка.
Fenik17
Power Poster
Power Poster
Posts: 450
Joined: Tue Jun 01, 2010 5:42 am

Re: Граббер новостей

Post by Fenik17 »

Чтобы грабить всю новость - это надо парсить уже html, который может непредсказуемо меняться. Т.е. это не очень хорошо, мягко говоря.
Fenik17
Power Poster
Power Poster
Posts: 450
Joined: Tue Jun 01, 2010 5:42 am

Re: Граббер новостей

Post by Fenik17 »

Pepyaka111 wrote: Если у вас есть такой скрипт, дайте в личку, с меня плюшка.
Скрипт есть, но он довольно сложен, т.к. создавался для другой задачи. Проще новый написать, чем тот править. Но суть проста - обновление какого-то файла по расписанию, из которого берутся анонсы новостей, погода, курс валюты или что-то подобное.
Brodyga
Forum Members
Forum Members
Posts: 19
Joined: Fri Mar 05, 2010 3:33 pm

Re: Граббер новостей

Post by Brodyga »

Fenik17 wrote: А в шаблоне пишете:

Code: Select all

<ul>
{lenta_rss}
</ul>
в каком шаблоне?
Fenik17
Power Poster
Power Poster
Posts: 450
Joined: Tue Jun 01, 2010 5:42 am

Re: Граббер новостей

Post by Fenik17 »

Brodyga wrote: в каком шаблоне?
В контенте страницы (это, по сути, тоже smarty-шаблон).
Post Reply

Return to “Russian - русский”