Zum Inhalt springen

Bilder vererben

Erstellt am 11. Januar 2006 · 19 Antworten · letzte Antwort am 16. März 2006

Tags: Frage

jenses ·
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
Nathanael ·
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.

jenses ·
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.

Nathanael ·
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 schrieb

Aus 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.

waldosparding ·

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

Nathanael ·

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.

waldosparding ·

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.

Nathanael ·

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?

waldosparding ·

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.

Nathanael ·

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?