Zum Inhalt springen

Contentelement Header in ein temp-Objekt einbinden

Erstellt am 23. Dezember 2005 · 13 Antworten · letzte Antwort am 14. Januar 2006

Tags: Frage

mafl ·

Ich habe laut Dok der tt_news die "default news id" ausgeblendet und lass mir die letzte News anzeigen. Nun hatt das ganze aber einen Schönheitsfehler: Der gesamte (zusätzliche) Content wird nach der News eingebunden. Ich möchte aber das Inhaltelement "Überschrift" vor die News einbauen.

Leider stehe ich momentan auf der Leitung wie ich dieses Element anspreche. Bitte um Hilfe.

Zur Verdeutlichung hier noch eine andere Beschreibung:

Ich habe:
NewsNewsNewsNewsNewsNewsNewsNewsNews
NewsNewsNewsNewsNewsNewsNewsNewsNews
NewsNewsNewsNewsNewsNewsNewsNewsNews
ÜBERSCHRIFT
TEXT

Ich möchte:
ÜBERSCHRIFT
NewsNewsNewsNewsNewsNewsNewsNewsNews
NewsNewsNewsNewsNewsNewsNewsNewsNews
NewsNewsNewsNewsNewsNewsNewsNewsNews
TEXT

mein TS (laut tt_news Doku):
plugin.tt_news.singlePid = 5

# den Inhalt der Hauptspalte in ein Temp-Objekt einfügen
tmp.pagecontent < page.10.marks.CONTENT

# Löschen des Inhaltes der Hauptspalte
page.10.marks.CONTENT >

# Ein neues Objekt für die Hauptspalte anlegen (als content-object-array)
page.10.marks.CONTENT = COA
page.10.marks.CONTENT {

10 = CONTENT
10.table = tt_news
10.select {
# Alle pid aus denen News geholt werden sollen angeben
# das Rekursiv-Feld hat keinen Einfluß auf diese Auswahl
pidInList = 31
orderBy = datetime desc
max = 1
where = type = 0
}
# Einfügen des Objektes "10." (nur wenn keine SINGLE news ausgewählt)
10.stdWrap.if.isFalse.data = GPvar:tx_ttnews|tt_news
# Einfügen des oben erstellten Temp-Objektes hinter der News
20 < tmp.pagecontent
}

ich bräuchte also sowas wie:
tmp.pagecontentHeader < page.10.marks.CONTENT.header

den ich dann mit:
5 < tmp.pagecontentHeader vor dem Newselement einbaue

UND ich muß ihn aus tmp.pagecontent löschen damit er nicht zweimal dasteht.

Vielen Dank für eure Hilfe
und Frohe Weihnachten an alle

theis ·

hallo,

da musst du die Template-Datei "news_template.tmpl" im order typo3conf/ext/tt_news/pi/ bearbeiten.

gruss theis

Sino ·

oder du erzeugst eine kopie von dem news_template, legst es ins fileadmin rein und überschreibst die Typoscript konfiguration von content.file und setzt den Pfad zu dem news_template im fileadmin. (Damit man nicht gleich die ganze extension schreddert)

Mfg

Sino

theis ·

das wäre dann die Schlussfolgerung meiner Tat gewesen, aber immer schön eins nach dem andern 😃 😃 😃

*lol*

gruss theis

mafl ·

Danke für eure Bemühungen.
Aber entweder ich kann mich nicht mitteilen, oder ich stehe total auf dem Schlauch.
Wieso muß ich das News-Template bearbeiten? Die News an sich wird ja genau so dargestellt wie ich möchte.

Ich versuche nochmal mein Problem genauer zu beschreiben:
Ich habe mehrere Contentelemente auf meiner Seite (sollen variabel und von Redakteur veränderbar bleiben):
1: eine Überschrift
2: das News-Plugin
3: Text mit Bild

Wenn ich nun in der LATEST Ansicht auf eine News klicke wird die Seite richtig angezeigt. Also:
1: eine Überschrift
2: die News (das News-Plugin)
3: Text mit Bild

Wenn ich aber über einen Link in der Hauptnavigation auf die Newsseite gehe (keine Auswahl einer speziellen News) passiert folgendes:
2: die News (das News-Plugin)
1: eine Überschrift
3: Text mit Bild

Das passiert eben weil ich mir aus der Datenbank die letzte News hole und diese anzeigen lasse.

10 = CONTENT
10.table = tt_news
10.select {
# Alle pid aus denen News geholt werden sollen angeben 
# das Rekursiv-Feld hat keinen Einfluß auf diese Auswahl
pidInList = 31
orderBy = datetime desc
max = 1
where = type = 0
}

Vorher wird der Seitencontent (1: eine Überschrift; 3: Text mit Bild) in ein temp-Objekt gelegt

tmp.pagecontent < page.10.marks.CONTENT

und dann HINTER der News wieder eingefügt.

 Einfügen des Objektes "10." (nur wenn keine SINGLE news ausgewählt)
10.stdWrap.if.isFalse.data = GPvar:tx_ttnews|tt_news
# Einfügen des oben erstellten Temp-Objektes hinter der News 
20 < tmp.pagecontent

Mein Problem ist die Realisierung eines differenzierten Zugriffs auf die vorhandenen Contentelemente "1: eine Überschrift" und "3: Text mit Bild".
Also sowas wie (funktioniert nicht):

tmp.pagecontentHeader < page.10.marks.CONTENT.header
(das Contentelement Überschrift)
tmp.pagecontentText < page.10.marks.CONTENT.text
(das Contentelement Text mit Bild)

und das baue ich dann so wieder zusammen:

5 < tmp.pagecontentHeader
Einfügen des Objektes "10." (nur wenn keine SINGLE news ausgewählt)
10.stdWrap.if.isFalse.data = GPvar:tx_ttnews|tt_news
# Einfügen des oben erstellten Temp-Objektes hinter der News 
20 < tmp.pagecontentText

Ich hoffe ich habe klarer beschrieben was ich möchte. Falls die Lösung doch im ändern des Templates liegt bitte ich um detailiertere Beschreibung wie ich das Template verändern muß.

Danke
Martin

theis ·

Warum bastelst du eigentlich im Typoscript rum???
Lass doch einfach alles so wie es ist und schmeiss einfach das Plugin rein!

gruss theis

mafl ·

Leider ist die Seite noch nicht soweit das ich sie online stellen kann (darf).
Ich habe aber in einer anderen Seite das Problem nachgestellt (nur temporär, werde ich wieder zurückstellen):
http://www.werkstaette-walder.at.
Unter dem Menüpunkt "Unternehmen" gibt es "Aktuelle Themen" mit einem Weihnachtsgruß. Wenn ich dort auf [mehr] klicke komme ich auf die Newsseite so wie sie gehört (1: Textelement; 2: News).
Es gibt auch die Möglichkeit die Newsseite "direkt" über das Hauptmenü aufzurufen. Wenn ich das mache wird der Weihnachtsgruß auch angezeigt allerdings vor dem Textelement - und das soll nicht sein.

Warum ich im Typoscript rumbastle ist einfach:
Laut Dokumentation kann ich mir die letzte News anzeigen lassen wenn ich keine spezielle News auswähle und damit das "Keine News_id übergeben" vermeiden. Das funktioniert auch, bis auf den kleinen Schönheitsfehler daß eben der restliche Content nur nach der News eingebunden wird.
Aber ich muß doch irgendwie auf einzelne Contentelemente zugreifen können um die Seite so zu rendern wie sie sein soll.
Irgendwie habe ich das Gefühl das ich da wieder einiges lernen kann. 🙂

Danke für Deine Geduld.
Martin

theis ·

ok,

soweit ich das richtig verstehe, musst du die News als plugin einfügen, und nicht direkt via page.10.....

du must deine veränderungen also auch unter plugin.tt_news... vornehmen.

gruss theis

mafl ·

Hallo Theis,

entschuldige die späte Antwort, hatte viel um die Ohren die letzten Tage.
Ich bin mir nicht sicher, ob ich deinen letzten Hinweis richtig verstanden habe. (natürlich habe ich die News als Plugin eingefügt, aber das Inhaltselement "Überschrift" hat ja nichts mit dem Inhaltselement "Plugin einfügen -> News" zu tun, deshalb brauche ich doch das page.10....., oder?)
Jedenfalls habe ich eine wenn auch nicht 100% zufriedenstellende Lösung:
Hier der Code (im root-Template als Bedingung für die Newsseite (id=5)):

##########################################
#AUSWAHL NEWS                                                             #
##########################################
[globalVar = TSFE:id=5]
# .....und zeigt die letzte eingetragene News an
# Einstellen der tt_news singlePid auf die aktuelle Seite
plugin.tt_news.singlePid = 5
 
# den Inhalt der Hauptspalte in ein Temp-Objekt einfügen
tmp.pagecontent < page.10.marks.CONTENT
 
# Löschen des Inhaltes der Hauptspalte
page.10.marks.CONTENT >
 
# Ein neues Objekt für die Hauptspalte anlegen (als content-object-array)
page.10.marks.CONTENT = COA
page.10.marks.CONTENT {

# Die Überschrift des ersten Contentelements. (auch wenn versteckt)
# In diesem Fall die versteckte Überschrift des NewsPlugin
  5 = CONTENT
  5.table = tt_content
  5.select {
   pidInList=this
   orderBy = sorting
   where = colPos=0
   begin = 0
   max = 1
  }
  5.renderObj = TEXT
  5.renderObj.field = header
  5.renderObj.wrap = <h1>|</h1>

# Die erste bzw. letzte News
  10 = CONTENT
  10.table = tt_news
  10.select {
# Alle pid aus denen News geholt werden sollen angeben 
# das Rekursiv-Feld hat keinen Einfluß auf diese Auswahl
    pidInList = 31
    orderBy = datetime desc
    max = 1
    where = type=0
  }
# Einfügen des Objektes "10." (nur wenn keine SINGLE news ausgewählt)
  10.stdWrap.if.isFalse.data = GPvar:tx_ttnews|tt_news
# Einfügen des oben erstellten Temp-Objektes hinter der News  
  20 < tmp.pagecontent
}
[global]

Deshalb nicht 100% zufriedenstellend, weil ich "nur" auf die Überschrift des ersten Contentelements zugreife (egal ob versteckt oder nicht).
Lieber wäre mir ich könnte auf das gesamte erste Contentelement zugreifen (nur wenn es eingeblendet ist).
Aber es wird wohl so auch reichen (müssen).
Also nochmal vielen Dank.

p.s. Sollte irgendjemand von euch in Zukunft mal eine Lösung finden wäre ich froh wenn er die hier posten würde.

theis ·

hallo mafl,

nein, ich habe meine news auch auf jeder seite trotzdem mache ich folgendes:

page.10.marks.CONTENT.10 < plugin.tt_news
page.10.marks.CONTENT.10 {
  code >
  code = LATEST
  }

wie du hier siehst, habe ich das plugin eingefügt und es dann nach meinen wünschen angepasst.

gruss theis

mafl ·

Ahh! (Grosses Lichtaufgehn!) o.O

Aber wie verhält sich das bei Dir, wenn du auf die SINGLE-Ansicht über einen LATEST-Link kommst?

Das ist ja die Möglichkeit die ich ebenfalls erhalten möchte (auf einer Seite)

Vielleicht kannst du mir da mal einen Auszug (möglicherweise etwas umfangreicher) aus deinem TS zur Verfügung stellen.
Auf alle Fälle werde ich mit Deinem Ansatz mal rumspielen.
Vielen Dank

theis ·

weiss nicht ob dir es hilft, aber kann mal alles posten:

plugin.tt_news {
  pid_list = 23
  singlePid = 27

  archiveTypoLink.parameter = 26

  displaySingle.image.imageLinkWrap.width >
  displaySingle.image.file.maxH >
  displaySingle.image.imageLinkWrap.height = 700
  displayLatest.image.imageLinkWrap < plugin.tt_news.displaySingle.image.imageLinkWrap
  displayList.image.imageLinkWrap < plugin.tt_news.displaySingle.image.imageLinkWrap

}

plugin.tt_news.templateFile = fileadmin/template/tmpl/tt_news.htm

temp.news < plugin.tt_news
temp.news {
  code >
  code = LATEST
  }

page.10.subparts.POS-BORDER.20 < temp.news

in der datei tt_news.htm sieht single und latest wie folgt aus:

<!-- ###TEMPLATE_LATEST### begin
	This is the template for the latest news, typically displayed on a frontpage 
-->
<div class="box news-latest">
	<div class="box-title">###LATEST_HEADER###</div>
	<div class="box-content">
	<!-- ###CONTENT### begin
		  This is the part of the template substituted with the list of news: 
	-->
		<!-- ###NEWS### begin 
			Template for a single item 
		-->
				<div class="right small">###NEWS_DATE### ###NEWS_TIME###<br />###TEXT_CAT_LATEST### ###NEWS_CATEGORY###</div>

				<h3>###NEWS_TITLE###</h3>
				###NEWS_IMAGE###
				###NEWS_SUBHEADER###
        <!--###LINK_ITEM###-->###MORE###<!--###LINK_ITEM###-->
<hr />
		<!-- ###NEWS### end-->		
	<!-- ###CONTENT###  end -->
<div class="news-latest-gotoarchive"><!--###LINK_ARCHIVE###-->###GOTOARCHIVE###<!--###LINK_ARCHIVE###--></div>
</div>
</div>
<!-- ###TEMPLATE_LATEST### end -->




<br />
<br />
<br />
<br />
<hr />
<br />
<br />
<br />
<h3>TEMPLATE_SINGLE</h3>
<em>This subpart is used to display single news items</em><br />
<br />

<br />

<!-- ###TEMPLATE_SINGLE### begin
	This subpart is used to display single news items
-->

<div class="news-single-item">
  <div class="box news-single-infos">
<div class="box-title">Infos</div> Datum: ###NEWS_DATE### ###NEWS_TIME### <br /> ###TEXT_NEWS_AGE### ###NEWS_AGE### ###NEWS_AUTHOR### ###CATWRAP_B### ###TEXT_CAT### ###NEWS_CATEGORY### ###NEWS_CATEGORY_IMAGE### ###CATWRAP_E###</div>
  <h1>###NEWS_TITLE###</h1>
  ###NEWS_SUBHEADER###
  ###NEWS_IMAGE### 
	###NEWS_CONTENT###
  <hr class="clear" />

	###ADDINFO_WRAP_B###
			  
 	###TEXT_RELATED###
 	###NEWS_RELATED###
	
	###TEXT_FILES###
 	###FILE_LINK###				  
		
	###TEXT_LINKS###
	###NEWS_LINKS###
			
	###TEXT_RELATEDBYCATEGORY###
	###NEWS_RELATEDBYCATEGORY###

	###ADDINFO_WRAP_E###
	
  ###NEWS_SINGLE_PAGEBROWSER###
  <hr />
	<div class="news-single-backlink">	
	<!--###LINK_ITEM###-->###BACK_TO_LIST###<!--###LINK_ITEM###-->
	</div>
</div>		
<!-- ###TEMPLATE_SINGLE### end -->

ich hoffe es hilft dir etwas.

es ist gleich ob ich über latest oder list zu single komme.

gruss theis