Zum Inhalt springen

tx_news per Typoscript im Fluid Template ausgeben

Erstellt am 6. Juni 2013 · 5 Antworten · letzte Antwort am 22. September 2015

Tags: Fluid, tx_news, Frage

Cookie4ddict ·

Hallo alle zusammen!

Ich habe da ein Problem das mich doch etwas beschäftigt. Mein Typo3 verwendet die tx_news Extension und ich möchte auf einem Template ohne Benutzerinteraktion IMMER die letzten beiden News als Liste anzeigen lassen (sprich: Überschrift, Teaser, Mehr-Link).
Über Typoscript mit Abholung vom Template per "<f:cObject typoscriptObjectPath="lib.news" funktioniert das auch wunderbar.
Nur sieht das dann absolut nicht so aus wie ich das möchte.

Aus diesem Grund kam die Idee auf, ich übergebe den Inhalt meines Typoscripts per Variable an das Template und lasse dann mit <f:for> eine Schleife drüber laufen um alles nach meinen Wünschen auszugeben. Sprich:

<f:for each="{newsItem}" as "news">
  {news.title}
</f:for>

Nun ist es aber so, dass ich schon das newsItem anscheinend nicht durchkriege. Das newsItem ist ein Partial das ich im eigentlich Template per "<f:render partial="news" />" einbinde. Ich habe sogar schon versucht, ob "<f:render partial="news" arguments="{newsItem: newsItem}" />" etwas bringt da ich zuerst dachte, ich muss die Variable vielleicht noch an das Partial mit übergeben.

Das Typoscript zum erzeugen meiner NewsListe sieht wie folgt aus:

lib.news = USER
lib.news {
  userFunc = tx_extbase_core_bootstrap->run
  extensionName = News
  pluginName = Pi1

  switchableControllerActions {
        News {
          1 = list
        }
  }

  settings < plugin.tx_news.settings
  settings {
    //categories = 49
    // einstellen der maximal anzuzeigenden Beiträge
    limit = 2
       
    // ID der Newsdetailseite
    detailPid = 31
    overrideFlexformSettingsIfEmpty := addToList(detailPid)
        
    // ID des Ordners mit den auszulesenden News
    startingpoint = 129
  }
}

Und hier das Typoscript meines FluidTemplates:

// Definition des FluidTemplates
FluidTemplate = FLUIDTEMPLATE
FluidTemplate {
  
  // definieren der jeweiligen TemplateDatei
  file.stdWrap.cObject = CASE
  file.stdWrap.cObject {
    
    // Template wechseln
    key.data = levelfield:-1, backend_layout_next_level, slide
    key.override.field = backend_layout
    
    // Default Template Datei
    default = TEXT
    default.value = fileadmin/Template/Private/startsite.html
    
    // Template Datei für Backendlayout mit ID 15 (mit GoogleMaps)
    15 = TEXT
    15.value = fileadmin/Template/Private/contentWithMap.html
    
    // Template Datei für Backendlayout mit ID 15 (normale Unterseiten)
    16 = TEXT
    16.value = fileadmin/Template/Private/content.html
  }
  
  // Definition der Ordner für Layout und Partials
  layoutRootPath = fileadmin/Template/Private/Layouts
  partialsRootPath = fileadmin/Template/Private/Partials
  
  // Setzen der für die Ausgabe benötigten Variablen
  variables {
    content < styles.content.get
    content.select.where = colPos = 1
    newsItem < lib.news
  }
}

Korrigiert mich bitte, wenn ich hier was falsch verstanden habe oder sonstiges. Ich bin noch blutiger Typo3 Anfänger und erarbeite mir gerade mit Hilfe von Doku, Videos und Google alles mühsam. Bis zu den News klappte auch alles wunderbar #angry#

Über einen Schubs in die richtige Richtung würde ich mich freuen!

Danke schonmal 🙂

Eure Steffi

Edit:
Hm, die TypoVersion würde euch sicher noch interessieren XD
Entwickelt wird auf Typo3 6.1

Cookie4ddict ·

*Zonk Melodie bitte hier einfügen*

Da hat eine gewisse Dame den Pferdepopo mit dem Kopf verwechselt. Und ja, ich weiß das ist ein Doppelpost, aber vielleicht hilft wem die Lösung die ich 5 Minuten nach diesem Post dann doch gefunden habe.

tx_news hat vordefinierte FluidLayouts im entsprechenden Ordner der Extension (wer den Ordner sucht, in Typo3 6.1 ist das unter "typo3/typo3conf/ext/news/Resources/Private/Partials/" ). Und genau die werden wenn ich das ganze per TypoScript definiere und als cObjekt abhole ebenfalls verwendet.

Die Lösung ist also entweder dort das Template anpassen (was bei Updates ganz doof ist) oder alles woanders hin kopieren, den Pfad per Typoscript überschreiben und entsprechende Templates am gewünschten Ort ablegen und anpassen.

plugin.tx_news.view.layoutRootPath = {PFAD}
plugin.tx_news.view.partialRootPath = {PFAD}
plugin.tx_news.view.templateRootPath = {PFAD}

Ich hab's einfach in mein sowieso schon vorhandenes Script rein:

lib.news = USER
lib.news {
  userFunc = tx_extbase_core_bootstrap->run
  extensionName = News
  pluginName = Pi1

  switchableControllerActions {
        News {
          1 = list
        }
  }

  view < plugin.tx_news.view
  view {
    layoutRootPath = fileadmin/Template/Private/tx_news/Layouts/
    partialRootPath = fileadmin/Template/Private/tx_news/Partials/
    templateRootPath = fileadmin/Template/Private/tx_news/Templates
  }
  
  settings < plugin.tx_news.settings
  settings {
    //categories = 49
    // einstellen der höchstens anzuzeigenden Beiträge
    limit = 2
       
    // ID der Newsseite
    detailPid = 31
    overrideFlexformSettingsIfEmpty := addToList(detailPid)
        
    // ID des Ordners mit den auszulesenden News
    startingpoint = 129
  }
}

Trotzdem danke für's lesen 🙂

Liebe Grüße,
Steffi

Unbekannter Benutzer ·

Sehr gut, dass Du es gelöst hast. Kleiner Nachtrag zum Verständnis für Leser. Die erste Variante kann (leider) nicht klappen weil das TypoScript dir niemals die Liste der News zurück gibt sondern immer das fertige HTML das vom Plugin erzeugt wurde.

nevsred ·

ich füge tx_news auch mit cObject ein.

ich verwende nun aber mittels TSConfig templateLayouts.

tx_news.templateLayouts {
1 = Liste
2 = Latest
}

wie gebe ich dem TS für das cObject denn noch unter settings das templateLayout mit?!

alfredbez ·

Hatte gerade ein ähnliches Problem allerdings mit TYPO3 7.3.

Ich musste die userFunc ändern in

userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run

Eventuell muss man auch vendorName angeben (siehe Link unten, dort die akzeptierte Antwort)

Dieser Stackoverflow-Beitrag hat mir geholfen: http://stackoverflow.com/a/14093526/2123108