Ergebnis 1 bis 4 von 4

Thema: catalog - RSS Feed - Felder

  1. #1
    Contao-Nutzer Avatar von hensmatt
    Registriert seit
    18.11.2010.
    Beiträge
    72

    Frage catalog - RSS Feed - Felder

    Hallo,

    wir nutzen den Contao Catalog für Rezepte, diese wollten wir jetzt auch als RSS Feed anbieten.
    Leider besteht der Feed aber nur aus dem Titel und der Rezeptbeschreibung.
    Bilder oder Zutaten erscheinen nicht im Feed.

    http://www.kochwerte.de/kochwerte-rezepte.xml

    Im an den Post abgehangenen Screenshot kann man das Rezeptbild im Dropdown auch nicht auswählen.
    Das würde aber auch nichts bringen, da ja keine Mehrfachauswahl möglich ist.

    Oder kann man noch an anderer Stelle steuern welche Felder im RSS-Feed erscheinen?


    Grüße Matthias
    Angehängte Grafiken Angehängte Grafiken

  2. #2
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo hensmatt,
    da der Catalog auch nur den Generator von Contao nutzt, ist da erst mal nicht mehr vorgesehen. Da werdet ihr eine eigene mini-Erweiterung für machen müssen.

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  3. #3
    Contao-Nutzer
    Registriert seit
    28.11.2011.
    Beiträge
    15

    Standard

    Hallo bin ich gerade auf der gleiche problem bekommen.

    Keine idee wie kann mann das machen?

  4. #4
    Contao-Nutzer
    Registriert seit
    28.11.2011.
    Beiträge
    15

    Standard

    Hier ist der CatalogExt.php die generiert der RSS feed. Keine idee wie ich kann ein bild von der catalog im eine enclosure transformiren.

    PHP-Code:
    protected function generateFiles(Database_Result $arrCatalog)
        {
            
    // If we do not have a table name, we can not work.
            // This should not happen under normal circumstances but as issue #57 proves, it can happen
            // when activating RSS before saving the catalog.
            
    if(!strlen($arrCatalog->tableName))
                return;
                
            
    $time time();
            
    $strType = ($arrCatalog->feedFormat == 'atom') ? 'generateAtom' 'generateRss';
            
    $strLink strlen($arrCatalog->feedBase) ? $arrCatalog->feedBase $this->Environment->base;
            
    $strFile $arrCatalog->feedName;

            
    $objFeed = new Feed($strFile);

            
    $objFeed->link $strLink;
            
    $objFeed->title $arrCatalog->feedTitle;
            
    $objFeed->description $arrCatalog->description;
            
    $objFeed->language $arrCatalog->language;
            
    $objFeed->published $arrCatalog->tstamp;

            
    // Get default URL
            
    $objParent $this->Database->prepare("SELECT id, alias FROM tl_page WHERE id=?")
                                        ->
    limit(1)
                                        ->
    execute($arrCatalog->jumpTo);

            
    $strUrl $this->generateFrontendUrl($objParent->fetchAssoc(), '/items/%s');

            
    // Get items
            
    $this->import('String');
            
    $where $this->String->decodeEntities($objArchive->searchCondition);
            if(
    strlen($arrCatalog->publishField))
            {
                
    $where.=(strlen($where)? ' AND ':'').$arrCatalog->publishField.'=1';
            }
            
    $datefield=(strlen($arrCatalog->datesource) ? $arrCatalog->datesource 'tstamp');
            
    $objArticleStmt $this->Database->prepare("SELECT * FROM " $arrCatalog->tableName " WHERE pid=? ".(strlen($where)? " AND ".$where "")." ORDER BY " $datefield " DESC");

            if (
    $arrCatalog->maxItems 0)
            {
                
    $objArticleStmt->limit($arrCatalog->maxItems);
            }

            
    $objArticle $objArticleStmt->execute($arrCatalog->id);

            
    // Parse items
            
    while ($objArticle->next())
            {
                
    $objItem = new FeedItem();
                
    $objItem->title $objArticle->{$arrCatalog->titleField};
                
    $objItem->description = (strlen($arrCatalog->source) ? $objArticle->{$arrCatalog->source} : '');
                
    $objItem->link $strLink $this->getLink($arrCatalog->jumpTo$objArticle$strUrl$arrCatalog->aliasField);
                
    $objItem->published $objArticle->$datefield;
                
    $objFeed->addItem($objItem);
            }
            
            
    // Create file
            
    $objRss = new File($strFile '.xml');
            
    $objRss->write($this->replaceInsertTags($objFeed->$strType()));
            
    $objRss->close();
        } 


    Hier ist der Feed.php (nur RRS wo man kann sehen wie der RSS generator macht eine enclosure (bild) ins der XML file.

    PHP-Code:
        /**
         * Generate an RSS 2.0 feed and return it as XML string
         * @return string
         */
        public function generateRss()
        {
            $this->adjustPublicationDate();

            $xml  = '<?xml version="1.0" encoding="' . $GLOBALS['TL_CONFIG']['characterSet'] . '"?>';
            $xml .= '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">';
            $xml .= '<channel>';
            $xml .= '<title>' . specialchars($this->title) . '</title>';
            $xml .= '<description>' . specialchars($this->description) . '</description>';
            $xml .= '<link>' . specialchars($this->link) . '</link>';
            $xml .= '<language>' . $this->language . '</language>';
            $xml .= '<pubDate>' . date('r', $this->published) . '</pubDate>';
            $xml .= '<generator>Contao Open Source CMS</generator>';
            $xml .= '<atom:link href="' . specialchars($this->Environment->base . $this->strName) . '.xml" rel="self" type="application/rss+xml" />';

            foreach ($this->arrItems as $objItem)
            {
                $xml .= '<item>';
                $xml .= '<title>' . specialchars($objItem->title) . '</title>';
                $xml .= '<description><![CDATA[' . preg_replace('/[\n\r]+/', ' ', $objItem->description) . ']]></description>';
                $xml .= '<link>' . specialchars($objItem->link) . '</link>';
                $xml .= '<pubDate>' . date('r', $objItem->published) . '</pubDate>';
                $xml .= '<guid>' . ($objItem->guid ? $objItem->guid : specialchars($objItem->link)) . '</guid>';

                // Enclosures
                if (is_array($objItem->enclosure))
                {
                    foreach ($objItem->enclosure as $arrEnclosure)
                    {
                        $xml .= '<enclosure url="' . $arrEnclosure['url'] . '" length="' . $arrEnclosure['length'] . '" type="' . $arrEnclosure['type'] . '" />';
                    }
                }

                $xml .= '</item>';
            }

            $xml .= '</channel>';
            $xml .= '</rss>';

            return $xml;
        }

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •