Я потратил целую вечность, пытаясь найти способ отображения изображений в RSS с помощью Сороки, и в конце концов мне пришлось изучить код, чтобы выяснить, как заставить его работать.
Как вы и сказали, причина, по которой Сорока не берет изображения в элементе, заключается в том, что они указаны с помощью тега 'enclosure', который является пустым тегом, в котором информация содержится в атрибутах, например,
<enclosure url="http://www.mysite.com/myphoto.jpg" length="14478" type="image/jpeg" />
В качестве хака, чтобы заставить его работать быстро для меня, я добавил следующие строки кода в rss_parse.inc:
.
function feed_start_element($p, $element, &$attrs) {
...
if ( $el == 'channel' )
{
$this->inchannel = true;
}
...
// START EDIT - add this elseif condition to the if ($el=xxx) statement.
// Checks if element is enclosure tag, and if so store the attribute values
elseif ($el == 'enclosure' ) {
if ( isset($attrs['url']) ) {
$this->current_item['enclosure_url'] = $attrs['url'];
$this->current_item['enclosure_type'] = $attrs['type'];
$this->current_item['enclosure_length'] = $attrs['length'];
}
}
// END EDIT
...
}
URL-адрес изображения находится в $ myRSSitem ['enclosure_url'], а размер - в $ myRSSitem ['enclosure_length'].
Обратите внимание, что теги enclosure могут ссылаться на многие типы носителей, поэтому сначала проверьте, является ли тип на самом деле изображением, проверив $ myRSSitem ['enclosure_type'].
Возможно, у кого-то еще есть лучшее предложение, и я уверен, что это можно было бы сделать более элегантно, чтобы выбрать атрибуты из других пустых тегов, но мне нужно было быстрое исправление (сжатые сроки), но я надеюсь, что это может помочь кому-то другому в затруднении !