web-dev-qa-db-fra.com

Mon propre flux de carrousel ne peut pas afficher les images RSS depuis la mise à jour à 3.4.1

J'ai ajouté le module d'affichage de flux de Joomla (mod_feed) à mes besoins. Cela fonctionnait bien jusqu'à ce que j'ai mis à jour mon site de 3.3.6 à 3.4.1.

J'ai une source d'informations que j'ai affichée sur mon site Joomla. Le flux RSS est le suivant:

<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>

Réellement,

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

la partie n'était pas dans le flux original XML. Je l'ai ajouté avec un petit bidouillage sur Wordpress.

J'ai changé le module mod_feed de Joomla afin d'avoir un module de nouvelles glissant, utilisant le composant carrousel de Bootstrap.

Cela fonctionnait correctement. Mais après avoir mis à jour le site web <picture> noeud est vide, le carrousel ne peut donc pas afficher la photo.

J'ai essayé de rechercher ce qui a été modifié depuis le répertoire de l'API Joomla. Mais ne pouvait pas trouver un indice.

J'essaie d'afficher l'image en utilisant cette ligne:

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

et il sort comme

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

Avant de le mettre à jour, la photo était correctement affichée. Mon code de carrousel est le suivant:

<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

Après une enquête approfondie, j'ai découvert que j'avais modifié libraries/joomla/feed/feed.php ajoutant picture clé à la $properties tableau:

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

J'ai aussi constaté que j'avais changé libraries/joomla/feed/parser/rss.php Touches ajoutées, le cas échéant. Par exemple:

//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;

Après modification des fichiers de la version actuelle par rapport à ceux de la version précédente, cela fonctionne maintenant.

0
zkanoca