Hallo zusammen,
ich habe mein Template mit TemplateVoila erstellt und es wurden einige "Image fields" beim mapping erstellt. Nun kann ich über "Bearbeite Seiten-Header" entsprechende Grafiken hochladen oder aus dem fileadmin auswählen und diese auf der Website anzeigen lassen. Das klappt alles wunderbar.
Ist es möglich, bzw. wie ist es möglich, diese Bilder auf hierarchisch tiefer liegende Seiten zu vererben? Der Backendbenutzer soll einmal auf "oberster Ebene" ein Bild angeben, dieses soll solange "nach unten vererbt werden" bis ein neues Bild über den Seiten-Header definiert wird.
Vielen Dank für Eure Hilfe,
Gruß m0rdiN
Mit levelmedia: -1, "slide" ist das möglich.
Hier mal ein TS Schnippsel, wie ich das einsetze:
subparts.LOGO_LEFT = COA
subparts.LOGO_LEFT {
10 = IMAGE
10.file.maxW = 220
10.file.import {
cObject = TEXT
cObject.value = .../fallback_grafik.jpg
cObject.override {
required = 1
data = levelmedia: -1, "slide"
wrap = uploads/media/ |
listNum = 0
}
}
10.wrap = |
}
Hallo maik,
vielen Dank für Deine schnelle Antwort, jedoch ist dies noch nicht die Lösung die ich suche.
Aus zwei Gründen:
1.) Ich beutze in TemplateVoila ein "Image-Field" und keinen Typoscript objectpath, daher weiss ich nicht, wie ich das Bild im TS adressieren soll.
2.) Der Redakteur muss die Möglichkeit haben, auf bestimmten Unterseiten das Bild zu ändern. Dieses Bild muss dann wiederum auf die weiteren Unterseiten vererbt werden.
Viele Grüße,
m0rdiN!
Hallo zusammen,
das selbe Problem habe ich auch.
data = levelmedia funktoniert nur mit der Option Dateien in den Header Einstellungen. So wie man es mit klassichen emplates angeht.
Es kann ja kein Einzelfall sein, unser Problem. Ich würde mich über einen Lösungsvorschlag sehr freuen. Ansonsten muss ich es wieder als ts Object einbinden und über Dateien: auswählen.
Grüße
Florian
2.) Der Redakteur muss die Möglichkeit haben, auf bestimmten Unterseiten das Bild zu ändern. Dieses Bild muss dann wiederum auf die weiteren Unterseiten vererbt werden.
Das funktioniert problemlos.
Korrekt, das Bild muss im Page-Header eingefügt werden. Aber das geht ja auch in TV.
Wenn du das mit Inhaltselementen machen möchtest, müßte das auf gleichem/ähnlichem Weg auch funktionieren. Allerdings wird es bei TV etwas komplizierter, da auf deine Image-Bereiche anders zugegriffen wird.
Ohne TV kann man ja einfach tt_content where colpos=1 machen, um an die Inhalte aus bestimmten Spalten zu gelangen. Das ist bei TV auch möglich, aber aufwendiger, da du das über XML machen musst.[/quote]
Hallo zusammn,
leider habe ich das Problem mit der "Bildvererbung" immer noch nicht gelöst. Ich benutze für meine Seite TemplateVoila mit FCE's. Im XML der Datastructure habe ich nun folgenden Eintrag vorgenommen:
10 = IMAGE
10.file.maxW = 760
10.file.import {
cObject = TEXT
cObject.value = fileadmin/images/Headerbilder/FHDSchild_760x50_20060228.jpg // default bild
cObject.override {
required = 1
data = levelmedia: -1, "slide"
wrap = uploads/tx_templavoila/ |
listNum = 0
current = 1
}
}
Das Defaultbild wir korrekt angezeit, wenn kein Bild über den Seitenheader hinzugefügt wurde. Nur die "Vererbung" des Bildes auf "tiefere Ebenen" funktioniert noch nicht.
Wäre nett wenn mir nochmal jemand auf die Sprünge helfen könnte.
Vielen Dank,
m0rdiN
Hallo erst mal, stellt man sich hier im Forum irgendwo vor?
Also ich bin ein Kollege von m0rdiN und wir haben das Problem nach diversen Arbeitstagen noch immer nicht gelöst. Wir haben inzwischen irgendwo gelesen, dass levelmedia:-1, slide nicht mit Templavoila funktioniert. Unser Problem ist auch in diesen beiden Threads beschrieben worden:
#31336
#17119
Also die naheliegende Lösung via
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.listNum = 0
10.file.maxW = 760
10.file.import.data = levelmedia:-1, slide
10.file.import.current = 1
im XML der DS funktioniert bekanntlich nicht, egal an welcher Stelle das levelmedia eingefügt wird.
# 10 = IMAGE
10.file.import {
maxW = 760
cObject = TEXT
cObject.value = fileadmin/images/Headerbilder/FHDSchild_760x50_20060228.jpg
cObject.override {
required = 1
data = levelmedia:-1, slide
wrap = uploads/tx_templavoila/|
listNum = 0
current = 1
}
}
hingegen macht wie oben beschrieben immer das Fallback-Bild oder, wenn vorhanden, das vom Redakteur eingebundene Bild. Aber die Vererbung funktioniert nicht.
Wie gesagt hatten wir iegendwo gelesen, dass levelmedie und TV nicht zusammen geht und jemand eine Extension "kb_tv_cont_slide" geschrieben hat. Diese kann laut Doku aber nur Content-Elemente verarbeiten und bei einigen herumstochernden Versuchen, das ganze für das IMAGE-Element anzuwenden, sind wir auch nicht weiter gekommen.
Wie geht das also? Wir haben das Problem jetzt eine Weile zurückgestellt gehabt, aber das muss doch irgendwie lösbar sein. Vielleicht haben wir auch einfach ein Brett vorm Kopf, aber wir haben inzwischen schon etwa 20 Mannstunden an diesem einen Problem herumprobiert.
Aus verschiedenen Gründen benutze ich dafür nicht das Media-Feld, sondern ein neues Feld in der Tabelle Pages.
Mit diesem TS wird das Bild ausgelesen, vererbend nach unten :
lib.ws_teaserimage = IMAGE
lib.ws_teaserimage {
#default Bild definieren
file = pfad/zum/standardbild.jpg
#Bild importieren, Pfad anpassen
file.import = uploads/tx_wsteaserimage/
#im Baum nach oben wandern falls kein Bild gefunden wird
file.import.data = levelfield:-3,tx_wsteaserimage_img,slide
#listNum: welches Bild soll geholt werden, 0 = das erste Bild
file.import.listNum = 0
file.import.override.field = tx_wsteaserimage_img
}
IM DS-XML wird nicht per TS ein Image definiert, sondern auf lib.ws_teaserimage gemapped.
In ext_localconf.php muß das neue Feld natürlich noch zu den Rootline-Fields hinzugefügt werden, damit es auch gefunden wird :
$TYPO3_CONF_VARS["FE"]["addRootLineFields"] .= ',tx_wsteaserimage_img';
Wow, ich kann mein Glück kaum fassen: Jemand, der sein TS ordentlich kommentiert, so dass ich es auf Anhieb nachvollziehen kann.
Auf jeden Fall schon mal vielen Dank, ich werde das morgen mal ausprobieren.
Aber ich gehe doch richtig in der Annahme, dass man jetzt nicht mehr als Redakteur die Bilder ändern kann, oder? Also quasi eine Vererbung zwangsweise ohne Möglichkeit, bei einzelnen Seiten abweichende Bilder anzugeben?
2. Es ist nicht so, dass das nur mit einem Haupt-Bild geht? Wir benötigen für jede unserer sechs Kategorien ein eigenes Bild.
Also ich schaue mir das erst mal an.
Nathanael schrieb
Aber ich gehe doch richtig in der Annahme, dass man jetzt nicht mehr als Redakteur die Bilder ändern kann, oder? Also quasi eine Vererbung zwangsweise ohne Möglichkeit, bei einzelnen Seiten abweichende Bilder anzugeben?
Wenn der Redakteur die Rechte besitzt, Änderungen in "Seitenheader bearbeiten" vorzunehmen, kann er auch ein anderes Bild hochladen.
Dieses vererbt sich dann weiter nach unten im Seitenbaum.
Der Code aus meinem letzten Posting sollte so sinngemäß auch mit dem Media-Feld funktionieren, also ohne die Tabelle "pages" zu erweitern.
Es müßte dann so lauten:
#
#default Bild definieren
file = pfad/zum/standardbild.jpg
#Bild importieren, Pfad anpassen
file.import = uploads/media/
#im Baum nach oben wandern falls kein Bild gefunden wird
file.import.data = levelmedia:-3,slide
#listNum: welches Bild soll geholt werden, 0 = das erste Bild
file.import.listNum = 0
file.import.override.field = media
jenses schrieb
Wenn der Redakteur die Rechte besitzt, Änderungen in "Seitenheader bearbeiten" vorzunehmen, kann er auch ein anderes Bild hochladen.
Dieses vererbt sich dann weiter nach unten im Seitenbaum.
Also ich habe das jetzt mal so gemacht. Das Standardbild wird (natürlich) geladen. Allerdings kann ich im Seitenheader das Bild nicht verändern. Das hätte mich auch gewundert, denn bisher konnte ich dort als TS.ObjectPath gemappte Elemente noch nie bearbeiten.
Die bisher in diesem Feld eingebundenen Bilder werden nun auch nicht mehr angezeigt. Auch das wundert mich nicht so recht. Daurch kann ich die Vererbung natürlich gar nicht erst testen, auch wenn mir das Prinzip sehr einleuchtet, was es allerdings bei den bisherigen Lösungsansätzen auch immer getan hat.
Wie meinst Du also oben gesagtes? ^^ Ich kann das noch nicht nachvollziehen. Nach meinem Verständnis hakelt es jetzt daran, dass im TV das Feld ja nun kein Imagefield mehr ist und daher das Feld für die Änderung nicht angezeigt wird. Wie ändere ich oder der Redakteur also das Bild im Seitenheader?
Oder hätte dieser TS-Schnipsel in die XML-DS gemusst? Ich habs jetzt im Haupt-TS eingebunden.
Nathanael schrieb
Wie meinst Du also oben gesagtes? ^^ Ich kann das noch nicht nachvollziehen.
Da bleibt mir nur zu sagen:
Gegen mangelndes Grundwissen gibt es Manuals und Tutorials.
Befasse dich mal intensiv mit "Futuristic Template Building" und "Typo Core API".
Ganz sicher funktioniert mein geposteter Code, ist schließlich auf mehreren Seiten im Einsatz. 😉
Der Code mit levelmedia etc. gehört natürlich ins XML, dort mappst du doch Tabellen-Felder auf dein HTML, und nicht im TS.
jenses schrieb
IM DS-XML wird nicht per TS ein Image definiert, sondern auf lib.ws_teaserimage gemapped.
Naja, da Du das geschrieben hattest, habe ich das so gemacht. Ich habe das Mapping im DS-XML umgestellt von Imagefield auf einen TS-Objectpath. Mit diesem Pfad kann ich im TS darauf zugreifen, was auch so weit funktioniert. Das überrascht mich nicht. Was mich ebenfalls nicht überrascht ist, dass ich nach genau dieser Umstellung im Seitenheader das Feld nicht mehr bearbeiten kann. Warum auch, ich konnte ein TS-ObjectPath dort noch nie bearbeiten. Deswegen meine ersten Bedenken bezüglich der Bearbeitbarkeit durch Redakteure. Oder müssen die mit seitenspezifischem TS gemacht werden?
Dann schreibst Du
jenses schrieb
Der Code mit levelmedia etc. gehört natürlich ins XML, dort mappst du doch Tabellen-Felder auf dein HTML, und nicht im TS.
Ja klar, deswegen hatte ich das ursprünglich ja auch auch als Imagefield gemappt. Allerdings habe ich in der Domumentation keine Möglichkeit gefunden, ein Imagefield auf einen TS-Objectpath zu mappen. Aus meiner Sicht widersprechen sich allerdings Deine Aussagen nun.
Da Du aber sicher Recht hast, liegt das Problem darin, dass ich Deine Ausführungen (übrigens trotz FTB-Doku, vielen Dank...) nicht nachvollziehen kann. Also konkrete Fragestellungen:
Könntest Du bitte Deinen betreffenden (vollständigen) Abschnitt aus dem DS-XML posten und bei Bedarf auch den Abschnitt aus Deinem TS? Damit würde sich ein komplettes Bild bei mir ergeben.
jenses schriebAus verschiedenen Gründen benutze ich dafür nicht das Media-Feld, sondern ein neues Feld in der Tabelle Pages
Was sind das für Gründe? Nimmst Du deswegen erstere Lösung und nicht die dann nachgereichte?
Auf jeden Fall schon mal vielen Dank, dass Duch Dich um unser Problem kümmerst, obwohl Du den Eindruck hast, dass ich die Doku nicht gelesen habe. Das Studium des FTB hat moch so weit gebracht, dass ich halbwegs verstanden habe, wie TV arbeitet. Allerdings fehlt mir tatsächlich ein vollständiger Überblick. Und genau deswegen verstehe ich nicht, warum die Lösung mit dem Levelmedia von weiter oben nicht funktioniert, denn grundlegend unterscheidet sich Deine Lösung davon ja nicht.
Edit: ich habe Deinen Code (zweite Variante) nun in das DS-XML eingebaut und das Feld wieder als Imagefield eingebunden. jetzt habe ich im Seitenheader wieder eine Auswahlmöglichkeit, allerdings überschreibt das Standardbild nun immer das dort eingebundene. ich teste weiter.
Also, ohne deinen Code analysiert zu haben, das folgende Beipsiel habe ich einer TV-Seite eingebaut, und es funktioniert.
Zusätzlich wird in das Bild auch noch der Titel der Seite eingedruckt.
lib.simonsTopimage = IMAGE
lib.simonsTopimage.file = GIFBUILDER
lib.simonsTopimage.file {
format = jpg
quality = 95
XY = 822,156
10 = IMAGE
10.file.import {
cObject = TEXT
cObject.value = fileadmin/templates/sj/top.jpg
cObject.override {
required = 1
data = levelmedia: 1, slide
wrap = uploads/media/|
listNum = 0
}
}
20 = TEXT
20 {
# text = {page:title}
# text.insertData = 1
text.data = leveltitle:1
fontSize = 60
fontFile = fileadmin/templates/GILLSANC.TTF
fontColor = #FFFFFF
niceText = 0
offset = -50,-60
shadow {
color = #FFFFFF
offset = 100,180
blur = 1
opacity = 35
}
}
30 = TEXT
30 {
# text = {page:title}
# text.insertData = 1
text.data = leveltitle:2
fontSize = 30
fontFile = fileadmin/templates/GILLSANC.TTF
fontColor = #FFFFFF
niceText = 0
offset = -20,-30
shadow {
color = #FFFFFF
offset = 100,180
blur = 1
opacity = 45
}
}
}
Viel Glück.
Waldo
Danke waldosparding, diese Lösung kommt mir sehr bekannt vor. (s.o.) Irgendwie muss das doch gehen. 😢
Nur: wie sieht der dazugehörige DS-XML Abschnitt aus? Das ist der für mich spannende Teil.
In den Dokus habe ich keine wirklich zusammenhängende Erklärung von levelmedia gefunden. Warum machen das manche mit -3, andere mit -1 und wieder andere mit 1? 1,slide müsste doch in der Rootline das erste Element nach dem Rootelement sein, oder? -1,slide müsste rückwärts laufen. Was ist dann -3,slide? Läuft das dann bis zu drei Stufen rückwärts?
Mein Seitentyp ist immer Standard, ist das mein Problem? Ich habe gesehen, dass es bei "Erweitert" ein weiteres Dateiauswahlfeld gibt. Ein Schnelltest hat damit aber auch nicht funktioniert.
Ihr habt alle uploads/media/ als Ordner angegeben, bei mir setzt TV standardmäßig uploads/tx_templavoila/ ein, dies habe ich immer beibehalten, denn uploads/media/ gibt es bei uns gar nicht.
Ohne current = 1 wird bei mir immer das Standardbild geladen. Das deute ich als Hinweis darauf, dass das override nicht klappt. Richtig? Ihr habt diese Angabe nicht, also muss es auch ohne gehen.
Also bei mir sieht die DS so aus:
<field_topimage type="array">
<tx_templavoila type="array">
<title>Topimage</title>
<description>Topimage</description>
<sample_data type="array">
<numindex index="0">Topimage</numindex>
</sample_data>
<etype>TypoScriptObject</etype>
<tags>*:inner</tags>
<etype_extra type="array">
<objpath>lib.simonsTopimage</objpath>
</etype_extra>
<typoscriptobjpath>lib.simonsTopimage</typoscriptobjpath>
</tx_templavoila>
</field_topimage>
Das mit dem uploads/media würde ich einfach mal ausprobieren.
Einfach mal ein Bild speichern und dann gucken wo es liegt.
Viel Erfolg.
PS: Noch ein kleiner Tip: bei TS reichts manchmal, wenn man Groß/Kleinschreibung nicht beachtet und schon geht nichts mehr.
Geht schon los, in der Vorschau war die DS mit grossen und kleinen Buchstaben, jetzt ist sie es bei nicht mehr.
Juhu, wir habens. Der Mist mit der Groß- und Kleinschreibung war wahrscheinlich das Problem, denn so eine Lösung habe ich eigentlich schon ausprobiert gehabt.
Also Typoscript:
lib.headerbild = IMAGE
lib.headerbild.file.import {
cObject = TEXT
cObject.value = fileadmin/images/Headerbilder/FHDSchild_760x50_20060228.jpg
cObject.override {
required = 1
data = levelmedia: 1, slide
wrap = uploads/tx_templavoila/|
listNum = 0
}
}
Und dazu unser DS-XML:
<field_headerbild type="array">
<tx_templavoila type="array">
<title>Headerbild</title>
<description>Headerbild</description>
<sample_data type="array">
<numIndex index="0">Headerbild</numIndex>
</sample_data>
<eType>TypoScriptObject</eType>
<eType_EXTRA type="array">
<objPath>lib.headerbild</objPath>
</eType_EXTRA>
<TypoScriptObjPath>lib.headerbild</TypoScriptObjPath>
</tx_templavoila>
</field_headerbild>
Dies in Kombination mit dem Seitentyp "Erweitert" in den Rootseiten der Kategorien zaubert das Eingabfeld "Dateien:" herbei. Dort kann man dann das Bild einbinden, das wunderbar und auf zauberhafte Weise wie gewünscht auf allen Unterseiten erscheint.
Also passt auf die Groß- und Kleinschreibung auf, auch im XML!
So, an wen soll ich die Kiste Bier schicken? Oder Kaffee, wie gewünscht. Meine ich ernst, also?
Von meiner Seite aus kannst du Bier/Kaffee behalten.
Also: Prost !!!!
Waldo
PS: Falls die Qualität deiner Top-Grafik nicht ausreicht musst du kb_all_colors installieren.
Na gut, dann gönnen wir uns hier im Labor ein Schlückchen. Dieses Problem war das langwierigste Problem seit langem. Umso erfreuter sind wir über die Lösung.
Danke noch mal, auch an jenses.
Wie kann man ein Thema als gelöst markieren? Oder macht das ein Mod?