it-swarm.com.de

Mein eigener Karussell-Feed kann seit der Aktualisierung auf 3.4.1 keine RSS-Bilder mehr anzeigen

Ich habe das Feed-Anzeigemodul (mod_feed) von Joomla für meine Bedürfnisse gegabelt. Es hat gut funktioniert, bis ich meine Site von 3.3.6 auf 3.4.1 aktualisiert habe.

Ich habe eine Nachrichtenquelle, die ich auf meiner Joomla-Site angezeigt habe. RSS-Feed ist wie folgt:

<channel>
    <title>Zkanoca</title>
    <atom:link href="http://example.com/?feed=rss2" rel="self" type="application/rss+xml" />
    <link>http://example.com</link>
    <description>Zkanoca loves you</description>
    <lastBuildDate>Fri, 27 Mar 2015 06:02:13 +0000</lastBuildDate>
    <language>tr-TR</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <generator>http://wordpress.org/?v=4.1</generator>
    <item>
        <title>My news title 1</title>
        <link>http://example.com/?p=142862</link>
        <comments>http://example.com/?p=142862#comments</comments>
        <pubDate>Thu, 26 Mar 2015 11:43:56 +0000</pubDate>
        <dc:creator><![CDATA[Zkanoca]]></dc:creator>
        <category><![CDATA[News]]></category>
        <category><![CDATA[General]]></category>
        <guid isPermaLink="false">http://example.com/?p=142862</guid>
        <description><![CDATA[Some text is here]]></description>
        <content:encoded><![CDATA[<p>Some text is here</p>
        <a href='http://example.com/?attachment_id=142863'><img width="150" height="150" src="http://example.com/wp-content/uploads/2015/03/0124-150x150.jpg" class="attachment-thumbnail" alt="01" /></a>
        <a href='http://example.com/?attachment_id=142864'><img width="150" height="150" src="http://example.com/wp-content/uploads/2015/03/0224-150x150.jpg" class="attachment-thumbnail" alt="02" /></a>]]></content:encoded>
        <wfw:commentRss>http://example.com/?feed=rss2&#038;p=142862</wfw:commentRss>
        <slash:comments>0</slash:comments>
        <picture>http://example.com/wp-content/uploads/2015/03/0124.jpg</picture>   
    </item>
    .
    .
    .
</channel>

Tatsächlich,

<picture>http://example.com/wp-content/uploads/2015/03/0124.jpg</picture>

teil war nicht in Original-Feed-XML. Ich habe es mit einem kleinen Hack auf Wordpress hinzugefügt.

Ich habe das mod_feed-Modul von Joomla geändert, um ein gleitendes Nachrichtenmodul zu haben, das die Karussellkomponente von Bootstrap verwendet.

Es hat gut funktioniert. Aber nachdem ich die Website aktualisiert habe <picture> Der Knoten ist leer, sodass das Karussell das Bild der Nachricht nicht anzeigen kann.

Ich habe versucht zu suchen, was aus dem Joomla API-Verzeichnis geändert wurde. Konnte aber keinen Anhaltspunkt finden.

Ich versuche, das Bild mit dieser Zeile anzuzeigen:

<img src="<?php echo $feed[$i]->picture; ?>" alt="<?php echo $feed[$i]->title; ?>" />

und es wird ausgegeben als

<img src="/" alt="My news title 1" />

Vor der Aktualisierung wurde das Bild ordnungsgemäß angezeigt. Mein Karussellcode lautet wie folgt:

<div class="carousel-inner">
    <?php
        $active = 'active';
        for ($i = 0; $i < $params->get('rssitems', 5); $i++) :
            if (!$feed->offsetExists($i)) {break;}
            $uri = (!empty($feed[$i]->uri) || !is_null($feed[$i]->uri)) ? $feed[$i]->uri : $feed[$i]->guid;
            $uri = substr($uri, 0, 4) != 'http' ? $params->get('rsslink') : $uri; ?>
            <div class="item <?php echo $active; ?>">
                <img src="<?php echo $feed[$i]->picture; ?>" alt="<?php echo $feed[$i]->title; ?>" />
                <div class="container">
                    <div class="carousel-caption">
                        <h2><a href="<?php echo $feed[$i]->uri; ?>" target="_blank"><?php echo $feed[$i]->title; ?></a></h2>
                    </div>
                </div>
            </div>
        <?php 
             $active = ''; 
              endfor; 
        ?>
1
zkanoca

Nach einer eingehenden Untersuchung habe ich festgestellt, dass ich libraries/joomla/feed/feed.php Geändert habe und dem Array $properties Den Schlüssel picture hinzugefügt habe:

    protected $properties = array(
    'uri' => '',
    'title' => '',
    'updatedDate' => '',
    'description' => '',
    'categories' => array(),
    'contributors' => array(),
    'picture' => '' //this line
);

Ich habe auch festgestellt, dass ich libraries/joomla/feed/parser/rss.php Geändert hatte. Schlüssel wurden hinzugefügt bzw. wo nötig. Beispielsweise:

//line 112
protected function handlePicture(JFeed $feed, SimpleXMLElement $el) {
    $feed->picture = (string) $el;
}

...


//line 355
    protected function processFeedEntry(JFeedEntry $entry, SimpleXMLElement $el) {
    $entry->uri = (string) $el->link;
    $entry->title = (string) $el->title;
    $entry->publishedDate = (string) $el->pubDate;
    $entry->updatedDate = (string) $el->pubDate;
    $entry->content = (string) $el->description;
    $entry->guid = (string) $el->guid;
    $entry->comments = (string) $el->comments;
    $entry->picture = (string) $el->picture;

Nach dem Ändern der Dateien der aktuellen Version gemäß der vorherigen Version funktioniert es jetzt.

0
zkanoca