Zum Inhalt springen

Wraps entfernen wegen RSS-Ausgabe

Erstellt am 5. August 2010 · 8 Antworten · letzte Antwort am 16. August 2010

Tags: Frage

pow ·

Hallo,

ich steh momentan auf dem Schlauch. Ich verwende für dieses Projekt Templavoila, wobei ich denke das es damit nichts mehr zu tun hat.
Vielleicht liegts auch am neuen TYPO 4.4.

Ich möchte via Plugin einen RSS-Feed erzeugen. Funktioniert, bis auf das der Inhalt noch mit DIVs umzogen ist:

<div id="c449" class="csc-default" ><h1>Aktuelles RSS</h1>
		
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
...

Mein TYPOSCRIPT:

RSSpage = PAGE
RSSpage {
	typeNum = 888
	config {
	    disableAllHeaderCode = 1
	    additionalHeaders = Content-type:text/xml
	    no_cache = 1
	    xhtml_cleaning = 0
	    disablePrefixComment = 1
	    language = de
	    locale_all = de_DE
	    linkVars = L
	    sys_language_uid = 0
	    sys_language_mode = strict
	    sys_language_overlay = hideNonTranslated
	}
	30 = COA
	30 {
		10 = CONTENT
		10.table = tt_content
		10.select {
			where = uid = 449
			pidInList = 46
	  	}
	}
}
Shark1982 ·

Denke auch das TV hiermit nicht zu tun hat

Für dein Problem gibt es mehrere Alternativen

Du kannst mittels stdWrap.stripHtml = 1 auf das CONTENT Objekt auch komplett die Inhalte von HTML befreien

Eine andere Alterantive ist mit CDATA Blöcken zu arbeiten tust innerhalb der Wraps.

Ich hab unten mal ein Beispiel von einer meiner Projekte dran gehängt wo es drum ging eine RSS Feed Ansicht einer Extension zu generiern.
Damit wird es denk ich transparenter

xml = PAGE
xml.typeNum = 0
xml {
    config {
         disableCharsetHeader = 1
         disableAllHeaderCode = 1
         admPanel = 0
         additionalHeaders = Content-Type: application/xml; charset=UTF-8
         doctype = none
    }
     stdWrap.wrap3 (
      <?xml version="1.0" encoding="UTF-8"?>|
     )
     stdWrap.wrap2 (
       <rss version="2.0">
       <channel>
       |
       </channel>
       </rss>      
      
      
     
     )
     
     10 = CONTENT
     10.table = tx_julleevents_events
     10.select {
         pidInList = {$plugin.tx_julleevents_pi1.dataStorage}
         where = uid > 0
         orderBy = date ASC
         andWhere {
                     data = date:U
                     wrap = tx_julleevents_events.date > |
               }
         
     }
     10.stdWrap.prepend = COA
     10.stdWrap.prepend {
     
           10 = TEXT
           10.value (
                   
                   <title>{$plugin.tx_julleevents_pi1.rssTitle}</title>

                   <link>{$plugin.tx_julleevents_pi1.rssSiteLink}</link>
                   <description>Wir bieten ihnen exklusiv auch unser Veranstaltungsprogramm als RSS Feed an</description>
                   <language>de</language>
                   
                  
          )
          10.postCObject = TEXT
          10.postCObject.data = date: d. m. Y  
          10.postCObject.wrap (
                    <pubDate>|</pubDate>
          )
          10.insertData = 1
     }
     
     10.renderObj = COA
     10.renderObj {
          5 = LOAD_REGISTER
          5 {
             desc.cObject = TEXT
             desc.cObject.field = teaser
             desc.cObject.HTMLparser = 1
             desc.cObject.HTMLparser {
                  keepNonMatchedTags = 1
                  allowTags = *
                  removeTags = font, br
                  tags {
                       h2.remap = h3
               
                  }
            
            
             }
             desc.cObject.wrap =  <![CDATA[<blockquote>|</blockquote><hr>]]>
           
             datum.cObject = TEXT
             datum.cObject.field = date
             datum.cObject.date = d. m. Y
            
             title.cObject = TEXT
             title.cObject.field = title
             title.cObject.htmlSpecialChars = 1
          }
         
          10 = TEXT
          10.dataWrap (

                    
             <item>
                    <title>
                        {register:datum} : {register:title}
                    </title>
                    <description>
                   
                          {register:desc}
                    
                    </description>
            </item>
                )
          }
         
          
}
pow ·

Puhh...nicht das ich deine Antwort nicht zu schätz weis, aber das ist schon ziemlich komplex wenn man es selbst nicht gebaut hat 😉 das auf meine Extension umzumodeln.
Wenn ich dem Ziel nicht schon so nahe wäre, würde ich das probieren.

Es geht lediglich um 2 Divs ;-)

Ging das nicht einfach mit "styles.content >" oder so ähnlich?

Grüße & Danke

Shark1982 ·

Wenns dir nur um das geht
<div id="c449" class="csc-default" ><h1>Aktuelles RSS</h1>

tt_content.header > und so das solltest du dann in eine Condition alles einbauen.
Mein Beispiel war garnicht so komplex find ich, natürlich sollte nab TS und seine Möglichkeiten schon verstehen

pow ·

Hi,

ich habs jetzt geschafft, jetzt ist nur noch der Anker drin, den bekomm ich nicht weg:

RSSpage = PAGE
RSSpage {
  typeNum = 888
  config {
      disableAllHeaderCode = 1
      additionalHeaders = Content-type:text/xml
      no_cache = 1
      xhtml_cleaning = 0
      disablePrefixComment = 1
      language = de
      locale_all = de_DE
      linkVars = L
      sys_language_uid = 0
      sys_language_mode = strict
      sys_language_overlay = hideNonTranslated
  }
  30 = COA
  30 {
    10 = CONTENT
    10.table = tt_content
    10.select {
      where = uid = 449
      pidInList = 122
      }
  }  
}

Ergibt:

<a id="c449"></a>
		
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
	<item>
		
			<title>Testtest</title>
			...
	</item>
</channel>
</rss>

Und ich habe schon mit "tt_content.stdWrap.dataWrap = " gespielt, aber keine Chance.

Ich kenn mich mit Typoscript schon aus, nur verwirrt mich das CONTENT Object, und ich weis nicht woher er das gewrape zugewiesen bekommt. Auch mit "css_styled_content >" funktioniert es nicht alles abzuschalten.

Grüße!

Shark1982 ·

Für Sowas gibts den Template Analyzer ja auch.

Probier doch mal so steht das zumindest in ner 4.2 bei mir . Kann sein das noch stdWrap davor muss ist aber nen TEXT Objekt da ist das nicht nötig

tt_content.prepend = TEXT
tt_content.prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
tt_content.prepend.if.isTrue.field = _LOCALIZED_UID
pow ·

So gehts aber auch nicht

RSSpage = PAGE
RSSpage {
  tt_content.prepend.dataWrap >
  typeNum = 888
  config {
      disableAllHeaderCode = 1
      additionalHeaders = Content-type:text/xml
      no_cache = 1
      xhtml_cleaning = 0
      disablePrefixComment = 1
      language = de
      locale_all = de_DE
      linkVars = L
      sys_language_uid = 0
      sys_language_mode = strict
      sys_language_overlay = hideNonTranslated
  }
  30 = COA
  30 {
    10 = CONTENT
    10.table = tt_content
    10.select {
      where = uid = 449
      pidInList = 122
      }
    10.tt_content.prepend.dataWrap >
    10.prepend.dataWrap >
  }  
}
pow ·

Ok, ich probier es nun ganz anderst, ich lese es direkt aus der DB.
Jetzt hakt es nur noch an den fehlenden Umbrücken.

CRSS= PAGE
CRSS{
  typeNum = 888
  config {
      disableAllHeaderCode = 1
      additionalHeaders = Content-type:text/xml
      no_cache = 1
      xhtml_cleaning = 0
      disablePrefixComment = 1
      language = de
      locale_all = de_DE
      linkVars = L
      sys_language_uid = 0
      sys_language_mode = strict
      sys_language_overlay = hideNonTranslated
  }
  30 = COA
  30 {
    5 = TEXT
    5.value (
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
    
    )
   
    10 = CONTENT
    10.table = tx_custref_reference
    10.select.pidInList = 45
    10.select.orderBy = uid

    10.renderObj = TEXT
    10.renderObj.dataWrap (
<title><![CDATA[{field:title}]]></title>
<link>http://www.demo.de/index.php?id?={field:uid}</link>
<pubDate><![CDATA[{field:tstamp}]]></pubDate>
    )
  
    100 = TEXT
    100.value (
</channel>
</rss>
    )
  }  
  
}

Ergibt:

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
    <title><![CDATA[Überschrift]]></title>
<link>http://www.demo.de/index.php?id?=10</link>
<pubDate><![CDATA[1277205941]]></pubDate><title><![CDATA[Überschrift]]></title>
<link>http://www.demo.de/index.php?id?=11</link>
<pubDate><![CDATA[1260454993]]></pubDate><title><![CDATA[Überschrift]]></title>
<link>http://www.demo.de/index.php?id?=12</link>
<pubDate><![CDATA[1260547765]]></pubDate><title><![CDATA[Überschrift]]></title>
<link>http://www.demo.de/index.php?id?=13</link>
<pubDate><![CDATA[1260545164]]></pubDate>
</channel>
</rss>

Wie schaffe ich es das er nach dem pubDate immer einen Absatz einfügt?

Grüße

pow ·

Hat sich erledigt! ich hatte einen Rechtschreibfehler im <item></iitem>

jetzt funktionierts!

Danke für die Geduld!