Page 1 of 1

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

Posted: Sun Oct 10, 2010 4:11 pm
by Pepyaka111
Есть ли граббер новостей для cmsms с лента ру например, чтоб тематику можно было выставить авто, мото.

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

Posted: Mon Oct 11, 2010 8:57 am
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>";
	}
}

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

Posted: Tue Oct 12, 2010 3:26 am
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";
}
}

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

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

Posted: Tue Oct 12, 2010 3:29 am
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)"

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

Posted: Tue Oct 12, 2010 7:48 am
by Fenik17
Эм... Если такие вопросы, не лучше ли нанять программиста? ))
Код который я дал - это скрипт PHP. Его можно вставить, например, в тег пользователя. Создаете тег под именем lenta_rss, вставляете в него мой код. А в шаблоне пишете:

Code: Select all

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

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

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

Posted: Tue Oct 12, 2010 8:12 am
by Pepyaka111
Спасибо! Все работает. А можно это сделать по другому?

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

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

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

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

Если у вас есть такой скрипт, дайте в личку, с меня плюшка.

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

Posted: Tue Oct 12, 2010 10:08 am
by Fenik17
Чтобы грабить всю новость - это надо парсить уже html, который может непредсказуемо меняться. Т.е. это не очень хорошо, мягко говоря.

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

Posted: Tue Oct 12, 2010 10:18 am
by Fenik17
Pepyaka111 wrote: Если у вас есть такой скрипт, дайте в личку, с меня плюшка.
Скрипт есть, но он довольно сложен, т.к. создавался для другой задачи. Проще новый написать, чем тот править. Но суть проста - обновление какого-то файла по расписанию, из которого берутся анонсы новостей, погода, курс валюты или что-то подобное.

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

Posted: Sun Oct 17, 2010 6:44 am
by Brodyga
Fenik17 wrote: А в шаблоне пишете:

Code: Select all

<ul>
{lenta_rss}
</ul>
в каком шаблоне?

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

Posted: Mon Oct 18, 2010 7:24 am
by Fenik17
Brodyga wrote: в каком шаблоне?
В контенте страницы (это, по сути, тоже smarty-шаблон).