Помогите подправить rss.php для Яндекс Новости

M1
На сайте с 16.01.2010
Offline
33
2043

Столкнулся с проблемой экспорта новостей в Яндекс новости.

А именно. В <yandex:full-text> дублируется текст из вводной/краткой новости.

Нужно это убрать.

<title>Астрономы обнаружили следы малого слияния галактик</title>

<link>http://mysite.ry/astronomi/</link>
<description>Международная группа астрономов обнаружила следы малого слияния двух галактик. Статья ученых появилась в журнале Nature. </description>

<category>Новости - Новости</category>
<enclosure url="http://mysite.ry/pic.jpg" type="image/jpeg"/>
<pubDate>Mon, 06 Feb 2012 15:31:10 +0300</pubDate>
<yandex:full-text>Международная группа астрономов обнаружила следы малого слияния двух галактик. Статья ученых появилась в журнале Nature. Международная группа астрономов обнаружила следы малого слияния двух галактик. Статья ученых появилась в журнале Nature. В рамках работы ученые исследовали неправильную галактику NGC 4449, расположенную на расстоянии ...

Раскопал в php файле следующее:

// патч для экспорта новостей в Yandex ленту

// yandex export
$item->fulltext = $row->fulltext ? $row->introtext . $row->fulltext : $row->introtext;
$item->fulltext = preg_replace('/{([a-zA-Z0-9\-_]*)\s*(.*?)}/i', '', $item->fulltext);
$item->fulltext = htmlspecialchars(strip_tags($item->fulltext));
$item->fulltext = str_replace("'", "&apos;", $item->fulltext);


if ($row->images) {
$item->images = array();
$row->images = explode( "\n", $row->images );
foreach ($row->images as $img) {
$img = trim( $img );
if ($img) {
$temp = explode( '|', trim( $img ) );
$item->images[] = '/images/stories/'. $temp[0];
}
}
}

Кажется нужно поправить эту строку

$item->fulltext	= $row->fulltext ? $row->introtext . $row->fulltext : $row->introtext;

Но я в php не силён.

Помогите с этим разобраться

Slaxor
На сайте с 29.08.2011
Offline
115
#1

Из компонента RD RSS

function createFeed() {

global $mosConfig_live_site, $mosConfig_absolute_path;

$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
$feed.= $this->_createGeneratorComment();
$feed.= "<rss version=\"2.0\"\n";
$feed.= " xmlns=\"http://backend.userland.com/rss2\"\n";
$feed.= " xmlns:yandex=\"http://news.yandex.ru\">\n";
$feed.= " <channel>\n";
$feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),10000)."</title>\n";
$this->descriptionTruncSize = 50000;
$feed.= " <description>".$this->getDescription()."</description>\n";
$feed.= " <link>".$this->link."</link>\n";
$now = new FeedDate();

if ($this->image!=null) {
$feed.= " <image>\n";
$feed.= " <url>".$this->image->url."</url>\n";
$feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->image->title),10000)."</title>\n";
$feed.= " <link>".$this->image->link."</link>\n";
$feed.= " </image>\n";
}
if ($this->pubDate!="") {
$pubDate = new FeedDate($this->pubDate);
$feed.= " <pubDate>".htmlspecialchars($pubDate->rfc822())."</pubDate>\n";
}
if ($this->category!="") {
$feed.= " <category>".htmlspecialchars($this->category)."</category>\n";
}

for ($i=0;$i<count($this->items);$i++) {
$feed.= " <item>\n";
$feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),10000)."</title>\n";
$feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
$feed.= " <description>".$this->items[$i]->getDescription()."</description>\n";

if ($this->items[$i]->author!="") {
$feed.= " <author>".htmlspecialchars($this->items[$i]->author)."</author>\n";
}
if ($this->items[$i]->category!="") {
$feed.= " <category>".htmlspecialchars($this->items[$i]->category)."</category>\n";
}

if (is_array(@$this->items[$i]->images)) {
foreach($this->items[$i]->images as $image) {
if (function_exists( 'getimagesize' )) {
$type = @getimagesize($mosConfig_absolute_path . $image);
} else {
$type = array();
}
$feed.= " <enclosure url=\"".$mosConfig_live_site . $image."\" type=\"".$type['mime']."\"/>\n";
}
}

if ($this->items[$i]->date!="") {
$itemDate = new FeedDate($this->items[$i]->date);
$feed.= " <pubDate>".htmlspecialchars($itemDate->rfc822())."</pubDate>\n";
}
if ($this->items[$i]->fulltext!="") {
$feed.= " <yandex:full-text>".$this->items[$i]->fulltext."</yandex:full-text>\n";
}
$feed.= " </item>\n";
}
$feed.= " </channel>\n";
$feed.= "</rss>\n";
//$feed.= var_export($this->items, true);
return $feed;
}
}
M1
На сайте с 16.01.2010
Offline
33
#2

Что это за код и что с ним делать. Пересмотрел все файлы ничего похожего не нашёл.

У меня RD RSS joomla 1.0

M1
На сайте с 16.01.2010
Offline
33
#3

Разобрался сам.

Выкладываю готовый код. Может кому ещё пригодиться.

// патч для экспорта новостей в Yandex ленту

// yandex export
$item->fulltext = $row->fulltext;
$item->fulltext = preg_replace('/{([a-zA-Z0-9\-_]*)\s*(.*?)}/i', '', $item->fulltext);
$item->fulltext = htmlspecialchars(strip_tags($item->fulltext));
$item->fulltext = str_replace("'", "&apos;", $item->fulltext);


if ($row->images) {
$item->images = array();
$row->images = explode( "\n", $row->images );
foreach ($row->images as $img) {
$img = trim( $img );
if ($img) {
$temp = explode( '|', trim( $img ) );
$item->images[] = '/images/stories/'. $temp[0];
}
}
}

// патч для экспорта новостей в meta ленту
// meta export
$item->fulltext = $row->fulltext;
$item->fulltext = preg_replace('/{([a-zA-Z0-9\-_]*)\s*(.*?)}/i', '', $item->fulltext);
$item->fulltext = htmlspecialchars(strip_tags($item->fulltext));
$item->fulltext = str_replace("'", "&apos;", $item->fulltext);

/*
if ($row->images) {
$item->images = array();
$row->images = explode( "\n", $row->images );
foreach ($row->images as $img) {
$img = trim( $img );
if ($img) {
$temp = explode( '|', trim( $img ) );
$item->images[] = '/images/stories/'. $temp[0];
}
}
}
*/
// meta export

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий